summaryrefslogtreecommitdiff
path: root/Build/source/libs/t1lib/t1lib-5.1.2
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/t1lib/t1lib-5.1.2')
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Changes905
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/README21
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchb.afm628
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchbi.afm645
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchr.afm538
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchri.afm547
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbx10.afm751
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbxti10.afm2341
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcr10.afm751
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcti10.afm2341
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/eufm10.afm114
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin1.enc283
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin2.enc265
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin9.enc259
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/PSLatin1.enc282
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dc.enc78
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dvips.enc75
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/README21
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchb.pfbbin0 -> 33799 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchbi.pfbbin0 -> 35229 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchr.pfbbin0 -> 34869 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchri.pfbbin0 -> 35118 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbx10.pfbbin0 -> 39707 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbxti10.pfbbin0 -> 49613 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcr10.pfbbin0 -> 40627 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcti10.pfbbin0 -> 47850 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/eufm10.pfbbin0 -> 23408 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/LGPL481
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/LICENSE339
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/Makefile.in166
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/README.t1lib-5.1.2223
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/README.t1python18
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/README.win326
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.guess1447
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.sub1555
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ice_find_athena.m4185
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/ac-tools/install-sh322
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ltmain.sh6402
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/ac-tools/mkinstalldirs40
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/configure26274
-rwxr-xr-xBuild/source/libs/t1lib/t1lib-5.1.2/configure.com890
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/configure.in321
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/Makefile.in108
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.eps97
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.pdf51
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.pdfbin0 -> 1374 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.eps2251
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.pdfbin0 -> 73680 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.eps2251
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.pdfbin0 -> 73680 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.pdfbin0 -> 1347 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.pdfbin0 -> 1352 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/getstart.tex489
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/internals.tex679
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/intro.tex217
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.eps519
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.pdfbin0 -> 19487 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.pdfbin0 -> 1329 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.pdfbin0 -> 1329 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.eps6539
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.pdfbin0 -> 215201 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.eps6064
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.pdfbin0 -> 199522 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.eps5985
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.pdfbin0 -> 196910 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.eps6777
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.pdfbin0 -> 223040 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.eps6554
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.pdfbin0 -> 215693 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.eps255
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.fig60
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.pdfbin0 -> 7823 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.eps32
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.pdfbin0 -> 1349 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.pdfbin0 -> 1343 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.eps28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.pdfbin0 -> 1344 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.eps745
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.fig349
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.pdfbin0 -> 44719 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath.eps327
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.eps850
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.pdfbin0 -> 2576 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.sk124
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.eps813
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.pdfbin0 -> 2445 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.eps708
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.pdfbin0 -> 1787 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.eps747
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.pdfbin0 -> 2344 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.eps799
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.pdfbin0 -> 1789 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.eps799
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.pdfbin0 -> 1778 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.pdf17329
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.tex98
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/type1afm.tex53
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/ut1lib.tex4083
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/xglyph.tex490
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/doc/xinterface.tex294
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/etc/README4
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/etc/charpath2.ps517
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/.dependencies2
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/FontDataBase10
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/Makefile.in112
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/subset.c236
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/t1example1.c47
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/examples/t1lib.config6
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/Makefile.in186
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib.config8
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/.dependencies80
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/Makefile.in106
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.c1302
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.h354
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/sysconf.h.in40
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.c1905
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.h85
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.c589
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.h43
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.c1400
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.h84
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.c362
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.h49
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.c808
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.h47
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.c1243
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.h58
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1extern.h106
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.c1366
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.h104
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1global.h116
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1lib.h.in468
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1libx.h93
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.c1050
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.h48
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1misc.h220
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.c766
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.h90
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.c2249
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.h98
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.c955
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.h82
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.c703
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.h89
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1types.h225
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.c1168
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.h103
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/.dependencies28
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/CHANGES71
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Makefile.in106
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README25
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README.RMz12
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Xstuff.h42
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.c424
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.h62
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/blues.h95
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/bstring.c9
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/cluts.h35
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.c220
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.h40
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/digit.h64
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/ffilest.h151
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/font.h107
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.c1266
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.h99
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfile.h72
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontmisc.h63
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fonts.h49
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontstruct.h224
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontxlfd.h45
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fsmasks.h72
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hdigit.h104
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.c984
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.h42
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.c200
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.h37
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.c1208
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.h296
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.c1516
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.h201
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths_rmz.h210
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/pictures.h48
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.c1782
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.h208
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/scanfont.c1381
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.c1016
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.h142
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces_rmz.h147
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/strokes.h38
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1chardump697
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1hdigit.h40
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1imager.h151
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1intf.h36
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1io.c641
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1snap.c79
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stdio.h87
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stub.c47
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.c1208
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.h77
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/tokst.h508
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/trig.h35
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/type1.c4676
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/types.h32
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.c204
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.h182
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/README.RMz9
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/parseAFM.shar2059
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/type1afm/.dependencies1
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/type1afm/Makefile.in104
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/type1afm/type1afm.c140
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsp481
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsw29
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsp458
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsw29
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/sysconf.h51
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/win32/t1.def110
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/.dependencies1
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/FontDataBase10
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/Makefile.in109
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/bchr.pfbbin0 -> 34869 bytes
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/t1lib.config6
-rw-r--r--Build/source/libs/t1lib/t1lib-5.1.2/xglyph/xglyph.c4736
228 files changed, 167002 insertions, 0 deletions
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Changes b/Build/source/libs/t1lib/t1lib-5.1.2/Changes
new file mode 100644
index 00000000000..0aeb9e5b217
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Changes
@@ -0,0 +1,905 @@
+Nov 1996: t1lib-0.1-alpha
+-------------------------
+
+- first public release of t1lib with all basic functionality
+
+
+
+May 1997: t1lib-0.2-beta
+-------------------------
+
+
+- Now uses autoconf to configure the software for the system.
+
+
+- All functions put into one library.
+
+
+- ATTENTION: Argument order for the glyph-setting functions changed to be
+ consistent with the info functions. Programs that already use
+ t1lib have to be rewritten (sorry....)
+
+
+- Function for computing the width of a string added (T1_GetStringWidth()).
+
+
+- Function for computing the BoundingBox of a string added
+ (T1_GetStringBBox()).
+
+
+- Function T1_GetMetricsInfo() added. It returns a struct containing width,
+ bounding box, number of characters and horizontal position of the characters
+ in character space coordinates (afm-units).
+
+
+- Function T1_GetBBox() renamed to T1_GetCharBBox() for consistency reasons.
+
+
+- All exit() calls removed from library and replaced by appropriate error
+ return codes.
+
+
+- t1lib now optionally supports a logfile for logging of error- and
+ warning-messages at runtime. The "verbosity" of this logfile may be chosen
+ by the user.
+
+
+- Documentation more complete.
+
+
+
+July 1997: t1lib-0.3-beta
+-------------------------
+
+
+- Code for placing character bitmaps in T1_SetString() slightly advanced; the
+ restrictions concerning slanted fonts are eliminated.
+
+
+- T1_GetStringBBox()/T1_GetCharBBox() extended. It is now possible to get the
+ bounding box if the font is slanted. This is implemented by examining the
+ characters outline at 1000bp.
+
+
+- Some Bugs in the code managing linked lists of font sizes have been
+ corrected.
+
+
+- Bug in T1_CopyFont() has been corrected. This should work now.
+
+
+- The behavior during configuration file searching has been changed to
+ be compatible to well known UNIX-conventions.
+
+
+- As the main new feature in this release t1lib now has direct support
+ for X11 (optionally). There is a set of functions that act similar
+ to XDrawText(), i.e. they draw directly into a drawable (pixmap or
+ window).
+
+ - Caching of bitmaps of the X11 rastering functions is also done
+ in the X-Server for maximum performance (although it is not as
+ fast as I dreamed of, admittedly).
+
+ - X11 rastering functions use the current foreground/background
+ colors
+
+ - The X11 rastering functions implement automatical antialiasing
+ between foreground and background color
+
+ - The X11 rastering functions provide an opaque and a transparent
+ mode
+
+ - The X11 rastering functions can draw into drawable of any depth
+ (provided the depth is large enough)
+
+
+- A new target has been added to the makefiles allowing to remove
+ a t1lib-installation automatically from a system.
+
+
+
+December 1997: t1lib-0.4-beta
+-----------------------------
+
+
+- Many memory allocation bugs fixed. t1lib is now "libefence-proved".
+
+
+- Kerning and Metrics-Lookup rewritten. The corresponding functions are now
+ based on character indices rather than on character names which makes them
+ up to 8 x faster than before, depeding on data and context.
+
+
+- Raph Levien (raph@acm.org) contributed a fast algorithm for subsampling
+ which improves Antialiasing time significantly.
+
+
+- Fred L. Drake, Jr. (fdrake@acm.org) contributed a Python-interface
+ to t1lib. This allows Python programmers to make use of Adobe Type
+ 1 fonts. This package, called t1python, is distributed with t1lib in
+ an independent subdirectory of the distribution. See README.t1python
+ for more information on t1python.
+
+
+- Bitmaps and antialiased bitmaps may now be padded 8, 16 or 32 bits. This
+ allows (with some restrictions) somewhat faster concatenation of
+ characterbitmaps to stringbitmaps. The padding-value may be set and queried
+ at runtime.
+
+
+- The optional X11-interface, introduced in t1lib-0.3-beta, has been reduced
+ to a simple wrapper. X11-pixmap caching has been completely dropped since it
+ has proven to be too inefficient. However, at the level of the function
+ calls, nothing has changed.
+
+
+- Configuration of t1lib (with or without X11-interface) may be queried by
+ applicationprogrammers at compiletime or by applications at runtime.
+
+
+- Two functions for informations on fonts have been added:
+
+ 1) T1_GetFontBBox(): Return a fonts' bounding box.
+
+ 2) T1_GetAllCharNames(): Return a list of all character defined in a Type 1
+ font. This might be of interest if somebody wants
+ to set up new encodings.
+
+
+- Function T1_CloseLib() added. This function allows to completely free the
+ data-structures of t1lib. T1_CloseLib() should be called in future when an
+ application using t1lib exits.
+
+
+- Many other things not worth to be metioned ...
+
+
+
+March 1998: t1lib-0.5-beta
+--------------------------
+
+
+- Changed the license to the GNU General Public Library License (LGPL)
+
+
+- Definition of INFINITY removed from
+ lib/type1/[regions.c|regions.h|t1imager.h]. Collided with a
+ definition in math.h on OS/2.
+
+
+- Implemented proper handling of environment variables CFLAGS, LDFLAGS
+ and CC during build process.
+
+
+- Added target 'without_doc' for people who have a very rudimentary or
+ no LaTeX-System at all
+
+
+- Fixed some bugs that appeared when font files from database were not
+ found
+
+
+- Clipmask Bug in the X11-rastering functions fixed
+
+
+- Bugs in VM-reallocation (T1_LoadFont()) repeatedly fixed. It is now
+ ANSI-C compliant.
+
+
+- Alignment of VM changed. This was needed on some systems.
+
+
+- Set of functions for accessing information from FontInfo dictionary
+ is now complete. This introduces the new functions
+ T1_GetFullName(), T1_GetFamilyName(), T1_GetWeight(),
+ T1_GetItalicAngle(), T1_GetIsFixedPitch(), T1_GetVersion(),
+ T1_GetNotice().
+
+
+- ATTENTION: In the above context, T1_GetPostScriptName() has been
+ renamed to T1_GetFontName() for consistency reasons, sorry.
+
+
+- ATTENTION: All types "unsigned char (*)" have been changed to
+ char (*) in the API functions. This was necessary while adapting
+ t1lib to ANSI-standard to make it portable. Sorry for this
+ confusion.
+
+
+- New function T1_AddFont(): Fonts can now be added to the font
+ database at runtime. This means especially, one can ignore a
+ FontDataBase file thus can start t1lib-programs on single fontfiles
+ without doing a complete setup before.
+
+
+- There is now also the possibility to ignore the currently active
+ configuration file, thereby setting all search paths to the current
+ working directory and having an empty font data base. This is meant
+ for small applications that work on single files.
+
+
+- t1lib is now able to work with fonts without corresponding
+ afm-files. AFM-information can be produced from pfa- and
+ pfb-files. This, of course, refers only to character-metrics
+ information.
+
+
+- A function T1_WriteAFMFallbackFile() is provided which allows to
+ dump metrics information to a valid AFM-file.
+
+
+- New subdirectory type1afm created which contains type1afm, a program
+ to extract afm files from Type 1 font files.
+
+
+- Renamed definitions MAX, MIN, ABS, TRUE and FALSE because they
+ collided with system header files on some systems.
+
+
+- Corrected antialiasing functions. The metrics should now be as
+ correct as possible and black pixel at the right edge of the bitmaps
+ should not appear any more.
+
+
+- Handling of unencoded characters in strings (such as adieresis in
+ AdobeStandardEncoding) is now consistent in rotated and non-rotated
+ glyphs.
+
+
+- A few functions have been added to get information on the file search
+ environment and to manipulate the search paths from within applications.
+
+
+- Mixed endian setups (i.e., client and X-server on different machines
+ with different endianess) should now be handled correctly.
+
+
+- In summary t1lib should now be much more portable than before.
+
+
+- Update to t1python-0.3
+
+
+
+March 1998: t1lib-0.6-beta
+--------------------------
+
+
+- Cleaned up the sources in type1-directory
+
+
+- Functions Xalloc() and Xfree removed. x11dummy.c from list of source files
+ removed.
+
+
+- A few bugs fixed
+
+
+- Character positioning rewritten. It does now handle strings
+ correctly in which the leftmost pixels does not belong to the first
+ character and the rightmost pixels do not belong to the last character.
+
+
+- t1lib now substitutes .notdef for defined character names that have
+ no corresponding charstring. This is a workaround for some fonts in
+ the ghostscript distribution (e.g., s050000l.pfb)
+
+
+- Separated the X11-wrapper from the rest of t1-stuff. t1lib now
+ consists of two libraries and two include files.
+
+
+- Cleaned up configuration and compilation process.
+
+
+
+May 1998: t1lib-0.7-beta
+------------------------
+
+
+- Athena libraries are explicitly located for non-standard system
+
+
+- glyph-structure changed. glyph.metrics.characterWidth is replaced
+ glyph.metrics.advanceX and an entry glyph.metrics.advanceY is added.
+
+
+- Interpretation of the sign of glyph.metrics.descent has changed.
+
+
+- String-rastering functions now support Underlining, Overlining and
+ Overstriking.
+
+
+- Functions for overriding default line-parameters implemented.
+
+
+- Whitespace at beginning and ending of glyphs is now correctly recorded into
+ leftSideBearing and RightSideBearing.
+
+
+- Function T1_ConcatGlyphs() added to API. It concatenates two glyphs of
+ identical depth with an optional displacement inserted.
+
+
+- xglyph output window has changed for X-rastering functions. It is now of
+ constant size with the logical origin in the center. Too large glyphs are
+ simply clipped.
+
+
+- t1lib can be compiled and run on VMS thanks to John Hasstedt
+ (John.Hasstedt@sunysb.edu). A configure.com script for building on VMS is
+ included in the toplevel directory.
+
+
+- T1_GetMetricsInfo() and T1_GetStringBBox() fixed. Now results are correct
+ also if the leftmost pixel in a glyph doesn't belong to the first char and if
+ the rightmost pixel does not belong to the last character.
+
+
+- Leading and trailing white space in glyphs should now be recorded
+ consistently and correctly for all rastering functions.
+
+
+- xglyph can now display a character map of a font.
+
+
+- Global variable T1_errno introduced. It basically works the same way
+ as the errno in libc. This allows applications a unified
+ error-handling.
+
+
+- Update to t1python-0.7.
+
+
+
+November 1998: t1lib-0.8-beta
+-----------------------------
+
+
+- T1_GetAllCharNames() returned invalid list if the Charstrings dictionary was
+ larger than the actual number of charstrings defined (which is perfectly
+ valid, even if it does not make much sense) --> fixed.
+
+
+- 4 x Antialiasing implemented. This can improve the quality at small sizes
+ once more, at the cost of some computational and memory requirement. It is
+ possible to work with 2 x and 4 x concurrently.
+
+
+- Function T1_GetLibIdent() added to API.
+
+
+- Function T1_SetRasterFlags() added to API. It allows to selectively enable
+ or disable certain rasterizer features like, e.g., hinting.
+
+
+- xglyph extended to support 4 x antialiasing.
+
+
+- xglyph now recognizes a few commandline options, primarily intended for
+ debugging purposes.
+
+
+- xglyph is now somewhat more intelligent (and faster) if slanting,
+ extending or reencoding is applied to a font.
+
+
+- New function T1_SetDefaultEncoding(). It allows to set a default
+ encoding vector which then is applied to all subsequently loaded fonts
+ that have StandardEncoding.
+
+
+- Bug in Type 1 rasterizer corrected which prevented fonts with non-standard
+ lenIV values from being correctly decrypted (Charstring decryption).
+
+
+- Internal ISOLatin1Encoding removed from rasterizer since there's no reason
+ for mainting this encoding scheme internally
+
+
+- tlib now has notion of "Encoding Schemes". The format of encoding files is
+ extended correspondingly and is backward compatible.
+
+
+- Memory leaks eliminated, thanks to David Huggins-Daines.
+
+
+- Some slight performance improvements.
+
+
+- Kerning performance improved. Moreover, kerning pairs need no longer be
+ alphabetically sorted.
+
+
+- AFM-parser modified to work with DOS-style AFM-files.
+
+
+- Some bugs in scan-code of Type 1 rasterizer corrected. Scanner is now aware
+ of pfb-blocks and can scan files with multiple binary data segments.
+
+
+- t1lib now uses GNU-libtool, thanks to Hirotsugo Kakugawa
+ (h.kakugawa@computer.org)
+
+
+- An encoding file for IsoLatin2 charset is included thanks to Jiri
+ Pavlovsky (jirap@bajt.cz).
+
+
+- The angle-argument of the rastering functions has been replaced by a more
+ general transformation specification. This is an incompatible change to
+ previous versions, but I think it should be worth it.
+
+
+- t1lib can now handle fontfile names with arbitrary extensions and
+ even without extension.
+
+
+- t1lib compiles and runs under Win32 using the cygwin32 toolkit.
+
+
+- Maximum number of stem-hints enlarged (-> 256) because 128 were not enough
+ for complicated fonts.
+
+
+
+May 1999: t1lib-0.9
+-------------------
+
+
+- Sub-Pixel positioning for Antialiasing functions enthanced (It was in fact
+ not correct before.
+
+
+- Multiple Master fonts are rejected instead of SIGSEGV (nearly as
+ professional as supporting them ;)
+
+
+- An additional set of functions allows access, filling and manipulation of
+ outlines.
+
+
+- Functionality for non-antialiased "bytemaps".
+
+
+- "Smart Antialiasing", allows to automatically let t1lib decide what AA-level
+ to use. The switchlimits are adjustable.
+
+
+- An AFM-filename may explicitly be specified. This suppresses t1lib´s search
+ for these files. This allows interfacing with other path search systems like
+ kpathsea. This was suggested by Nicolai Langfeldt (janl@math.uio.no).
+
+
+- Some problems with aspect ratios different from 1 and transformed glyphs
+ fixed.
+
+
+- Support for Right-To-Left typesetting. This might be experimental because I
+ don't know the rules for this exactly.
+
+
+- In the context of Right-To-Left typesetting T1_ConcatGlyphs() expects one
+ additional argument "mode".
+ ATTENTION: This is an incompatible change with respect to V. 0.8.
+
+
+- abort()-calls in type1-sources are caught by longjmp(). t1lib does not
+ any longer exit a program. Rather, errors may be handled by the user.
+
+
+- If a rastering operation did not produce any black pixels, the rastering
+ fuctions do not return a NULL-glyph any longer. Rather, a glyph with the
+ correct metrics and NULL-bitmap pointer is returned. This seems to come
+ closer to accepted standards.
+
+
+- The t1python-package is currently not distributed with t1lib because the
+ interface is not up to date.
+
+
+- A lot of bugs fixed (and a lot of others introduced, of course :)
+
+
+
+
+June 1999: t1lib-0.9.1
+---------------------
+
+
+- Several Bug-fixes, some functions that have been reported to be missing by
+ users, but no general new features.
+
+
+- New functions T1_GetExtend(), T1_GetSlant() and T1_GetTransform() which give
+ access to currently active values of fontlevel transformations
+
+
+- New function T1_GetNoKernPairs() which gives access to the number of defined
+ kerningpairs.
+
+
+- New functions to query the grayvalue settings (T1_AAGetGrayValues(),
+ T1_AAHGetGrayValues() and T1_AANGetGrayValues())
+
+
+- Arbitrary linear transformations on fontlevel including caching using
+ T1_TransformFont() (on suggestion and patches by Derek B. Noonburg,
+ (derekn@foolabs.com)
+
+
+- Introduction of the initialization flag T1_NO_AFM which suppresses use of
+ AFM data. This limits the functionality of t1lib considerably but
+ applications that do not need those advanced functions can gain some
+ performance boost while loading fonts because AFM files are not parsed and
+ the mapping tables are not setup (also by Derek B. Noonburg)
+
+
+- xglyph clips output window for the function fonttable() to the physical
+ screen size. This is to prevent from freezing or exceeding resources if the
+ fonttable button had accidentally been pressed while a large size was active.
+
+
+- The utility function T1_DumpPixmap() removed from API. New function
+ T1_XImageFromGlyph() added to X11 interface. This function allows, together
+ with the Xpm-library function XpmWriteFileFromImage(), to write xpm-files
+ from glyphs of arbitrary depths, colors, etc ...
+
+
+- Functions T1_CopyOutline() and T1_FreeOutline() added to the outline interface.
+
+
+- Fixed alignment problem on 64bit architecture.
+
+
+
+September 1999: t1lib-0.9.2:
+----------------------------
+
+
+- Support for EMX-environments under MSDOS. This concerns the file locating
+ routines.
+
+
+- t1lib now allows for charstring code 15 and escape code 15 by ignoring
+ these. They may appear in some old Adobe fonts.
+
+
+- Makefiles are more independent of GNU make.
+
+
+- Finally, undefined/missing characters are handled consistent in all rastering
+ functions by substituting .notdef.
+
+
+- Several bug-fixes
+
+
+
+November 1999: t1lib-1.0:
+-------------------------
+
+
+- Bug-fixes.
+
+
+- There happen to exist different assumptions about what exactly ISOLatin1Encoding
+ is. Especially the name for char 45 (dec) is not uniquely specified in
+ ISO 8859-1. Thus t1lib provides two encoding files ISOLatin1Encoding one
+ which (PSLatin1.enc) is compatible with PostScript Level 2 and above.
+
+
+
+March 2000: t1lib-1.0.1:
+-------------------------
+
+
+- A few bug Fixes.
+
+
+- lenIV=-1 is now handled. According to an undocumented Adobe convention
+ lenIV=-1 indicates suppressing of charstring encryption.
+
+
+- Patches to compile t1lib und MS Visual C++ 6.0. In case something goes
+ wrong, please contact Nakano Hideo (hideo@mb.infoeddy.ne.jp).
+
+
+
+February 2001: t1lib-1.1.0:
+---------------------------
+
+
+- Bug Fixes.
+
+
+- Functions T1_GetFontFilePath() and T1_GetAfmFilePath() which return the
+ complete path of the files used by t1lib.
+
+
+- Fixed parser code which previously failed on ASCII-encrypted files in
+ which the hex-lines were separated by <LF><CR> instead of by <LF> (Yes,
+ there such DOSian files out there ...).
+
+
+- Multiple inclusion protection for t1lib.h
+
+
+- T1_QueryLigs() fixed. It did not work correct if successors and/or
+ ligatures were not in the current encoding.
+
+
+- New patches for VMS by Martin P. J. Zinser (zinser@decus.de).
+
+
+- Patch by Sergey Babkin (babkin@bellatlantic.net) to correct the rasterizer
+ to respect StdStemWidths.
+
+
+- General support for font subsetting.
+
+
+- Dokumentation also provided as pdf for those people who do not have LaTeX
+ installed. This is due to suggestions and patches by Nguyen-Dai Quy
+ (NDQ@iris.ltas.ulg.ac.be).
+
+
+
+April 2001: t1lib-1.1.1:
+------------------------
+
+
+- Update to libtool-1.3.5.
+
+
+- T1_GetFontBBox() also accepts specification consisting of floating point
+ numbers (as suggested by Derek B. Noonburg (derekn@foolabs.com)).
+
+
+- Within the near future the t1lib-webpage will be no longer available
+ because I will change my employer.
+
+
+- Similarly, the sources will be distributed from sunsite only from then on.
+
+
+- The Author's eMail-address will also become invalid in the near future. The
+ new and hopefully permanent eMail.address will be "Rainer.Menzner@web.de".
+
+
+
+July 2001: t1lib-1.2:
+----------------------
+
+
+- Fixed bug in subsetting code.
+
+
+- Fixed bug in AFM-parser code.
+
+
+- Fixed kerning mapping code. Kerning did not work correctly for characters
+ that appeared multiple times in an encoding vector.
+
+
+- In the same context a new function, T1_GetEncodingIndices() has been added
+ to the API. It returns an array of indices (by contrast,
+ T1_GetEncodingIndex() returns only the lowest index found).
+
+
+- Support for composite characters.
+
+
+- Additional support for dvips encoding files (thanks to suggestion and
+ contribution by Nicolai Langfeldt (janl@linpro.no).
+
+
+- Documentation is installed in PostScript and PDF format, but no longer in
+ DVI format.
+
+
+
+October 2001: t1lib-1.3:
+------------------------
+
+
+- *Really* an update to libtool-1.3.5
+
+
+- Global Font Metrics Information is loaded from AFM files in order to be able
+ to read the typographic ascender. Line ruling did not behave as
+ documented. However, problems could still exist because the typographic
+ ascender specification is optional in AFMs.
+
+
+- Reorganized search path handling and, in particular, the respective
+ documentation is more detailed.
+
+
+- The configuration file now allows multiple lines of one type of search path
+ specification and it is also possible to quote path specification in order
+ to specify paths that contains special characters like spaces, colons, etc.
+
+
+- Multiple font databases are supported.
+
+
+- T1_PrintLog() extended to accept a variable argument list.
+
+
+- The environment variable T1LIB_LOGMODE is evaluated to give the user the
+ chance to specify a loglevel and hence to detect t1lib-problems even if the
+ application programmer did not enable the log file features.
+
+
+- Further bug fixes
+
+
+
+November 2001: t1lib-1.3.1:
+---------------------------
+
+
+- Color problem in t1x11-module fixed.
+
+
+- Fixes in AFM parser. Among others, Version had been read as name, instead of
+ as string. This led to a failure to scan global font info for some standard AFMs.
+
+
+- Fixes in of OpenVMS special code
+
+
+- Further Fixes
+
+
+
+January 2003: t1lib-5.0.0:
+--------------------------
+
+
+- Forced PostScript target in the doc directory to file.
+
+
+- Subsetting code extended in order to ensure that components of
+ composite characters are also part of the subset.
+
+
+- Hinting meachanism reworked in order to get rid of some
+ rasterizing artifacts.
+
+
+- Experimental support for stroked fonts (PaintType=1)
+
+
+- Experimental support for stroking standard ATM fonts with PaintType=0.
+
+
+- For historical reasons, there happened to exist a few documented API
+ functions that did not adhere to the T1_... naming convention. After
+ considering the pro's and con's, I have decided to cleanup the interface,
+ thus making this version incompatible to the previous version. Especially
+ in the type1 subdirectory there are still a lot of global symbols, but at
+ least these are not part of the documented API. The following functions
+ are affected:
+
+ CheckForInit() --> T1_CheckForInit()
+ CheckForFontID() --> T1_CheckForFontID()
+ T1_Get_no_fonts() --> T1_GetNoFonts()
+
+ Furthermore, I have removed and made static a few functions which
+ accidentally had found their way into t1lib.h, but which had not been part
+ of the documented API.
+
+ I'm sorry if this causes inconveniences ...
+
+
+- The new version, 5.0.0, follows as consequence from the issues discussed
+ above. It is defined by the libtool quantities CURRENT, REVISION and AGE.
+
+
+- Functions for drawing rectangles.
+
+
+- Bug Fixes
+
+
+- Please also have a look at the topic "Future" in README.t1lib-5.0.0.
+
+
+
+February 2004: t1lib-5.0.1:
+---------------------------
+
+
+- Support for Flex was not adapted to the changes from 5.0.0. This led to
+ rasterization errors in fonts that use the Flex functionality --> fixed.
+
+
+- Bug Fixes
+
+
+
+April 2004: t1lib-5.0.2:
+------------------------
+
+
+- Changes not updated for this version
+
+
+
+Mai 2005: t1lib-5.1.0:
+----------------------
+
+
+- Check against MultipleMasterFonts somewhat more tolerant, so that
+ Type 1 Fonts automatically created from Multiple Master Fonts (e.g.
+ using Mmpfb) should now be acceptable.
+
+
+- The configure-machinery had been somewhat out of date and has been
+ updated. The distributed configure script has been generated by
+ AutoConf 2.59 and the redistributed libtool parts are taken from
+ GNU libtool 1.5.10.
+
+
+- Top-Level TeX-file in the doc subdirectory adapted to recent TeX
+ systems' requirements.
+
+
+- Added IsoLatin9.enc to distribution.
+
+
+- Subsetting extended so that it works for SEAC-constructed composites
+ even if no AFM composite character information is available
+
+
+- Somewhat more intelligent defaults for subsetting when composite
+ characters are included in the subset.
+
+
+- Reallocation had been broken by relocation of internal StandardEncoding
+ vector. This problem turned out on systems where realloc() actually
+ returned a different pointer.
+
+
+- Fix for outline code on 64bit systems. This involves a redefinition
+ of the T1_PATHPOINT struct. This should be uncritical because for 32bit
+ systems there is no difference, whereas on 64bit systems, this has never
+ worked correctly before.
+
+
+- DESTDIR support in Makefile.in by Volker Zell
+
+
+- Support for XLFD font database format (in which the fonts' names appear
+ in the first place on a line).
+
+
+- Further Bug Fixes
+
+
+
+December 2006: t1lib-5.1.1:
+---------------------------
+
+- DESTDIR support was missing and has been addded in install-target for type1afm.
+
+- A bug fix in Anti-Aliasing subsampling code, which could make t1lib crash
+ under certain conditions.
+
+- Small number of further fixes, in particular with respect to the build
+ mechanism.
+
+
+
+December 2007: t1lib-5.1.2:
+---------------------------
+
+- Small number of fixes reported by users. The fixes pertain to a
+ vulnerability issue, memory access issues.
+
+- More decent handling if Encoding and / or FontBBox specification are missing
+ (which is invalid with respect to the specification, but recoverablel).
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/README b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/README
new file mode 100644
index 00000000000..48f3f23f911
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/README
@@ -0,0 +1,21 @@
+This is a copy of the Charter fonts which Bitstream contributed to the X
+consortium, arranged for use with TeX. Here is the copyright notice:
+
+ (c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
+
+ You are hereby granted permission under all Bitstream propriety rights
+ to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
+ Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
+ for any purpose and without restriction; provided, that this notice is
+ left intact on all copies of such fonts and that Bitstream's trademark
+ is acknowledged as shown below on all unmodified copies of the 4 Charter
+ Type 1 fonts.
+
+ BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
+
+I used the `afm2tfm' program which comes with Tom Rokicki's dvips to
+convert the AFM files to TFM and VF files. You can get dvips from
+labrea.stanford.edu.
+
+karl@cs.umb.edu
+Member of the League for Programming Freedom---write to lpf@uunet.uu.net.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchb.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchb.afm
new file mode 100644
index 00000000000..31721010cfd
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchb.afm
@@ -0,0 +1,628 @@
+StartFontMetrics 2.0
+Comment Bitstream AFM Data
+Comment Copyright 1987-1990 as an unpublished work by Bitstream Inc., Cambridge, MA.
+Comment All rights reserved
+Comment Confidential and proprietary to Bitstream Inc.
+Comment Bitstream is a registered trademark of Bitstream Inc.
+Comment bitsClassification Transitional 801
+Comment bitsFontID 0632
+Comment bitsManufacturingDate Tue Nov 6 02:14:13 1990
+Comment bitsLayoutName clayout.adobe.text228.new
+Comment UniqueID 15530632
+FontName CharterBT-Bold
+FullName Bitstream Charter Bold
+FamilyName Bitstream Charter
+Weight Bold
+ItalicAngle 0.00
+IsFixedPitch false
+FontBBox -166 -237 1263 963
+UnderlinePosition -109
+UnderlineThickness 91
+Version 1.0 [UFO]
+Notice Copyright 1987-1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.
+EncodingScheme AdobeStandardEncoding
+CapHeight 672
+XHeight 488
+Ascender 740
+Descender -219
+StartCharMetrics 228
+C 32 ; WX 291 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 340 ; N exclam ; B 94 -8 247 685 ;
+C 34 ; WX 339 ; N quotedbl ; B 40 418 299 715 ;
+C 35 ; WX 736 ; N numbersign ; B 56 -24 675 710 ;
+C 36 ; WX 581 ; N dollar ; B 61 -102 533 742 ;
+C 37 ; WX 888 ; N percent ; B 36 -12 863 683 ;
+C 38 ; WX 741 ; N ampersand ; B 52 -12 725 684 ;
+C 39 ; WX 255 ; N quoteright ; B 47 395 220 698 ;
+C 40 ; WX 428 ; N parenleft ; B 90 -142 387 718 ;
+C 41 ; WX 428 ; N parenright ; B 37 -142 330 718 ;
+C 42 ; WX 500 ; N asterisk ; B 53 338 447 718 ;
+C 43 ; WX 833 ; N plus ; B 124 0 710 597 ;
+C 44 ; WX 289 ; N comma ; B 30 -176 221 129 ;
+C 45 ; WX 326 ; N hyphen ; B 36 191 291 291 ;
+C 46 ; WX 289 ; N period ; B 65 -8 224 151 ;
+C 47 ; WX 491 ; N slash ; B -28 -93 472 672 ;
+C 48 ; WX 581 ; N zero ; B 39 -12 549 683 ;
+C 49 ; WX 581 ; N one ; B 108 0 495 681 ;
+C 50 ; WX 581 ; N two ; B 48 0 533 684 ;
+C 51 ; WX 581 ; N three ; B 42 -11 523 682 ;
+C 52 ; WX 581 ; N four ; B 25 -32 566 677 ;
+C 53 ; WX 581 ; N five ; B 54 -10 525 672 ;
+C 54 ; WX 581 ; N six ; B 46 -13 554 714 ;
+C 55 ; WX 581 ; N seven ; B 75 -34 556 672 ;
+C 56 ; WX 581 ; N eight ; B 41 -16 540 685 ;
+C 57 ; WX 581 ; N nine ; B 42 -54 546 683 ;
+C 58 ; WX 340 ; N colon ; B 94 -8 252 489 ;
+C 59 ; WX 340 ; N semicolon ; B 67 -176 255 489 ;
+C 60 ; WX 833 ; N less ; B 128 22 704 574 ;
+C 61 ; WX 833 ; N equal ; B 124 156 710 440 ;
+C 62 ; WX 833 ; N greater ; B 129 22 704 574 ;
+C 63 ; WX 487 ; N question ; B 35 -8 437 684 ;
+C 64 ; WX 917 ; N at ; B 74 -154 854 693 ;
+C 65 ; WX 651 ; N A ; B -12 0 670 678 ;
+C 66 ; WX 628 ; N B ; B 28 0 590 672 ;
+C 67 ; WX 638 ; N C ; B 40 -13 602 683 ;
+C 68 ; WX 716 ; N D ; B 28 0 682 672 ;
+C 69 ; WX 596 ; N E ; B 28 0 566 672 ;
+C 70 ; WX 552 ; N F ; B 25 0 529 672 ;
+C 71 ; WX 710 ; N G ; B 40 -12 691 683 ;
+C 72 ; WX 760 ; N H ; B 30 0 734 672 ;
+C 73 ; WX 354 ; N I ; B 29 0 329 672 ;
+C 74 ; WX 465 ; N J ; B 11 -13 465 672 ;
+C 75 ; WX 650 ; N K ; B 29 0 672 672 ;
+C 76 ; WX 543 ; N L ; B 27 0 533 672 ;
+C 77 ; WX 883 ; N M ; B 24 0 863 672 ;
+C 78 ; WX 727 ; N N ; B 24 0 711 672 ;
+C 79 ; WX 752 ; N O ; B 40 -17 718 687 ;
+C 80 ; WX 587 ; N P ; B 24 0 569 672 ;
+C 81 ; WX 752 ; N Q ; B 39 -179 720 687 ;
+C 82 ; WX 671 ; N R ; B 30 -7 692 672 ;
+C 83 ; WX 568 ; N S ; B 58 -12 517 683 ;
+C 84 ; WX 603 ; N T ; B 15 0 594 672 ;
+C 85 ; WX 705 ; N U ; B 20 -13 695 672 ;
+C 86 ; WX 635 ; N V ; B -21 -3 661 672 ;
+C 87 ; WX 946 ; N W ; B 1 0 945 672 ;
+C 88 ; WX 637 ; N X ; B -1 0 644 672 ;
+C 89 ; WX 610 ; N Y ; B -11 0 627 672 ;
+C 90 ; WX 592 ; N Z ; B 44 0 550 672 ;
+C 91 ; WX 443 ; N bracketleft ; B 135 -133 406 709 ;
+C 92 ; WX 491 ; N backslash ; B -8 -93 486 672 ;
+C 93 ; WX 443 ; N bracketright ; B 42 -133 312 709 ;
+C 94 ; WX 1000 ; N asciicircum ; B 201 437 798 714 ;
+C 95 ; WX 500 ; N underscore ; B 0 -237 500 -152 ;
+C 96 ; WX 255 ; N quoteleft ; B 49 395 222 699 ;
+C 97 ; WX 544 ; N a ; B 40 -10 535 500 ;
+C 98 ; WX 577 ; N b ; B 9 -2 547 740 ;
+C 99 ; WX 476 ; N c ; B 34 -8 464 498 ;
+C 100 ; WX 596 ; N d ; B 36 -10 577 740 ;
+C 101 ; WX 524 ; N e ; B 37 -9 493 501 ;
+C 102 ; WX 341 ; N f ; B 30 0 412 744 ;
+C 103 ; WX 551 ; N g ; B 33 -218 555 498 ;
+C 104 ; WX 597 ; N h ; B 16 0 586 740 ;
+C 105 ; WX 305 ; N i ; B 29 0 293 724 ;
+C 106 ; WX 297 ; N j ; B -80 -215 242 724 ;
+C 107 ; WX 553 ; N k ; B 17 0 572 740 ;
+C 108 ; WX 304 ; N l ; B 22 0 292 740 ;
+C 109 ; WX 892 ; N m ; B 30 0 883 500 ;
+C 110 ; WX 605 ; N n ; B 27 0 594 499 ;
+C 111 ; WX 577 ; N o ; B 36 -9 547 499 ;
+C 112 ; WX 591 ; N p ; B 21 -219 560 500 ;
+C 113 ; WX 575 ; N q ; B 37 -218 572 499 ;
+C 114 ; WX 421 ; N r ; B 24 0 421 498 ;
+C 115 ; WX 447 ; N s ; B 40 -11 411 500 ;
+C 116 ; WX 358 ; N t ; B 18 -5 357 599 ;
+C 117 ; WX 600 ; N u ; B 22 -10 583 499 ;
+C 118 ; WX 513 ; N v ; B -7 0 535 488 ;
+C 119 ; WX 799 ; N w ; B -1 0 811 488 ;
+C 120 ; WX 531 ; N x ; B 11 0 532 488 ;
+C 121 ; WX 515 ; N y ; B -5 -219 537 486 ;
+C 122 ; WX 495 ; N z ; B 45 0 466 486 ;
+C 123 ; WX 493 ; N braceleft ; B 46 -134 421 705 ;
+C 124 ; WX 500 ; N bar ; B 207 -237 294 764 ;
+C 125 ; WX 493 ; N braceright ; B 62 -134 438 705 ;
+C 126 ; WX 833 ; N asciitilde ; B 86 212 747 384 ;
+C 161 ; WX 340 ; N exclamdown ; B 93 -8 246 685 ;
+C 162 ; WX 581 ; N cent ; B 58 -103 504 612 ;
+C 163 ; WX 581 ; N sterling ; B 42 0 540 680 ;
+C 164 ; WX 167 ; N fraction ; B -166 -1 333 672 ;
+C 165 ; WX 595 ; N yen ; B -7 0 604 672 ;
+C 166 ; WX 581 ; N florin ; B 12 -149 535 683 ;
+C 167 ; WX 500 ; N section ; B 45 -142 455 720 ;
+C 168 ; WX 606 ; N currency ; B 36 166 571 699 ;
+C 169 ; WX 175 ; N quotesingle ; B 40 418 135 715 ;
+C 170 ; WX 475 ; N quotedblleft ; B 49 395 443 699 ;
+C 171 ; WX 449 ; N guillemotleft ; B 34 53 404 427 ;
+C 172 ; WX 255 ; N guilsinglleft ; B 34 53 207 427 ;
+C 173 ; WX 255 ; N guilsinglright ; B 37 53 211 427 ;
+C 174 ; WX 622 ; N fi ; B 30 0 605 745 ;
+C 175 ; WX 627 ; N fl ; B 30 0 616 746 ;
+C 177 ; WX 500 ; N endash ; B 0 195 500 286 ;
+C 178 ; WX 500 ; N dagger ; B 17 -130 484 718 ;
+C 179 ; WX 500 ; N daggerdbl ; B 17 -132 484 718 ;
+C 180 ; WX 289 ; N periodcentered ; B 65 256 224 415 ;
+C 182 ; WX 491 ; N paragraph ; B 18 -79 458 672 ;
+C 183 ; WX 590 ; N bullet ; B 150 227 439 516 ;
+C 184 ; WX 255 ; N quotesinglbase ; B 32 -174 205 130 ;
+C 185 ; WX 475 ; N quotedblbase ; B 35 -174 429 130 ;
+C 186 ; WX 475 ; N quotedblright ; B 47 395 441 698 ;
+C 187 ; WX 449 ; N guillemotright ; B 42 53 412 427 ;
+C 188 ; WX 1000 ; N ellipsis ; B 87 -8 914 151 ;
+C 189 ; WX 1287 ; N perthousand ; B 36 -12 1263 683 ;
+C 191 ; WX 487 ; N questiondown ; B 37 -8 440 684 ;
+C 193 ; WX 500 ; N grave ; B 85 551 307 742 ;
+C 194 ; WX 500 ; N acute ; B 205 551 428 742 ;
+C 195 ; WX 500 ; N circumflex ; B 96 551 404 742 ;
+C 196 ; WX 500 ; N tilde ; B 87 570 411 723 ;
+C 197 ; WX 500 ; N macron ; B 85 603 417 676 ;
+C 198 ; WX 500 ; N breve ; B 98 567 403 719 ;
+C 199 ; WX 500 ; N dotaccent ; B 185 578 316 713 ;
+C 200 ; WX 500 ; N dieresis ; B 83 578 417 710 ;
+C 202 ; WX 500 ; N ring ; B 131 546 369 784 ;
+C 203 ; WX 500 ; N cedilla ; B 171 -230 374 0 ;
+C 205 ; WX 500 ; N hungarumlaut ; B 107 551 490 742 ;
+C 206 ; WX 500 ; N ogonek ; B 176 -225 336 0 ;
+C 207 ; WX 500 ; N caron ; B 96 551 404 742 ;
+C 208 ; WX 1000 ; N emdash ; B 0 195 1000 286 ;
+C 225 ; WX 890 ; N AE ; B -59 0 863 672 ;
+C 227 ; WX 408 ; N ordfeminine ; B 30 323 402 681 ;
+C 232 ; WX 543 ; N Lslash ; B 9 0 533 672 ;
+C 233 ; WX 752 ; N Oslash ; B 40 -83 718 754 ;
+C 234 ; WX 1010 ; N OE ; B 39 -11 980 682 ;
+C 235 ; WX 433 ; N ordmasculine ; B 27 324 411 680 ;
+C 241 ; WX 768 ; N ae ; B 40 -10 735 500 ;
+C 245 ; WX 305 ; N dotlessi ; B 29 0 293 497 ;
+C 248 ; WX 304 ; N lslash ; B -3 0 328 740 ;
+C 249 ; WX 577 ; N oslash ; B 37 -83 548 571 ;
+C 250 ; WX 861 ; N oe ; B 37 -9 827 500 ;
+C 251 ; WX 642 ; N germandbls ; B 18 -9 622 743 ;
+C -1 ; WX 651 ; N Aacute ; B -12 0 670 930 ;
+C -1 ; WX 651 ; N Acircumflex ; B -12 0 670 930 ;
+C -1 ; WX 651 ; N Adieresis ; B -12 0 670 898 ;
+C -1 ; WX 651 ; N Agrave ; B -12 0 670 930 ;
+C -1 ; WX 651 ; N Aring ; B -12 0 670 963 ;
+C -1 ; WX 651 ; N Atilde ; B -12 0 670 911 ;
+C -1 ; WX 638 ; N Ccedilla ; B 40 -230 602 683 ;
+C -1 ; WX 596 ; N Eacute ; B 28 0 566 930 ;
+C -1 ; WX 596 ; N Ecircumflex ; B 28 0 566 930 ;
+C -1 ; WX 596 ; N Edieresis ; B 28 0 566 898 ;
+C -1 ; WX 596 ; N Egrave ; B 28 0 566 930 ;
+C -1 ; WX 354 ; N Iacute ; B 29 0 355 930 ;
+C -1 ; WX 354 ; N Icircumflex ; B 23 0 331 930 ;
+C -1 ; WX 354 ; N Idieresis ; B 10 0 344 898 ;
+C -1 ; WX 354 ; N Igrave ; B 12 0 329 930 ;
+C -1 ; WX 727 ; N Ntilde ; B 24 0 711 911 ;
+C -1 ; WX 752 ; N Oacute ; B 40 -17 718 930 ;
+C -1 ; WX 752 ; N Ocircumflex ; B 40 -17 718 930 ;
+C -1 ; WX 752 ; N Odieresis ; B 40 -17 718 898 ;
+C -1 ; WX 752 ; N Ograve ; B 40 -17 718 930 ;
+C -1 ; WX 752 ; N Otilde ; B 40 -17 718 911 ;
+C -1 ; WX 568 ; N Scaron ; B 58 -12 517 930 ;
+C -1 ; WX 705 ; N Uacute ; B 20 -13 695 930 ;
+C -1 ; WX 705 ; N Ucircumflex ; B 20 -13 695 930 ;
+C -1 ; WX 705 ; N Udieresis ; B 20 -13 695 898 ;
+C -1 ; WX 705 ; N Ugrave ; B 20 -13 695 930 ;
+C -1 ; WX 610 ; N Ydieresis ; B -11 0 627 898 ;
+C -1 ; WX 592 ; N Zcaron ; B 44 0 550 930 ;
+C -1 ; WX 544 ; N aacute ; B 40 -10 535 742 ;
+C -1 ; WX 544 ; N acircumflex ; B 40 -10 535 742 ;
+C -1 ; WX 544 ; N adieresis ; B 40 -10 535 710 ;
+C -1 ; WX 544 ; N agrave ; B 40 -10 535 742 ;
+C -1 ; WX 544 ; N aring ; B 40 -10 535 784 ;
+C -1 ; WX 544 ; N atilde ; B 40 -10 535 723 ;
+C -1 ; WX 476 ; N ccedilla ; B 34 -230 464 498 ;
+C -1 ; WX 524 ; N eacute ; B 37 -9 493 742 ;
+C -1 ; WX 524 ; N ecircumflex ; B 37 -9 493 742 ;
+C -1 ; WX 524 ; N edieresis ; B 37 -9 493 710 ;
+C -1 ; WX 524 ; N egrave ; B 37 -9 493 742 ;
+C -1 ; WX 305 ; N iacute ; B 29 0 331 742 ;
+C -1 ; WX 305 ; N icircumflex ; B -2 0 307 742 ;
+C -1 ; WX 305 ; N idieresis ; B -15 0 320 710 ;
+C -1 ; WX 305 ; N igrave ; B -13 0 293 742 ;
+C -1 ; WX 605 ; N ntilde ; B 27 0 594 723 ;
+C -1 ; WX 577 ; N oacute ; B 36 -9 547 742 ;
+C -1 ; WX 577 ; N ocircumflex ; B 36 -9 547 742 ;
+C -1 ; WX 577 ; N odieresis ; B 36 -9 547 710 ;
+C -1 ; WX 577 ; N ograve ; B 36 -9 547 742 ;
+C -1 ; WX 577 ; N otilde ; B 36 -9 547 723 ;
+C -1 ; WX 447 ; N scaron ; B 40 -11 411 742 ;
+C -1 ; WX 600 ; N uacute ; B 22 -10 583 742 ;
+C -1 ; WX 600 ; N ucircumflex ; B 22 -10 583 742 ;
+C -1 ; WX 600 ; N udieresis ; B 22 -10 583 710 ;
+C -1 ; WX 600 ; N ugrave ; B 22 -10 583 742 ;
+C -1 ; WX 515 ; N ydieresis ; B -5 -219 537 710 ;
+C -1 ; WX 495 ; N zcaron ; B 45 0 466 742 ;
+C -1 ; WX 800 ; N trademark ; B 111 398 710 662 ;
+C -1 ; WX 876 ; N copyright ; B 61 -50 825 730 ;
+C -1 ; WX 833 ; N logicalnot ; B 124 175 710 421 ;
+C -1 ; WX 876 ; N registered ; B 61 -50 825 730 ;
+C -1 ; WX 833 ; N minus ; B 124 256 710 340 ;
+C -1 ; WX 716 ; N Eth ; B 15 0 682 672 ;
+C -1 ; WX 587 ; N Thorn ; B 32 0 572 672 ;
+C -1 ; WX 610 ; N Yacute ; B -11 0 627 930 ;
+C -1 ; WX 500 ; N brokenbar ; B 207 -172 294 699 ;
+C -1 ; WX 329 ; N degree ; B 20 424 309 713 ;
+C -1 ; WX 833 ; N divide ; B 124 45 710 551 ;
+C -1 ; WX 569 ; N eth ; B 34 -10 540 744 ;
+C -1 ; WX 578 ; N mu ; B -53 -206 546 433 ;
+C -1 ; WX 833 ; N multiply ; B 139 16 704 581 ;
+C -1 ; WX 899 ; N onehalf ; B 68 -1 869 677 ;
+C -1 ; WX 899 ; N onequarter ; B 68 -18 890 677 ;
+C -1 ; WX 383 ; N onesuperior ; B 71 268 327 677 ;
+C -1 ; WX 833 ; N plusminus ; B 124 7 710 590 ;
+C -1 ; WX 591 ; N thorn ; B 20 -219 562 740 ;
+C -1 ; WX 899 ; N threequarters ; B 26 -18 890 678 ;
+C -1 ; WX 383 ; N threesuperior ; B 27 261 346 678 ;
+C -1 ; WX 383 ; N twosuperior ; B 31 268 352 679 ;
+C -1 ; WX 515 ; N yacute ; B -5 -219 537 742 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 361
+KPX hyphen T -37
+KPX hyphen V -56
+KPX hyphen W -56
+KPX hyphen X -37
+KPX hyphen Y -74
+KPX A quoteright -130
+KPX A T -111
+KPX A U -23
+KPX A V -56
+KPX A W -42
+KPX A Y -42
+KPX A f -19
+KPX A t -19
+KPX A v -32
+KPX A w -46
+KPX A y -23
+KPX A fi -19
+KPX A fl -19
+KPX A quotedblright -130
+KPX B hyphen 37
+KPX B C 19
+KPX B G 19
+KPX B O 19
+KPX B S 19
+KPX B V -37
+KPX B W -19
+KPX B Y -19
+KPX B Oslash 19
+KPX B OE 19
+KPX C quoteright 37
+KPX C hyphen 23
+KPX C A -19
+KPX C S 19
+KPX C quotedblright 37
+KPX C Aring -19
+KPX D hyphen 37
+KPX D A -19
+KPX D V -19
+KPX D Y -19
+KPX D Aring -19
+KPX F comma -190
+KPX F hyphen -74
+KPX F period -190
+KPX F colon -37
+KPX F semicolon -37
+KPX F A -97
+KPX F a -79
+KPX F e -65
+KPX F i -19
+KPX F o -46
+KPX F r -37
+KPX F u -37
+KPX F y -37
+KPX F quotesinglbase -56
+KPX F quotedblbase -56
+KPX F ae -79
+KPX F oslash -46
+KPX F oe -46
+KPX F Aring -97
+KPX G hyphen 19
+KPX G T -19
+KPX G W -19
+KPX G Y -23
+KPX J A -37
+KPX J Aring -37
+KPX K hyphen -37
+KPX K A -23
+KPX K C -28
+KPX K O -28
+KPX K U -37
+KPX K W -37
+KPX K Y -28
+KPX K a 19
+KPX K e -37
+KPX K o -37
+KPX K u -19
+KPX K y -102
+KPX K quotesinglbase 37
+KPX K quotedblbase 37
+KPX K Oslash -28
+KPX K OE -28
+KPX K ae 19
+KPX K oslash -37
+KPX K oe -37
+KPX K Aring -23
+KPX L quoteright -167
+KPX L T -83
+KPX L U -19
+KPX L V -120
+KPX L W -88
+KPX L Y -102
+KPX L quoteleft -74
+KPX L a 19
+KPX L e 19
+KPX L o 19
+KPX L y -56
+KPX L quotedblleft -74
+KPX L quotesinglbase 19
+KPX L quotedblbase 19
+KPX L quotedblright -167
+KPX L ae 19
+KPX L oslash 19
+KPX L oe 19
+KPX O comma -60
+KPX O hyphen 37
+KPX O period -60
+KPX O V -19
+KPX O X -19
+KPX P comma -259
+KPX P hyphen -93
+KPX P period -259
+KPX P colon -37
+KPX P semicolon -37
+KPX P A -93
+KPX P U -19
+KPX P a -37
+KPX P e -37
+KPX P o -32
+KPX P quotesinglbase -93
+KPX P quotedblbase -93
+KPX P ae -37
+KPX P oslash -32
+KPX P oe -32
+KPX P Aring -93
+KPX Q quoteright 19
+KPX Q hyphen 37
+KPX Q quotedblright 19
+KPX R quoteright -37
+KPX R colon -19
+KPX R semicolon -19
+KPX R T -37
+KPX R V -56
+KPX R W -42
+KPX R Y -51
+KPX R quoteleft -37
+KPX R e -37
+KPX R o -37
+KPX R u -37
+KPX R y -46
+KPX R quotedblleft -37
+KPX R quotesinglbase 37
+KPX R quotedblbase 37
+KPX R quotedblright -37
+KPX R oslash -37
+KPX R oe -37
+KPX T quoteright 19
+KPX T comma -148
+KPX T hyphen -130
+KPX T period -148
+KPX T colon -37
+KPX T semicolon -37
+KPX T A -111
+KPX T T 19
+KPX T quoteleft 37
+KPX T a -97
+KPX T c -97
+KPX T e -97
+KPX T i -19
+KPX T o -97
+KPX T r -74
+KPX T s -74
+KPX T u -111
+KPX T w -74
+KPX T y -93
+KPX T quotedblleft 37
+KPX T guillemotleft -37
+KPX T guilsinglleft -37
+KPX T quotedblright 19
+KPX T ae -97
+KPX T oslash -97
+KPX T oe -97
+KPX T Aring -111
+KPX U A -32
+KPX U J -28
+KPX U Aring -32
+KPX V quoteright 37
+KPX V comma -222
+KPX V hyphen -93
+KPX V period -222
+KPX V colon -102
+KPX V semicolon -102
+KPX V A -79
+KPX V O -19
+KPX V a -111
+KPX V e -106
+KPX V i -28
+KPX V o -93
+KPX V u -65
+KPX V y -65
+KPX V quotesinglbase -74
+KPX V quotedblbase -74
+KPX V quotedblright 37
+KPX V Oslash -19
+KPX V OE -19
+KPX V ae -111
+KPX V oslash -93
+KPX V oe -93
+KPX V Aring -79
+KPX W quoteright 19
+KPX W comma -176
+KPX W hyphen -74
+KPX W period -176
+KPX W colon -88
+KPX W semicolon -88
+KPX W A -60
+KPX W a -88
+KPX W e -83
+KPX W i -37
+KPX W o -88
+KPX W r -65
+KPX W u -60
+KPX W y -42
+KPX W quotesinglbase -37
+KPX W quotedblbase -37
+KPX W quotedblright 19
+KPX W ae -88
+KPX W oslash -88
+KPX W oe -88
+KPX W Aring -60
+KPX X hyphen -37
+KPX X A -19
+KPX X C -19
+KPX X O -19
+KPX X e -37
+KPX X quotesinglbase 19
+KPX X quotedblbase 19
+KPX X Oslash -19
+KPX X OE -19
+KPX X Aring -19
+KPX Y quoteright 28
+KPX Y comma -130
+KPX Y hyphen -130
+KPX Y period -130
+KPX Y colon -125
+KPX Y semicolon -125
+KPX Y A -60
+KPX Y C -19
+KPX Y a -116
+KPX Y e -125
+KPX Y i -37
+KPX Y o -116
+KPX Y u -88
+KPX Y guillemotleft -56
+KPX Y guilsinglleft -56
+KPX Y quotesinglbase -37
+KPX Y quotedblbase -37
+KPX Y quotedblright 28
+KPX Y ae -116
+KPX Y oslash -116
+KPX Y oe -116
+KPX Y Aring -60
+KPX quoteleft A -130
+KPX quoteleft J -148
+KPX quoteleft V 56
+KPX quoteleft W 37
+KPX quoteleft X 37
+KPX quoteleft Y 37
+KPX quoteleft v 28
+KPX quoteleft w 19
+KPX quoteleft y 19
+KPX quoteleft AE -111
+KPX quoteleft Aring -130
+KPX f quoteright 74
+KPX f comma -37
+KPX f hyphen -19
+KPX f period -37
+KPX f quoteleft 37
+KPX f quotedblleft 37
+KPX f quotedblright 74
+KPX r comma -111
+KPX r period -111
+KPX r quotesinglbase -37
+KPX r quotedblbase -37
+KPX v quoteright 28
+KPX v comma -120
+KPX v period -120
+KPX v quotedblright 28
+KPX w quoteright 19
+KPX w comma -120
+KPX w period -120
+KPX w quoteleft 19
+KPX w quotedblleft 19
+KPX w quotesinglbase -37
+KPX w quotedblbase -37
+KPX w quotedblright 19
+KPX x e -19
+KPX x o -19
+KPX x oslash -19
+KPX x oe -19
+KPX y comma -134
+KPX y period -134
+KPX y quoteleft 19
+KPX y quotedblleft 19
+KPX quotedblleft A -130
+KPX quotedblleft J -148
+KPX quotedblleft V 56
+KPX quotedblleft W 37
+KPX quotedblleft X 37
+KPX quotedblleft Y 37
+KPX quotedblleft v 28
+KPX quotedblleft w 19
+KPX quotedblleft y 19
+KPX quotedblleft AE -111
+KPX quotedblleft Aring -130
+KPX guilsinglright Y -56
+KPX quotesinglbase A 19
+KPX quotesinglbase V -37
+KPX quotesinglbase X 19
+KPX quotesinglbase Y -19
+KPX quotesinglbase AE 74
+KPX quotesinglbase Aring 19
+KPX quotedblbase A 19
+KPX quotedblbase V -37
+KPX quotedblbase X 19
+KPX quotedblbase Y -19
+KPX quotedblbase AE 74
+KPX quotedblbase Aring 19
+KPX guillemotright Y -56
+KPX AE hyphen 19
+KPX Lslash quoteright -167
+KPX Lslash T -83
+KPX Lslash U -19
+KPX Lslash V -120
+KPX Lslash W -88
+KPX Lslash Y -102
+KPX Lslash quoteleft -74
+KPX Lslash a 19
+KPX Lslash e 19
+KPX Lslash o 19
+KPX Lslash y -56
+KPX Lslash quotedblleft -74
+KPX Lslash quotesinglbase 19
+KPX Lslash quotedblbase 19
+KPX Lslash quotedblright -167
+KPX Lslash ae 19
+KPX Lslash oslash 19
+KPX Lslash oe 19
+KPX Oslash comma -60
+KPX Oslash hyphen 37
+KPX Oslash period -60
+KPX Oslash V -19
+KPX Oslash X -19
+KPX Aring quoteright -130
+KPX Aring T -111
+KPX Aring U -23
+KPX Aring V -56
+KPX Aring W -42
+KPX Aring Y -42
+KPX Aring f -19
+KPX Aring t -19
+KPX Aring v -32
+KPX Aring w -46
+KPX Aring y -23
+KPX Aring fi -19
+KPX Aring fl -19
+KPX Aring quotedblright -130
+KPX Eth hyphen 37
+KPX Eth A -19
+KPX Eth V -19
+KPX Eth Y -19
+KPX Eth Aring -19
+EndKernPairs
+StartTrackKern 3
+TrackKern -1 6 0.10 144 -2.09
+TrackKern -2 6 0.05 144 -4.02
+TrackKern -3 6 0.00 144 -5.96
+EndTrackKern
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchbi.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchbi.afm
new file mode 100644
index 00000000000..d16eb097077
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchbi.afm
@@ -0,0 +1,645 @@
+StartFontMetrics 2.0
+Comment Bitstream AFM Data
+Comment Copyright 1987-1990 as an unpublished work by Bitstream Inc., Cambridge, MA.
+Comment All rights reserved
+Comment Confidential and proprietary to Bitstream Inc.
+Comment Bitstream is a registered trademark of Bitstream Inc.
+Comment bitsClassification Transitional 801
+Comment bitsFontID 0633
+Comment bitsManufacturingDate Tue Nov 6 02:16:48 1990
+Comment bitsLayoutName clayout.adobe.text228.new
+Comment UniqueID 15530633
+FontName CharterBT-BoldItalic
+FullName Bitstream Charter Bold Italic
+FamilyName Bitstream Charter
+Weight Bold
+ItalicAngle 11.0000
+IsFixedPitch false
+FontBBox -190 -237 1243 972
+UnderlinePosition -109
+UnderlineThickness 91
+Version 1.0 [UFO]
+Notice Copyright 1987-1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.
+EncodingScheme AdobeStandardEncoding
+CapHeight 672
+XHeight 495
+Ascender 736
+Descender -218
+StartCharMetrics 228
+C 32 ; WX 293 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 340 ; N exclam ; B 43 -8 295 685 ;
+C 34 ; WX 339 ; N quotedbl ; B 40 418 299 715 ;
+C 35 ; WX 751 ; N numbersign ; B 56 -24 689 710 ;
+C 36 ; WX 586 ; N dollar ; B 24 -105 544 745 ;
+C 37 ; WX 898 ; N percent ; B 54 -12 846 683 ;
+C 38 ; WX 730 ; N ampersand ; B 19 -13 698 685 ;
+C 39 ; WX 261 ; N quoteright ; B 63 395 269 699 ;
+C 40 ; WX 420 ; N parenleft ; B 66 -142 459 718 ;
+C 41 ; WX 420 ; N parenright ; B -62 -142 331 718 ;
+C 42 ; WX 500 ; N asterisk ; B 96 338 490 718 ;
+C 43 ; WX 833 ; N plus ; B 124 0 710 597 ;
+C 44 ; WX 292 ; N comma ; B -57 -176 168 130 ;
+C 45 ; WX 320 ; N hyphen ; B 9 191 282 291 ;
+C 46 ; WX 294 ; N period ; B 22 -6 175 149 ;
+C 47 ; WX 481 ; N slash ; B -119 -93 525 672 ;
+C 48 ; WX 586 ; N zero ; B 29 -13 556 684 ;
+C 49 ; WX 586 ; N one ; B 79 0 438 681 ;
+C 50 ; WX 586 ; N two ; B -4 0 531 683 ;
+C 51 ; WX 586 ; N three ; B 11 -11 540 683 ;
+C 52 ; WX 586 ; N four ; B -2 -33 551 677 ;
+C 53 ; WX 586 ; N five ; B 19 -10 552 672 ;
+C 54 ; WX 586 ; N six ; B 31 -12 532 719 ;
+C 55 ; WX 586 ; N seven ; B 74 -34 612 672 ;
+C 56 ; WX 586 ; N eight ; B 24 -18 549 686 ;
+C 57 ; WX 586 ; N nine ; B 47 -58 558 684 ;
+C 58 ; WX 346 ; N colon ; B 49 -6 263 487 ;
+C 59 ; WX 346 ; N semicolon ; B -25 -176 263 487 ;
+C 60 ; WX 833 ; N less ; B 128 22 704 574 ;
+C 61 ; WX 833 ; N equal ; B 124 156 710 440 ;
+C 62 ; WX 833 ; N greater ; B 129 22 704 574 ;
+C 63 ; WX 492 ; N question ; B 74 -8 471 684 ;
+C 64 ; WX 936 ; N at ; B 76 -154 871 693 ;
+C 65 ; WX 634 ; N A ; B -68 0 613 678 ;
+C 66 ; WX 628 ; N B ; B -24 0 580 672 ;
+C 67 ; WX 625 ; N C ; B 36 -13 637 684 ;
+C 68 ; WX 702 ; N D ; B -26 0 661 672 ;
+C 69 ; WX 581 ; N E ; B -22 0 580 672 ;
+C 70 ; WX 539 ; N F ; B -23 0 570 671 ;
+C 71 ; WX 693 ; N G ; B 38 -12 671 685 ;
+C 72 ; WX 747 ; N H ; B -25 0 768 672 ;
+C 73 ; WX 353 ; N I ; B -21 0 370 672 ;
+C 74 ; WX 474 ; N J ; B -46 -14 497 672 ;
+C 75 ; WX 653 ; N K ; B -26 -7 695 672 ;
+C 76 ; WX 529 ; N L ; B -26 0 489 672 ;
+C 77 ; WX 894 ; N M ; B -25 0 913 672 ;
+C 78 ; WX 712 ; N N ; B -27 0 744 672 ;
+C 79 ; WX 729 ; N O ; B 37 -14 690 684 ;
+C 80 ; WX 581 ; N P ; B -24 0 583 672 ;
+C 81 ; WX 729 ; N Q ; B 36 -165 705 684 ;
+C 82 ; WX 645 ; N R ; B -22 -7 632 671 ;
+C 83 ; WX 553 ; N S ; B 23 -8 509 684 ;
+C 84 ; WX 584 ; N T ; B 37 0 628 672 ;
+C 85 ; WX 701 ; N U ; B 71 -13 735 672 ;
+C 86 ; WX 617 ; N V ; B 26 -3 677 672 ;
+C 87 ; WX 921 ; N W ; B 43 0 963 672 ;
+C 88 ; WX 608 ; N X ; B -66 0 658 672 ;
+C 89 ; WX 586 ; N Y ; B 26 0 656 672 ;
+C 90 ; WX 572 ; N Z ; B -18 0 581 672 ;
+C 91 ; WX 449 ; N bracketleft ; B 51 -133 472 709 ;
+C 92 ; WX 481 ; N backslash ; B 21 -93 505 672 ;
+C 93 ; WX 449 ; N bracketright ; B -43 -133 379 709 ;
+C 94 ; WX 1000 ; N asciicircum ; B 201 437 798 714 ;
+C 95 ; WX 500 ; N underscore ; B 0 -237 500 -152 ;
+C 96 ; WX 261 ; N quoteleft ; B 76 395 282 699 ;
+C 97 ; WX 572 ; N a ; B 18 -9 548 494 ;
+C 98 ; WX 556 ; N b ; B 26 -9 508 736 ;
+C 99 ; WX 437 ; N c ; B 15 -11 410 493 ;
+C 100 ; WX 579 ; N d ; B 21 -9 558 736 ;
+C 101 ; WX 464 ; N e ; B 18 -10 431 491 ;
+C 102 ; WX 325 ; N f ; B -155 -214 447 733 ;
+C 103 ; WX 517 ; N g ; B -31 -218 528 492 ;
+C 104 ; WX 595 ; N h ; B 20 -7 561 736 ;
+C 105 ; WX 318 ; N i ; B 28 -7 294 725 ;
+C 106 ; WX 297 ; N j ; B -146 -215 285 724 ;
+C 107 ; WX 559 ; N k ; B 22 -8 544 736 ;
+C 108 ; WX 307 ; N l ; B 34 -9 280 736 ;
+C 109 ; WX 883 ; N m ; B 32 -7 852 494 ;
+C 110 ; WX 600 ; N n ; B 26 -7 569 494 ;
+C 111 ; WX 550 ; N o ; B 18 -11 501 493 ;
+C 112 ; WX 565 ; N p ; B -64 -218 519 494 ;
+C 113 ; WX 562 ; N q ; B 23 -218 516 496 ;
+C 114 ; WX 449 ; N r ; B 26 0 451 494 ;
+C 115 ; WX 403 ; N s ; B -12 -10 363 494 ;
+C 116 ; WX 366 ; N t ; B 39 -8 370 601 ;
+C 117 ; WX 599 ; N u ; B 28 -10 572 489 ;
+C 118 ; WX 492 ; N v ; B -8 -1 472 495 ;
+C 119 ; WX 768 ; N w ; B -2 0 741 495 ;
+C 120 ; WX 510 ; N x ; B -38 -7 512 495 ;
+C 121 ; WX 494 ; N y ; B -79 -216 514 494 ;
+C 122 ; WX 465 ; N z ; B -20 -14 461 503 ;
+C 123 ; WX 487 ; N braceleft ; B 47 -134 430 705 ;
+C 124 ; WX 500 ; N bar ; B 207 -237 294 764 ;
+C 125 ; WX 487 ; N braceright ; B 58 -134 441 705 ;
+C 126 ; WX 833 ; N asciitilde ; B 86 212 747 384 ;
+C 161 ; WX 340 ; N exclamdown ; B 42 -8 294 685 ;
+C 162 ; WX 586 ; N cent ; B 45 -104 535 610 ;
+C 163 ; WX 586 ; N sterling ; B -12 0 562 677 ;
+C 164 ; WX 167 ; N fraction ; B -190 0 353 672 ;
+C 165 ; WX 601 ; N yen ; B 9 0 652 668 ;
+C 166 ; WX 586 ; N florin ; B -63 -149 586 683 ;
+C 167 ; WX 500 ; N section ; B -11 -142 490 720 ;
+C 168 ; WX 606 ; N currency ; B 36 166 571 699 ;
+C 169 ; WX 175 ; N quotesingle ; B 40 418 135 715 ;
+C 170 ; WX 481 ; N quotedblleft ; B 77 395 504 699 ;
+C 171 ; WX 450 ; N guillemotleft ; B 10 54 429 425 ;
+C 172 ; WX 266 ; N guilsinglleft ; B 10 54 228 425 ;
+C 173 ; WX 266 ; N guilsinglright ; B -13 54 205 425 ;
+C 174 ; WX 621 ; N fi ; B -154 -214 600 735 ;
+C 175 ; WX 629 ; N fl ; B -154 -214 603 736 ;
+C 177 ; WX 500 ; N endash ; B -26 195 498 286 ;
+C 178 ; WX 500 ; N dagger ; B 44 -130 511 718 ;
+C 179 ; WX 500 ; N daggerdbl ; B -25 -132 511 718 ;
+C 180 ; WX 292 ; N periodcentered ; B 70 258 223 413 ;
+C 182 ; WX 492 ; N paragraph ; B 18 -79 467 672 ;
+C 183 ; WX 590 ; N bullet ; B 150 227 439 516 ;
+C 184 ; WX 261 ; N quotesinglbase ; B -54 -174 151 130 ;
+C 185 ; WX 481 ; N quotedblbase ; B -51 -174 375 130 ;
+C 186 ; WX 481 ; N quotedblright ; B 64 395 490 699 ;
+C 187 ; WX 450 ; N guillemotright ; B -13 54 406 425 ;
+C 188 ; WX 1000 ; N ellipsis ; B 41 -6 862 149 ;
+C 189 ; WX 1291 ; N perthousand ; B 54 -12 1243 683 ;
+C 191 ; WX 492 ; N questiondown ; B 6 -8 400 684 ;
+C 193 ; WX 500 ; N grave ; B 164 551 349 742 ;
+C 194 ; WX 500 ; N acute ; B 247 551 506 742 ;
+C 195 ; WX 500 ; N circumflex ; B 137 551 446 742 ;
+C 196 ; WX 500 ; N tilde ; B 132 570 486 723 ;
+C 197 ; WX 500 ; N macron ; B 137 607 482 675 ;
+C 198 ; WX 500 ; N breve ; B 167 567 477 719 ;
+C 199 ; WX 500 ; N dotaccent ; B 237 576 370 713 ;
+C 200 ; WX 500 ; N dieresis ; B 137 578 472 711 ;
+C 202 ; WX 500 ; N ring ; B 199 551 428 780 ;
+C 203 ; WX 500 ; N cedilla ; B 58 -230 279 0 ;
+C 205 ; WX 500 ; N hungarumlaut ; B 150 551 578 742 ;
+C 206 ; WX 500 ; N ogonek ; B 83 -225 243 0 ;
+C 207 ; WX 500 ; N caron ; B 174 551 483 742 ;
+C 208 ; WX 1000 ; N emdash ; B -22 195 1000 286 ;
+C 225 ; WX 894 ; N AE ; B -103 0 896 672 ;
+C 227 ; WX 429 ; N ordfeminine ; B 13 318 411 671 ;
+C 232 ; WX 529 ; N Lslash ; B -26 0 489 672 ;
+C 233 ; WX 729 ; N Oslash ; B 37 -82 691 751 ;
+C 234 ; WX 1003 ; N OE ; B 37 -13 999 684 ;
+C 235 ; WX 413 ; N ordmasculine ; B 13 317 376 671 ;
+C 241 ; WX 719 ; N ae ; B 4 -9 684 494 ;
+C 245 ; WX 318 ; N dotlessi ; B 28 -7 294 494 ;
+C 248 ; WX 307 ; N lslash ; B -17 -9 331 736 ;
+C 249 ; WX 550 ; N oslash ; B 19 -87 501 568 ;
+C 250 ; WX 795 ; N oe ; B 20 -10 759 494 ;
+C 251 ; WX 622 ; N germandbls ; B -161 -214 572 738 ;
+C -1 ; WX 634 ; N Aacute ; B -68 0 613 928 ;
+C -1 ; WX 634 ; N Acircumflex ; B -68 0 613 928 ;
+C -1 ; WX 634 ; N Adieresis ; B -68 0 613 897 ;
+C -1 ; WX 634 ; N Agrave ; B -68 0 613 928 ;
+C -1 ; WX 634 ; N Aring ; B -68 0 613 972 ;
+C -1 ; WX 634 ; N Atilde ; B -68 0 613 909 ;
+C -1 ; WX 625 ; N Ccedilla ; B 36 -230 637 684 ;
+C -1 ; WX 581 ; N Eacute ; B -22 0 580 928 ;
+C -1 ; WX 581 ; N Ecircumflex ; B -22 0 580 928 ;
+C -1 ; WX 581 ; N Edieresis ; B -22 0 580 897 ;
+C -1 ; WX 581 ; N Egrave ; B -22 0 580 928 ;
+C -1 ; WX 353 ; N Iacute ; B -21 0 448 928 ;
+C -1 ; WX 353 ; N Icircumflex ; B -21 0 388 928 ;
+C -1 ; WX 353 ; N Idieresis ; B -21 0 414 897 ;
+C -1 ; WX 353 ; N Igrave ; B -21 0 370 928 ;
+C -1 ; WX 712 ; N Ntilde ; B -27 0 744 909 ;
+C -1 ; WX 729 ; N Oacute ; B 37 -14 690 928 ;
+C -1 ; WX 729 ; N Ocircumflex ; B 37 -14 690 928 ;
+C -1 ; WX 729 ; N Odieresis ; B 37 -14 690 897 ;
+C -1 ; WX 729 ; N Ograve ; B 37 -14 690 928 ;
+C -1 ; WX 729 ; N Otilde ; B 37 -14 690 909 ;
+C -1 ; WX 553 ; N Scaron ; B 23 -8 525 928 ;
+C -1 ; WX 701 ; N Uacute ; B 71 -13 735 928 ;
+C -1 ; WX 701 ; N Ucircumflex ; B 71 -13 735 928 ;
+C -1 ; WX 701 ; N Udieresis ; B 71 -13 735 897 ;
+C -1 ; WX 701 ; N Ugrave ; B 71 -13 735 928 ;
+C -1 ; WX 586 ; N Ydieresis ; B 26 0 656 897 ;
+C -1 ; WX 572 ; N Zcaron ; B -18 0 581 928 ;
+C -1 ; WX 572 ; N aacute ; B 18 -9 548 742 ;
+C -1 ; WX 572 ; N acircumflex ; B 18 -9 548 742 ;
+C -1 ; WX 572 ; N adieresis ; B 18 -9 548 711 ;
+C -1 ; WX 572 ; N agrave ; B 18 -9 548 742 ;
+C -1 ; WX 572 ; N aring ; B 18 -9 548 774 ;
+C -1 ; WX 572 ; N atilde ; B 18 -9 548 723 ;
+C -1 ; WX 437 ; N ccedilla ; B 15 -230 410 493 ;
+C -1 ; WX 464 ; N eacute ; B 18 -10 488 742 ;
+C -1 ; WX 464 ; N ecircumflex ; B 18 -10 431 742 ;
+C -1 ; WX 464 ; N edieresis ; B 18 -10 454 711 ;
+C -1 ; WX 464 ; N egrave ; B 18 -10 431 742 ;
+C -1 ; WX 318 ; N iacute ; B 28 -7 398 742 ;
+C -1 ; WX 318 ; N icircumflex ; B 28 -7 338 742 ;
+C -1 ; WX 318 ; N idieresis ; B 28 -7 364 711 ;
+C -1 ; WX 318 ; N igrave ; B 28 -7 294 742 ;
+C -1 ; WX 600 ; N ntilde ; B 26 -7 569 723 ;
+C -1 ; WX 550 ; N oacute ; B 18 -11 531 742 ;
+C -1 ; WX 550 ; N ocircumflex ; B 18 -11 501 742 ;
+C -1 ; WX 550 ; N odieresis ; B 18 -11 501 711 ;
+C -1 ; WX 550 ; N ograve ; B 18 -11 501 742 ;
+C -1 ; WX 550 ; N otilde ; B 18 -11 511 723 ;
+C -1 ; WX 403 ; N scaron ; B -12 -10 435 742 ;
+C -1 ; WX 599 ; N uacute ; B 28 -10 572 742 ;
+C -1 ; WX 599 ; N ucircumflex ; B 28 -10 572 742 ;
+C -1 ; WX 599 ; N udieresis ; B 28 -10 572 711 ;
+C -1 ; WX 599 ; N ugrave ; B 28 -10 572 742 ;
+C -1 ; WX 494 ; N ydieresis ; B -79 -216 514 711 ;
+C -1 ; WX 465 ; N zcaron ; B -20 -14 466 742 ;
+C -1 ; WX 817 ; N trademark ; B 113 398 724 663 ;
+C -1 ; WX 894 ; N copyright ; B 62 -50 842 730 ;
+C -1 ; WX 833 ; N logicalnot ; B 124 175 710 421 ;
+C -1 ; WX 894 ; N registered ; B 62 -50 842 730 ;
+C -1 ; WX 833 ; N minus ; B 124 256 710 340 ;
+C -1 ; WX 702 ; N Eth ; B -25 0 661 672 ;
+C -1 ; WX 576 ; N Thorn ; B -26 0 553 666 ;
+C -1 ; WX 586 ; N Yacute ; B 26 0 656 928 ;
+C -1 ; WX 500 ; N brokenbar ; B 207 -172 294 699 ;
+C -1 ; WX 329 ; N degree ; B 20 424 309 713 ;
+C -1 ; WX 833 ; N divide ; B 124 45 710 551 ;
+C -1 ; WX 561 ; N eth ; B 25 -12 524 740 ;
+C -1 ; WX 578 ; N mu ; B -53 -206 546 433 ;
+C -1 ; WX 833 ; N multiply ; B 139 16 704 581 ;
+C -1 ; WX 905 ; N onehalf ; B 49 0 871 677 ;
+C -1 ; WX 905 ; N onequarter ; B 49 -19 884 677 ;
+C -1 ; WX 387 ; N onesuperior ; B 52 268 289 677 ;
+C -1 ; WX 833 ; N plusminus ; B 124 7 710 590 ;
+C -1 ; WX 565 ; N thorn ; B -64 -218 519 736 ;
+C -1 ; WX 905 ; N threequarters ; B 6 -19 884 678 ;
+C -1 ; WX 387 ; N threesuperior ; B 7 261 357 679 ;
+C -1 ; WX 387 ; N twosuperior ; B -3 268 351 679 ;
+C -1 ; WX 494 ; N yacute ; B -79 -216 514 742 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 378
+KPX hyphen T -37
+KPX hyphen V -56
+KPX hyphen W -56
+KPX hyphen X -37
+KPX hyphen Y -74
+KPX A quoteright -130
+KPX A colon 19
+KPX A semicolon 19
+KPX A S 19
+KPX A T -37
+KPX A U -23
+KPX A V -56
+KPX A W -42
+KPX A Y -42
+KPX A y -19
+KPX A quotedblright -130
+KPX B hyphen 56
+KPX B S 19
+KPX B V -19
+KPX B W -19
+KPX B Y -19
+KPX C quoteright 37
+KPX C hyphen 23
+KPX C S 19
+KPX C quotedblright 37
+KPX D hyphen 37
+KPX D A -19
+KPX D V -19
+KPX D W -19
+KPX D Y -28
+KPX D Aring -19
+KPX F comma -167
+KPX F hyphen -56
+KPX F period -167
+KPX F colon -37
+KPX F semicolon -37
+KPX F A -32
+KPX F a -60
+KPX F e -65
+KPX F i -19
+KPX F o -46
+KPX F r -19
+KPX F u -19
+KPX F quotesinglbase -37
+KPX F quotedblbase -37
+KPX F ae -60
+KPX F oslash -46
+KPX F oe -46
+KPX F Aring -32
+KPX G hyphen 19
+KPX J A -23
+KPX J Aring -23
+KPX K hyphen -37
+KPX K A -23
+KPX K C -28
+KPX K O -28
+KPX K U -37
+KPX K W -42
+KPX K Y -32
+KPX K a -19
+KPX K e -19
+KPX K o -37
+KPX K u -19
+KPX K y -83
+KPX K quotesinglbase 56
+KPX K quotedblbase 56
+KPX K Oslash -28
+KPX K OE -28
+KPX K ae -19
+KPX K oslash -37
+KPX K oe -37
+KPX K Aring -23
+KPX L quoteright -185
+KPX L hyphen 56
+KPX L A 19
+KPX L O -19
+KPX L T -74
+KPX L U -37
+KPX L V -102
+KPX L W -88
+KPX L Y -88
+KPX L quoteleft -56
+KPX L u -19
+KPX L y -74
+KPX L quotedblleft -56
+KPX L quotesinglbase 19
+KPX L quotedblbase 19
+KPX L quotedblright -185
+KPX L Oslash -19
+KPX L OE -19
+KPX L Aring 19
+KPX O comma -37
+KPX O hyphen 19
+KPX O period -37
+KPX O V -19
+KPX O X -19
+KPX O Y -19
+KPX P comma -250
+KPX P hyphen -56
+KPX P period -250
+KPX P colon -19
+KPX P semicolon -19
+KPX P A -74
+KPX P U -19
+KPX P W -19
+KPX P Y -19
+KPX P a -37
+KPX P e -37
+KPX P i 19
+KPX P n 19
+KPX P o -32
+KPX P r 19
+KPX P u 19
+KPX P y 19
+KPX P quotesinglbase -93
+KPX P quotedblbase -93
+KPX P ae -37
+KPX P oslash -32
+KPX P oe -32
+KPX P Aring -74
+KPX Q quoteright 19
+KPX Q hyphen 19
+KPX Q quotesinglbase 56
+KPX Q quotedblbase 56
+KPX Q quotedblright 19
+KPX R quoteright -37
+KPX R comma 19
+KPX R hyphen -19
+KPX R period 19
+KPX R C -19
+KPX R T -19
+KPX R V -19
+KPX R W -23
+KPX R Y -37
+KPX R quoteleft -19
+KPX R e -19
+KPX R o -19
+KPX R quotedblleft -19
+KPX R quotesinglbase 56
+KPX R quotedblbase 56
+KPX R quotedblright -37
+KPX R oslash -19
+KPX R oe -19
+KPX S A 19
+KPX S G 19
+KPX S O 19
+KPX S Q 19
+KPX S S -19
+KPX S Oslash 19
+KPX S OE 19
+KPX S Aring 19
+KPX T comma -148
+KPX T hyphen -130
+KPX T period -148
+KPX T colon -37
+KPX T semicolon -37
+KPX T A -56
+KPX T T 19
+KPX T a -116
+KPX T c -97
+KPX T e -97
+KPX T i -19
+KPX T o -97
+KPX T r -56
+KPX T s -93
+KPX T u -93
+KPX T w -93
+KPX T y -74
+KPX T guillemotleft -37
+KPX T guilsinglleft -37
+KPX T quotesinglbase -19
+KPX T quotedblbase -19
+KPX T ae -116
+KPX T oslash -97
+KPX T oe -97
+KPX T Aring -56
+KPX U A -28
+KPX U J -19
+KPX U Z -19
+KPX U Aring -28
+KPX V comma -185
+KPX V hyphen -56
+KPX V period -185
+KPX V colon -93
+KPX V semicolon -93
+KPX V A -97
+KPX V O -19
+KPX V a -93
+KPX V e -93
+KPX V i -28
+KPX V o -60
+KPX V u -32
+KPX V y -28
+KPX V quotesinglbase -37
+KPX V quotedblbase -37
+KPX V Oslash -19
+KPX V OE -19
+KPX V ae -93
+KPX V oslash -60
+KPX V oe -60
+KPX V Aring -97
+KPX W comma -134
+KPX W hyphen -37
+KPX W period -134
+KPX W colon -28
+KPX W semicolon -28
+KPX W A -28
+KPX W a -69
+KPX W e -93
+KPX W i -19
+KPX W o -69
+KPX W r -28
+KPX W u -28
+KPX W y -23
+KPX W quotesinglbase -37
+KPX W quotedblbase -37
+KPX W ae -69
+KPX W oslash -69
+KPX W oe -69
+KPX W Aring -28
+KPX X hyphen -19
+KPX X A -19
+KPX X e -37
+KPX X guilsinglright 19
+KPX X quotesinglbase 37
+KPX X quotedblbase 37
+KPX X guillemotright 19
+KPX X Aring -19
+KPX Y quoteright 19
+KPX Y comma -130
+KPX Y hyphen -111
+KPX Y period -130
+KPX Y colon -106
+KPX Y semicolon -106
+KPX Y A -46
+KPX Y a -116
+KPX Y e -116
+KPX Y i -19
+KPX Y o -97
+KPX Y u -56
+KPX Y guillemotleft -37
+KPX Y guilsinglleft -37
+KPX Y quotesinglbase -19
+KPX Y quotedblbase -19
+KPX Y quotedblright 19
+KPX Y ae -116
+KPX Y oslash -97
+KPX Y oe -97
+KPX Y Aring -46
+KPX Z hyphen 37
+KPX quoteleft A -130
+KPX quoteleft J -130
+KPX quoteleft T 19
+KPX quoteleft V 56
+KPX quoteleft W 37
+KPX quoteleft X 37
+KPX quoteleft Y 56
+KPX quoteleft AE -148
+KPX quoteleft Aring -130
+KPX f quoteright 93
+KPX f comma -83
+KPX f hyphen -19
+KPX f period -83
+KPX f quoteleft 37
+KPX f quotedblleft 37
+KPX f quotedblright 93
+KPX r comma -130
+KPX r hyphen -19
+KPX r period -130
+KPX r g -19
+KPX r h -19
+KPX v comma -46
+KPX v hyphen 37
+KPX v period -46
+KPX w comma -56
+KPX w hyphen 19
+KPX w period -56
+KPX y comma -60
+KPX y hyphen 19
+KPX y period -60
+KPX quotedblleft A -130
+KPX quotedblleft J -130
+KPX quotedblleft T 19
+KPX quotedblleft V 56
+KPX quotedblleft W 37
+KPX quotedblleft X 37
+KPX quotedblleft Y 56
+KPX quotedblleft AE -148
+KPX quotedblleft Aring -130
+KPX quotesinglbase A 37
+KPX quotesinglbase C -37
+KPX quotesinglbase D 19
+KPX quotesinglbase F 19
+KPX quotesinglbase G -19
+KPX quotesinglbase H 19
+KPX quotesinglbase J 19
+KPX quotesinglbase T -37
+KPX quotesinglbase V -56
+KPX quotesinglbase W -37
+KPX quotesinglbase X 37
+KPX quotesinglbase Y -37
+KPX quotesinglbase f 37
+KPX quotesinglbase v -37
+KPX quotesinglbase w -37
+KPX quotesinglbase fi 37
+KPX quotesinglbase fl 37
+KPX quotesinglbase AE 74
+KPX quotesinglbase germandbls 37
+KPX quotesinglbase Aring 37
+KPX quotesinglbase Eth 19
+KPX quotedblbase A 37
+KPX quotedblbase C -37
+KPX quotedblbase D 19
+KPX quotedblbase F 19
+KPX quotedblbase G -19
+KPX quotedblbase H 19
+KPX quotedblbase J 19
+KPX quotedblbase T -37
+KPX quotedblbase V -56
+KPX quotedblbase W -37
+KPX quotedblbase X 37
+KPX quotedblbase Y -37
+KPX quotedblbase f 37
+KPX quotedblbase v -37
+KPX quotedblbase w -37
+KPX quotedblbase fi 37
+KPX quotedblbase fl 37
+KPX quotedblbase AE 74
+KPX quotedblbase germandbls 37
+KPX quotedblbase Aring 37
+KPX quotedblbase Eth 19
+KPX AE hyphen 19
+KPX Lslash quoteright -185
+KPX Lslash hyphen 56
+KPX Lslash A 19
+KPX Lslash O -19
+KPX Lslash T -74
+KPX Lslash U -37
+KPX Lslash V -102
+KPX Lslash W -88
+KPX Lslash Y -88
+KPX Lslash quoteleft -56
+KPX Lslash u -19
+KPX Lslash y -74
+KPX Lslash quotedblleft -56
+KPX Lslash quotesinglbase 19
+KPX Lslash quotedblbase 19
+KPX Lslash quotedblright -185
+KPX Lslash Oslash -19
+KPX Lslash OE -19
+KPX Lslash Aring 19
+KPX Oslash comma -37
+KPX Oslash hyphen 19
+KPX Oslash period -37
+KPX Oslash V -19
+KPX Oslash X -19
+KPX Oslash Y -19
+KPX Aring quoteright -130
+KPX Aring colon 19
+KPX Aring semicolon 19
+KPX Aring S 19
+KPX Aring T -37
+KPX Aring U -23
+KPX Aring V -56
+KPX Aring W -42
+KPX Aring Y -42
+KPX Aring y -19
+KPX Aring quotedblright -130
+KPX Eth hyphen 37
+KPX Eth A -19
+KPX Eth V -19
+KPX Eth W -19
+KPX Eth Y -28
+KPX Eth Aring -19
+KPX Thorn quoteright -37
+KPX Thorn comma -148
+KPX Thorn period -148
+KPX Thorn quotedblright -37
+EndKernPairs
+StartTrackKern 3
+TrackKern -1 6 0.10 144 -2.09
+TrackKern -2 6 0.05 144 -4.02
+TrackKern -3 6 0.00 144 -5.96
+EndTrackKern
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchr.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchr.afm
new file mode 100644
index 00000000000..6d58e7c65a7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchr.afm
@@ -0,0 +1,538 @@
+StartFontMetrics 2.0
+Comment Bitstream AFM Data
+Comment Copyright 1987-1990 as an unpublished work by Bitstream Inc., Cambridge, MA.
+Comment All rights reserved
+Comment Confidential and proprietary to Bitstream Inc.
+Comment Bitstream is a registered trademark of Bitstream Inc.
+Comment bitsClassification Transitional 801
+Comment bitsFontID 0648
+Comment bitsManufacturingDate Tue Nov 6 02:52:05 1990
+Comment bitsLayoutName clayout.adobe.text228.new
+Comment UniqueID 15530648
+FontName CharterBT-Roman
+FullName Bitstream Charter
+FamilyName Bitstream Charter
+Weight Normal
+ItalicAngle 0.00
+IsFixedPitch false
+FontBBox -162 -237 1194 963
+UnderlinePosition -109
+UnderlineThickness 61
+Version 1.0 [UFO]
+Notice Copyright 1987-1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.
+EncodingScheme AdobeStandardEncoding
+CapHeight 672
+XHeight 482
+Ascender 737
+Descender -218
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 338 ; N exclam ; B 112 -9 226 683 ;
+C 34 ; WX 331 ; N quotedbl ; B 43 421 288 715 ;
+C 35 ; WX 745 ; N numbersign ; B 63 -24 681 710 ;
+C 36 ; WX 556 ; N dollar ; B 57 -102 498 744 ;
+C 37 ; WX 852 ; N percent ; B 30 -12 822 683 ;
+C 38 ; WX 704 ; N ampersand ; B 53 -12 683 683 ;
+C 39 ; WX 201 ; N quoteright ; B 30 442 170 714 ;
+C 40 ; WX 417 ; N parenleft ; B 105 -142 386 718 ;
+C 41 ; WX 417 ; N parenright ; B 31 -142 311 718 ;
+C 42 ; WX 500 ; N asterisk ; B 53 337 447 718 ;
+C 43 ; WX 833 ; N plus ; B 124 0 710 597 ;
+C 44 ; WX 278 ; N comma ; B 39 -169 208 107 ;
+C 45 ; WX 319 ; N hyphen ; B 47 207 272 275 ;
+C 46 ; WX 278 ; N period ; B 75 -10 203 118 ;
+C 47 ; WX 481 ; N slash ; B -29 -93 461 672 ;
+C 48 ; WX 556 ; N zero ; B 40 -12 516 683 ;
+C 49 ; WX 556 ; N one ; B 94 0 460 683 ;
+C 50 ; WX 556 ; N two ; B 42 0 506 684 ;
+C 51 ; WX 556 ; N three ; B 40 -11 492 684 ;
+C 52 ; WX 556 ; N four ; B 26 -38 539 678 ;
+C 53 ; WX 556 ; N five ; B 49 -10 489 672 ;
+C 54 ; WX 556 ; N six ; B 50 -13 526 714 ;
+C 55 ; WX 556 ; N seven ; B 70 -38 532 672 ;
+C 56 ; WX 556 ; N eight ; B 43 -16 507 685 ;
+C 57 ; WX 556 ; N nine ; B 43 -53 512 681 ;
+C 58 ; WX 319 ; N colon ; B 96 -10 224 482 ;
+C 59 ; WX 319 ; N semicolon ; B 64 -169 234 482 ;
+C 60 ; WX 833 ; N less ; B 128 37 704 560 ;
+C 61 ; WX 833 ; N equal ; B 124 175 710 421 ;
+C 62 ; WX 833 ; N greater ; B 129 37 704 560 ;
+C 63 ; WX 486 ; N question ; B 54 -9 410 683 ;
+C 64 ; WX 942 ; N at ; B 76 -154 871 693 ;
+C 65 ; WX 639 ; N A ; B -8 0 651 680 ;
+C 66 ; WX 604 ; N B ; B 32 0 559 672 ;
+C 67 ; WX 632 ; N C ; B 42 -13 588 683 ;
+C 68 ; WX 693 ; N D ; B 32 0 649 672 ;
+C 69 ; WX 576 ; N E ; B 32 0 549 672 ;
+C 70 ; WX 537 ; N F ; B 24 0 506 672 ;
+C 71 ; WX 694 ; N G ; B 42 -13 667 684 ;
+C 72 ; WX 738 ; N H ; B 32 0 706 672 ;
+C 73 ; WX 324 ; N I ; B 35 0 289 672 ;
+C 74 ; WX 444 ; N J ; B 12 -13 440 672 ;
+C 75 ; WX 611 ; N K ; B 32 0 628 672 ;
+C 76 ; WX 520 ; N L ; B 26 0 507 672 ;
+C 77 ; WX 866 ; N M ; B 30 0 835 672 ;
+C 78 ; WX 713 ; N N ; B 26 0 688 672 ;
+C 79 ; WX 731 ; N O ; B 42 -17 689 688 ;
+C 80 ; WX 558 ; N P ; B 24 0 532 672 ;
+C 81 ; WX 731 ; N Q ; B 39 -177 694 689 ;
+C 82 ; WX 646 ; N R ; B 32 -9 657 672 ;
+C 83 ; WX 556 ; N S ; B 60 -12 499 684 ;
+C 84 ; WX 597 ; N T ; B 15 0 582 672 ;
+C 85 ; WX 694 ; N U ; B 24 -12 680 672 ;
+C 86 ; WX 618 ; N V ; B -23 -5 638 672 ;
+C 87 ; WX 928 ; N W ; B 0 0 928 672 ;
+C 88 ; WX 600 ; N X ; B -9 0 610 672 ;
+C 89 ; WX 586 ; N Y ; B -14 0 607 672 ;
+C 90 ; WX 586 ; N Z ; B 45 0 540 672 ;
+C 91 ; WX 421 ; N bracketleft ; B 138 -133 376 709 ;
+C 92 ; WX 481 ; N backslash ; B 12 -93 502 672 ;
+C 93 ; WX 421 ; N bracketright ; B 45 -133 283 709 ;
+C 94 ; WX 1000 ; N asciicircum ; B 201 437 798 714 ;
+C 95 ; WX 500 ; N underscore ; B 0 -237 500 -178 ;
+C 96 ; WX 201 ; N quoteleft ; B 34 441 174 713 ;
+C 97 ; WX 507 ; N a ; B 41 -7 489 492 ;
+C 98 ; WX 539 ; N b ; B 8 0 504 737 ;
+C 99 ; WX 446 ; N c ; B 37 -7 426 491 ;
+C 100 ; WX 565 ; N d ; B 36 -10 531 737 ;
+C 101 ; WX 491 ; N e ; B 37 -10 449 491 ;
+C 102 ; WX 321 ; N f ; B 28 0 381 744 ;
+C 103 ; WX 523 ; N g ; B 39 -219 513 492 ;
+C 104 ; WX 564 ; N h ; B 18 0 547 737 ;
+C 105 ; WX 280 ; N i ; B 34 0 261 709 ;
+C 106 ; WX 266 ; N j ; B -79 -218 204 709 ;
+C 107 ; WX 517 ; N k ; B 18 0 528 737 ;
+C 108 ; WX 282 ; N l ; B 26 0 262 737 ;
+C 109 ; WX 843 ; N m ; B 30 0 826 491 ;
+C 110 ; WX 568 ; N n ; B 30 0 551 491 ;
+C 111 ; WX 539 ; N o ; B 37 -10 503 491 ;
+C 112 ; WX 551 ; N p ; B 23 -218 517 491 ;
+C 113 ; WX 531 ; N q ; B 36 -218 527 492 ;
+C 114 ; WX 382 ; N r ; B 29 0 377 492 ;
+C 115 ; WX 400 ; N s ; B 41 -10 359 492 ;
+C 116 ; WX 334 ; N t ; B 24 -4 323 575 ;
+C 117 ; WX 569 ; N u ; B 26 -10 542 491 ;
+C 118 ; WX 494 ; N v ; B -6 0 508 482 ;
+C 119 ; WX 771 ; N w ; B -3 0 772 482 ;
+C 120 ; WX 503 ; N x ; B 12 0 501 482 ;
+C 121 ; WX 495 ; N y ; B -2 -218 512 482 ;
+C 122 ; WX 468 ; N z ; B 45 0 431 482 ;
+C 123 ; WX 486 ; N braceleft ; B 64 -135 418 703 ;
+C 124 ; WX 500 ; N bar ; B 219 -237 282 764 ;
+C 125 ; WX 486 ; N braceright ; B 64 -135 418 703 ;
+C 126 ; WX 833 ; N asciitilde ; B 86 225 747 371 ;
+C 161 ; WX 338 ; N exclamdown ; B 112 -9 226 683 ;
+C 162 ; WX 556 ; N cent ; B 64 -98 464 602 ;
+C 163 ; WX 556 ; N sterling ; B 37 0 509 683 ;
+C 164 ; WX 167 ; N fraction ; B -162 0 328 672 ;
+C 165 ; WX 556 ; N yen ; B -6 0 560 672 ;
+C 166 ; WX 556 ; N florin ; B 6 -169 507 683 ;
+C 167 ; WX 500 ; N section ; B 62 -141 437 718 ;
+C 168 ; WX 606 ; N currency ; B 41 171 566 694 ;
+C 169 ; WX 170 ; N quotesingle ; B 43 421 127 715 ;
+C 170 ; WX 403 ; N quotedblleft ; B 34 441 376 713 ;
+C 171 ; WX 442 ; N guillemotleft ; B 39 67 401 413 ;
+C 172 ; WX 245 ; N guilsinglleft ; B 39 67 204 413 ;
+C 173 ; WX 245 ; N guilsinglright ; B 45 67 210 413 ;
+C 174 ; WX 574 ; N fi ; B 28 0 544 744 ;
+C 175 ; WX 579 ; N fl ; B 28 0 561 744 ;
+C 177 ; WX 500 ; N endash ; B 0 210 500 271 ;
+C 178 ; WX 500 ; N dagger ; B 17 -130 484 718 ;
+C 179 ; WX 500 ; N daggerdbl ; B 17 -132 484 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 75 271 203 400 ;
+C 182 ; WX 484 ; N paragraph ; B 25 -79 459 672 ;
+C 183 ; WX 590 ; N bullet ; B 150 227 439 516 ;
+C 184 ; WX 201 ; N quotesinglbase ; B 31 -165 171 107 ;
+C 185 ; WX 403 ; N quotedblbase ; B 31 -165 372 107 ;
+C 186 ; WX 403 ; N quotedblright ; B 30 442 371 714 ;
+C 187 ; WX 442 ; N guillemotright ; B 45 67 407 413 ;
+C 188 ; WX 1000 ; N ellipsis ; B 102 -10 898 118 ;
+C 189 ; WX 1225 ; N perthousand ; B 30 -12 1194 683 ;
+C 191 ; WX 486 ; N questiondown ; B 60 -9 415 683 ;
+C 193 ; WX 500 ; N grave ; B 104 546 300 737 ;
+C 194 ; WX 500 ; N acute ; B 212 546 409 737 ;
+C 195 ; WX 500 ; N circumflex ; B 107 546 393 737 ;
+C 196 ; WX 500 ; N tilde ; B 97 572 403 709 ;
+C 197 ; WX 500 ; N macron ; B 101 607 403 668 ;
+C 198 ; WX 500 ; N breve ; B 108 567 392 709 ;
+C 199 ; WX 500 ; N dotaccent ; B 196 589 304 697 ;
+C 200 ; WX 500 ; N dieresis ; B 106 589 394 691 ;
+C 202 ; WX 500 ; N ring ; B 132 546 368 782 ;
+C 203 ; WX 500 ; N cedilla ; B 179 -224 368 0 ;
+C 205 ; WX 500 ; N hungarumlaut ; B 133 546 473 737 ;
+C 206 ; WX 500 ; N ogonek ; B 182 -217 330 0 ;
+C 207 ; WX 500 ; N caron ; B 107 545 393 736 ;
+C 208 ; WX 1000 ; N emdash ; B 0 210 1000 271 ;
+C 225 ; WX 866 ; N AE ; B -57 0 838 672 ;
+C 227 ; WX 380 ; N ordfeminine ; B 30 329 367 679 ;
+C 232 ; WX 520 ; N Lslash ; B 10 0 507 672 ;
+C 233 ; WX 731 ; N Oslash ; B 42 -78 689 748 ;
+C 234 ; WX 993 ; N OE ; B 42 -8 965 680 ;
+C 235 ; WX 404 ; N ordmasculine ; B 27 327 378 678 ;
+C 241 ; WX 725 ; N ae ; B 43 -10 683 492 ;
+C 245 ; WX 280 ; N dotlessi ; B 34 0 261 487 ;
+C 248 ; WX 282 ; N lslash ; B 4 0 300 737 ;
+C 249 ; WX 539 ; N oslash ; B 37 -81 503 560 ;
+C 250 ; WX 817 ; N oe ; B 36 -10 776 491 ;
+C 251 ; WX 609 ; N germandbls ; B 18 -7 581 741 ;
+C -1 ; WX 639 ; N Aacute ; B -8 0 651 934 ;
+C -1 ; WX 639 ; N Acircumflex ; B -8 0 651 934 ;
+C -1 ; WX 639 ; N Adieresis ; B -8 0 651 888 ;
+C -1 ; WX 639 ; N Agrave ; B -8 0 651 934 ;
+C -1 ; WX 639 ; N Aring ; B -8 0 651 963 ;
+C -1 ; WX 639 ; N Atilde ; B -8 0 651 906 ;
+C -1 ; WX 632 ; N Ccedilla ; B 42 -224 588 683 ;
+C -1 ; WX 576 ; N Eacute ; B 32 0 549 934 ;
+C -1 ; WX 576 ; N Ecircumflex ; B 32 0 549 934 ;
+C -1 ; WX 576 ; N Edieresis ; B 32 0 549 888 ;
+C -1 ; WX 576 ; N Egrave ; B 32 0 549 934 ;
+C -1 ; WX 324 ; N Iacute ; B 35 0 321 934 ;
+C -1 ; WX 324 ; N Icircumflex ; B 19 0 305 934 ;
+C -1 ; WX 324 ; N Idieresis ; B 18 0 306 888 ;
+C -1 ; WX 324 ; N Igrave ; B 16 0 289 934 ;
+C -1 ; WX 713 ; N Ntilde ; B 26 0 688 906 ;
+C -1 ; WX 731 ; N Oacute ; B 42 -17 689 934 ;
+C -1 ; WX 731 ; N Ocircumflex ; B 42 -17 689 934 ;
+C -1 ; WX 731 ; N Odieresis ; B 42 -17 689 888 ;
+C -1 ; WX 731 ; N Ograve ; B 42 -17 689 934 ;
+C -1 ; WX 731 ; N Otilde ; B 42 -17 689 906 ;
+C -1 ; WX 556 ; N Scaron ; B 60 -12 499 933 ;
+C -1 ; WX 694 ; N Uacute ; B 24 -12 680 934 ;
+C -1 ; WX 694 ; N Ucircumflex ; B 24 -12 680 934 ;
+C -1 ; WX 694 ; N Udieresis ; B 24 -12 680 888 ;
+C -1 ; WX 694 ; N Ugrave ; B 24 -12 680 934 ;
+C -1 ; WX 586 ; N Ydieresis ; B -14 0 607 888 ;
+C -1 ; WX 586 ; N Zcaron ; B 45 0 540 933 ;
+C -1 ; WX 507 ; N aacute ; B 41 -7 489 737 ;
+C -1 ; WX 507 ; N acircumflex ; B 41 -7 489 737 ;
+C -1 ; WX 507 ; N adieresis ; B 41 -7 489 691 ;
+C -1 ; WX 507 ; N agrave ; B 41 -7 489 737 ;
+C -1 ; WX 507 ; N aring ; B 41 -7 489 782 ;
+C -1 ; WX 507 ; N atilde ; B 41 -7 489 709 ;
+C -1 ; WX 446 ; N ccedilla ; B 37 -224 426 491 ;
+C -1 ; WX 491 ; N eacute ; B 37 -10 449 737 ;
+C -1 ; WX 491 ; N ecircumflex ; B 37 -10 449 737 ;
+C -1 ; WX 491 ; N edieresis ; B 37 -10 449 691 ;
+C -1 ; WX 491 ; N egrave ; B 37 -10 449 737 ;
+C -1 ; WX 280 ; N iacute ; B 34 0 299 737 ;
+C -1 ; WX 280 ; N icircumflex ; B -3 0 283 737 ;
+C -1 ; WX 280 ; N idieresis ; B -4 0 284 691 ;
+C -1 ; WX 280 ; N igrave ; B -6 0 261 737 ;
+C -1 ; WX 568 ; N ntilde ; B 30 0 551 709 ;
+C -1 ; WX 539 ; N oacute ; B 37 -10 503 737 ;
+C -1 ; WX 539 ; N ocircumflex ; B 37 -10 503 737 ;
+C -1 ; WX 539 ; N odieresis ; B 37 -10 503 691 ;
+C -1 ; WX 539 ; N ograve ; B 37 -10 503 737 ;
+C -1 ; WX 539 ; N otilde ; B 37 -10 503 709 ;
+C -1 ; WX 400 ; N scaron ; B 41 -10 359 736 ;
+C -1 ; WX 569 ; N uacute ; B 26 -10 542 737 ;
+C -1 ; WX 569 ; N ucircumflex ; B 26 -10 542 737 ;
+C -1 ; WX 569 ; N udieresis ; B 26 -10 542 691 ;
+C -1 ; WX 569 ; N ugrave ; B 26 -10 542 737 ;
+C -1 ; WX 495 ; N ydieresis ; B -2 -218 512 691 ;
+C -1 ; WX 468 ; N zcaron ; B 45 0 431 736 ;
+C -1 ; WX 822 ; N trademark ; B 118 398 716 663 ;
+C -1 ; WX 900 ; N copyright ; B 66 -46 838 726 ;
+C -1 ; WX 833 ; N logicalnot ; B 124 174 710 419 ;
+C -1 ; WX 900 ; N registered ; B 66 -46 838 726 ;
+C -1 ; WX 833 ; N minus ; B 124 269 710 328 ;
+C -1 ; WX 693 ; N Eth ; B 14 0 649 672 ;
+C -1 ; WX 558 ; N Thorn ; B 35 0 534 672 ;
+C -1 ; WX 586 ; N Yacute ; B -14 0 607 934 ;
+C -1 ; WX 500 ; N brokenbar ; B 219 -172 282 699 ;
+C -1 ; WX 329 ; N degree ; B 26 434 303 710 ;
+C -1 ; WX 833 ; N divide ; B 124 66 710 531 ;
+C -1 ; WX 528 ; N eth ; B 33 -11 493 734 ;
+C -1 ; WX 547 ; N mu ; B -39 -204 532 433 ;
+C -1 ; WX 833 ; N multiply ; B 146 26 691 571 ;
+C -1 ; WX 867 ; N onehalf ; B 59 0 836 678 ;
+C -1 ; WX 867 ; N onequarter ; B 59 -22 857 678 ;
+C -1 ; WX 367 ; N onesuperior ; B 62 268 304 679 ;
+C -1 ; WX 833 ; N plusminus ; B 124 20 710 577 ;
+C -1 ; WX 551 ; N thorn ; B 20 -218 521 737 ;
+C -1 ; WX 868 ; N threequarters ; B 25 -22 857 679 ;
+C -1 ; WX 367 ; N threesuperior ; B 26 261 325 679 ;
+C -1 ; WX 367 ; N twosuperior ; B 27 268 334 679 ;
+C -1 ; WX 495 ; N yacute ; B -2 -218 512 737 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 271
+KPX hyphen T -37
+KPX hyphen V -56
+KPX hyphen W -56
+KPX hyphen X -37
+KPX hyphen Y -74
+KPX A quoteright -130
+KPX A T -111
+KPX A U -23
+KPX A V -56
+KPX A W -42
+KPX A Y -42
+KPX A f -19
+KPX A t -19
+KPX A v -32
+KPX A w -46
+KPX A y -23
+KPX A fi -19
+KPX A fl -19
+KPX A quotedblright -130
+KPX B hyphen 37
+KPX B C 19
+KPX B G 19
+KPX B O 19
+KPX B S 19
+KPX B V -37
+KPX B W -19
+KPX B Y -19
+KPX B Oslash 19
+KPX B OE 19
+KPX C quoteright 37
+KPX C hyphen 23
+KPX C A -19
+KPX C S 19
+KPX C quotedblright 37
+KPX C Aring -19
+KPX D hyphen 37
+KPX D A -19
+KPX D V -19
+KPX D Y -19
+KPX D Aring -19
+KPX F comma -190
+KPX F hyphen -93
+KPX F period -190
+KPX F colon -37
+KPX F semicolon -37
+KPX F A -97
+KPX F a -79
+KPX F e -65
+KPX F o -65
+KPX F ae -79
+KPX F oslash -65
+KPX F oe -65
+KPX F Aring -97
+KPX G hyphen 19
+KPX G T -19
+KPX G W -19
+KPX G Y -23
+KPX J A -37
+KPX J Aring -37
+KPX K hyphen -37
+KPX K A -23
+KPX K C -28
+KPX K O -28
+KPX K U -37
+KPX K W -37
+KPX K Y -28
+KPX K e -19
+KPX K o -19
+KPX K u -19
+KPX K y -28
+KPX K Oslash -28
+KPX K OE -28
+KPX K oslash -19
+KPX K oe -19
+KPX K Aring -23
+KPX L quoteright -241
+KPX L T -83
+KPX L U -19
+KPX L V -120
+KPX L W -88
+KPX L Y -102
+KPX L y -19
+KPX L quotedblright -241
+KPX O comma -60
+KPX O hyphen 37
+KPX O period -60
+KPX O V -19
+KPX O X -19
+KPX P comma -259
+KPX P hyphen -93
+KPX P period -259
+KPX P colon -37
+KPX P semicolon -37
+KPX P A -93
+KPX P U -19
+KPX P a -56
+KPX P e -56
+KPX P o -51
+KPX P s -32
+KPX P ae -56
+KPX P oslash -51
+KPX P oe -51
+KPX P Aring -93
+KPX Q quoteright 19
+KPX Q hyphen 37
+KPX Q quotedblright 19
+KPX R quoteright -37
+KPX R colon -19
+KPX R semicolon -19
+KPX R T -37
+KPX R V -56
+KPX R W -42
+KPX R Y -51
+KPX R quoteleft -37
+KPX R e -37
+KPX R o -37
+KPX R u -37
+KPX R y -46
+KPX R quotedblleft -37
+KPX R quotesinglbase 37
+KPX R quotedblbase 37
+KPX R quotedblright -37
+KPX R oslash -37
+KPX R oe -37
+KPX T quoteright 19
+KPX T comma -148
+KPX T hyphen -130
+KPX T period -148
+KPX T colon -37
+KPX T semicolon -37
+KPX T A -111
+KPX T T 19
+KPX T quoteleft 37
+KPX T a -97
+KPX T c -97
+KPX T e -97
+KPX T i -19
+KPX T o -97
+KPX T r -74
+KPX T s -74
+KPX T u -111
+KPX T w -74
+KPX T y -93
+KPX T quotedblleft 37
+KPX T guillemotleft -37
+KPX T guilsinglleft -37
+KPX T quotedblright 19
+KPX T ae -97
+KPX T oslash -97
+KPX T oe -97
+KPX T Aring -111
+KPX U A -32
+KPX U J -28
+KPX U Aring -32
+KPX V quoteright 37
+KPX V comma -222
+KPX V hyphen -93
+KPX V period -222
+KPX V colon -102
+KPX V semicolon -102
+KPX V A -79
+KPX V O -19
+KPX V a -111
+KPX V e -106
+KPX V i -28
+KPX V o -93
+KPX V u -65
+KPX V y -65
+KPX V quotedblright 37
+KPX V Oslash -19
+KPX V OE -19
+KPX V ae -111
+KPX V oslash -93
+KPX V oe -93
+KPX V Aring -79
+KPX W quoteright 19
+KPX W comma -176
+KPX W hyphen -74
+KPX W period -176
+KPX W colon -88
+KPX W semicolon -88
+KPX W A -60
+KPX W a -69
+KPX W e -83
+KPX W i -19
+KPX W o -69
+KPX W r -46
+KPX W u -42
+KPX W y -23
+KPX W quotedblright 19
+KPX W ae -69
+KPX W oslash -69
+KPX W oe -69
+KPX W Aring -60
+KPX X hyphen -37
+KPX X A -19
+KPX X C -19
+KPX X O -19
+KPX X Oslash -19
+KPX X OE -19
+KPX X Aring -19
+KPX Y comma -130
+KPX Y hyphen -130
+KPX Y period -130
+KPX Y colon -125
+KPX Y semicolon -125
+KPX Y A -60
+KPX Y C -19
+KPX Y a -97
+KPX Y e -106
+KPX Y i -37
+KPX Y o -97
+KPX Y u -69
+KPX Y ae -97
+KPX Y oslash -97
+KPX Y oe -97
+KPX Y Aring -60
+KPX quoteleft A -130
+KPX quoteleft J -167
+KPX quoteleft AE -111
+KPX quoteleft Aring -130
+KPX f quoteright 74
+KPX f comma -37
+KPX f hyphen -19
+KPX f period -37
+KPX f quotedblright 74
+KPX r comma -111
+KPX r period -111
+KPX v comma -120
+KPX v period -120
+KPX w comma -120
+KPX w period -120
+KPX y comma -134
+KPX y period -134
+KPX quotedblleft A -130
+KPX quotedblleft J -167
+KPX quotedblleft AE -111
+KPX quotedblleft Aring -130
+KPX AE hyphen 19
+KPX Lslash quoteright -241
+KPX Lslash T -83
+KPX Lslash U -19
+KPX Lslash V -120
+KPX Lslash W -88
+KPX Lslash Y -102
+KPX Lslash y -19
+KPX Lslash quotedblright -241
+KPX Oslash comma -60
+KPX Oslash hyphen 37
+KPX Oslash period -60
+KPX Oslash V -19
+KPX Oslash X -19
+KPX Aring quoteright -130
+KPX Aring T -111
+KPX Aring U -23
+KPX Aring V -56
+KPX Aring W -42
+KPX Aring Y -42
+KPX Aring f -19
+KPX Aring t -19
+KPX Aring v -32
+KPX Aring w -46
+KPX Aring y -23
+KPX Aring fi -19
+KPX Aring fl -19
+KPX Aring quotedblright -130
+KPX Eth hyphen 37
+KPX Eth A -19
+KPX Eth V -19
+KPX Eth Y -19
+KPX Eth Aring -19
+EndKernPairs
+StartTrackKern 3
+TrackKern -1 6 0.10 144 -2.09
+TrackKern -2 6 0.05 144 -4.02
+TrackKern -3 6 0.00 144 -5.96
+EndTrackKern
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchri.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchri.afm
new file mode 100644
index 00000000000..0f721845f66
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/bchri.afm
@@ -0,0 +1,547 @@
+StartFontMetrics 2.0
+Comment Bitstream AFM Data
+Comment Copyright 1987-1990 as an unpublished work by Bitstream Inc., Cambridge, MA.
+Comment All rights reserved
+Comment Confidential and proprietary to Bitstream Inc.
+Comment Bitstream is a registered trademark of Bitstream Inc.
+Comment bitsClassification Transitional 801
+Comment bitsFontID 0649
+Comment bitsManufacturingDate Tue Nov 6 02:55:16 1990
+Comment bitsLayoutName clayout.adobe.text228.new
+Comment UniqueID 15530649
+FontName CharterBT-Italic
+FullName Bitstream Charter Italic
+FamilyName Bitstream Charter
+Weight Normal
+ItalicAngle 11.0000
+IsFixedPitch false
+FontBBox -226 -237 1175 980
+UnderlinePosition -109
+UnderlineThickness 61
+Version 1.0 [UFO]
+Notice Copyright 1987-1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.
+EncodingScheme AdobeStandardEncoding
+CapHeight 672
+XHeight 486
+Ascender 737
+Descender -218
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 338 ; N exclam ; B 63 -9 281 683 ;
+C 34 ; WX 331 ; N quotedbl ; B 43 421 288 715 ;
+C 35 ; WX 745 ; N numbersign ; B 63 -24 681 710 ;
+C 36 ; WX 556 ; N dollar ; B 21 -102 514 744 ;
+C 37 ; WX 852 ; N percent ; B 49 -12 802 683 ;
+C 38 ; WX 704 ; N ampersand ; B 19 -12 665 684 ;
+C 39 ; WX 201 ; N quoteright ; B 51 442 227 714 ;
+C 40 ; WX 419 ; N parenleft ; B 79 -142 460 718 ;
+C 41 ; WX 419 ; N parenright ; B -67 -142 313 718 ;
+C 42 ; WX 500 ; N asterisk ; B 98 337 492 718 ;
+C 43 ; WX 833 ; N plus ; B 124 0 710 597 ;
+C 44 ; WX 278 ; N comma ; B -58 -169 149 107 ;
+C 45 ; WX 319 ; N hyphen ; B 22 207 260 275 ;
+C 46 ; WX 278 ; N period ; B 25 -6 145 114 ;
+C 47 ; WX 481 ; N slash ; B -111 -93 525 672 ;
+C 48 ; WX 556 ; N zero ; B 27 -12 528 683 ;
+C 49 ; WX 556 ; N one ; B 82 0 405 683 ;
+C 50 ; WX 556 ; N two ; B -22 0 518 684 ;
+C 51 ; WX 556 ; N three ; B 0 -12 512 684 ;
+C 52 ; WX 556 ; N four ; B -1 -38 524 678 ;
+C 53 ; WX 556 ; N five ; B 3 -13 519 672 ;
+C 54 ; WX 556 ; N six ; B 31 -13 501 716 ;
+C 55 ; WX 556 ; N seven ; B 44 -38 596 672 ;
+C 56 ; WX 556 ; N eight ; B 18 -18 518 685 ;
+C 57 ; WX 556 ; N nine ; B 28 -56 523 684 ;
+C 58 ; WX 319 ; N colon ; B 46 -6 235 478 ;
+C 59 ; WX 319 ; N semicolon ; B -33 -169 235 478 ;
+C 60 ; WX 833 ; N less ; B 128 37 704 560 ;
+C 61 ; WX 833 ; N equal ; B 124 175 710 421 ;
+C 62 ; WX 833 ; N greater ; B 129 37 704 560 ;
+C 63 ; WX 486 ; N question ; B 94 -9 446 683 ;
+C 64 ; WX 942 ; N at ; B 76 -154 871 693 ;
+C 65 ; WX 606 ; N A ; B -79 0 585 677 ;
+C 66 ; WX 588 ; N B ; B -29 0 543 672 ;
+C 67 ; WX 604 ; N C ; B 41 -12 622 683 ;
+C 68 ; WX 671 ; N D ; B -28 0 623 672 ;
+C 69 ; WX 546 ; N E ; B -25 0 554 672 ;
+C 70 ; WX 509 ; N F ; B -27 0 540 671 ;
+C 71 ; WX 664 ; N G ; B 39 -12 650 684 ;
+C 72 ; WX 712 ; N H ; B -29 0 741 672 ;
+C 73 ; WX 312 ; N I ; B -23 0 333 672 ;
+C 74 ; WX 447 ; N J ; B -43 -12 472 672 ;
+C 75 ; WX 625 ; N K ; B -30 -5 660 672 ;
+C 76 ; WX 498 ; N L ; B -29 0 453 672 ;
+C 77 ; WX 839 ; N M ; B -28 0 868 672 ;
+C 78 ; WX 683 ; N N ; B -31 0 720 672 ;
+C 79 ; WX 708 ; N O ; B 40 -13 669 683 ;
+C 80 ; WX 542 ; N P ; B -29 0 543 672 ;
+C 81 ; WX 708 ; N Q ; B 40 -160 700 682 ;
+C 82 ; WX 602 ; N R ; B -30 -6 591 671 ;
+C 83 ; WX 537 ; N S ; B 9 -13 511 683 ;
+C 84 ; WX 565 ; N T ; B 43 0 610 672 ;
+C 85 ; WX 664 ; N U ; B 64 -12 705 672 ;
+C 86 ; WX 590 ; N V ; B 30 -6 649 672 ;
+C 87 ; WX 898 ; N W ; B 51 0 952 672 ;
+C 88 ; WX 569 ; N X ; B -83 0 633 672 ;
+C 89 ; WX 562 ; N Y ; B 31 0 642 672 ;
+C 90 ; WX 556 ; N Z ; B -26 0 572 672 ;
+C 91 ; WX 421 ; N bracketleft ; B 49 -133 448 709 ;
+C 92 ; WX 481 ; N backslash ; B 34 -93 489 672 ;
+C 93 ; WX 421 ; N bracketright ; B -45 -133 354 709 ;
+C 94 ; WX 1000 ; N asciicircum ; B 201 437 798 714 ;
+C 95 ; WX 500 ; N underscore ; B 0 -237 500 -178 ;
+C 96 ; WX 201 ; N quoteleft ; B 70 441 247 713 ;
+C 97 ; WX 525 ; N a ; B 17 -9 488 483 ;
+C 98 ; WX 507 ; N b ; B 24 -10 453 737 ;
+C 99 ; WX 394 ; N c ; B 14 -10 370 486 ;
+C 100 ; WX 523 ; N d ; B 20 -9 501 737 ;
+C 101 ; WX 424 ; N e ; B 20 -10 378 483 ;
+C 102 ; WX 292 ; N f ; B -151 -216 404 733 ;
+C 103 ; WX 481 ; N g ; B -31 -218 480 483 ;
+C 104 ; WX 551 ; N h ; B 23 -6 505 737 ;
+C 105 ; WX 287 ; N i ; B 32 -7 255 705 ;
+C 106 ; WX 269 ; N j ; B -128 -216 249 701 ;
+C 107 ; WX 514 ; N k ; B 25 -6 494 737 ;
+C 108 ; WX 275 ; N l ; B 35 -10 241 737 ;
+C 109 ; WX 815 ; N m ; B 31 -6 773 483 ;
+C 110 ; WX 556 ; N n ; B 32 -7 515 483 ;
+C 111 ; WX 502 ; N o ; B 21 -9 450 483 ;
+C 112 ; WX 516 ; N p ; B -70 -218 461 483 ;
+C 113 ; WX 512 ; N q ; B 24 -218 463 488 ;
+C 114 ; WX 398 ; N r ; B 27 0 400 482 ;
+C 115 ; WX 370 ; N s ; B -17 -9 324 483 ;
+C 116 ; WX 333 ; N t ; B 43 -7 337 580 ;
+C 117 ; WX 553 ; N u ; B 30 -9 513 483 ;
+C 118 ; WX 454 ; N v ; B -9 -2 435 484 ;
+C 119 ; WX 713 ; N w ; B -1 0 689 485 ;
+C 120 ; WX 477 ; N x ; B -47 -9 495 486 ;
+C 121 ; WX 475 ; N y ; B -113 -218 485 485 ;
+C 122 ; WX 440 ; N z ; B -15 -12 434 490 ;
+C 123 ; WX 486 ; N braceleft ; B 64 -135 418 703 ;
+C 124 ; WX 500 ; N bar ; B 219 -237 282 764 ;
+C 125 ; WX 486 ; N braceright ; B 64 -135 418 703 ;
+C 126 ; WX 833 ; N asciitilde ; B 86 225 747 371 ;
+C 161 ; WX 338 ; N exclamdown ; B 60 -9 278 683 ;
+C 162 ; WX 556 ; N cent ; B 41 -98 492 602 ;
+C 163 ; WX 556 ; N sterling ; B -22 0 547 683 ;
+C 164 ; WX 167 ; N fraction ; B -226 0 392 672 ;
+C 165 ; WX 556 ; N yen ; B 2 0 616 665 ;
+C 166 ; WX 556 ; N florin ; B -81 -169 563 683 ;
+C 167 ; WX 500 ; N section ; B 3 -141 475 718 ;
+C 168 ; WX 606 ; N currency ; B 41 171 566 694 ;
+C 169 ; WX 170 ; N quotesingle ; B 43 421 127 715 ;
+C 170 ; WX 403 ; N quotedblleft ; B 70 441 448 713 ;
+C 171 ; WX 442 ; N guillemotleft ; B 13 67 416 413 ;
+C 172 ; WX 245 ; N guilsinglleft ; B 13 67 218 413 ;
+C 173 ; WX 245 ; N guilsinglright ; B -7 67 199 413 ;
+C 174 ; WX 574 ; N fi ; B -151 -216 547 733 ;
+C 175 ; WX 579 ; N fl ; B -151 -216 544 737 ;
+C 177 ; WX 500 ; N endash ; B -25 210 488 271 ;
+C 178 ; WX 500 ; N dagger ; B 45 -130 512 718 ;
+C 179 ; WX 500 ; N daggerdbl ; B -27 -132 512 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 79 276 199 396 ;
+C 182 ; WX 484 ; N paragraph ; B 25 -79 459 672 ;
+C 183 ; WX 590 ; N bullet ; B 150 227 439 516 ;
+C 184 ; WX 201 ; N quotesinglbase ; B -65 -165 111 107 ;
+C 185 ; WX 403 ; N quotedblbase ; B -65 -165 313 107 ;
+C 186 ; WX 403 ; N quotedblright ; B 51 442 429 714 ;
+C 187 ; WX 442 ; N guillemotright ; B -7 67 397 413 ;
+C 188 ; WX 1000 ; N ellipsis ; B 52 -6 840 114 ;
+C 189 ; WX 1225 ; N perthousand ; B 49 -12 1175 683 ;
+C 191 ; WX 486 ; N questiondown ; B 27 -9 379 683 ;
+C 193 ; WX 500 ; N grave ; B 181 546 341 737 ;
+C 194 ; WX 500 ; N acute ; B 252 546 485 737 ;
+C 195 ; WX 500 ; N circumflex ; B 148 546 433 737 ;
+C 196 ; WX 500 ; N tilde ; B 143 572 474 709 ;
+C 197 ; WX 500 ; N macron ; B 154 614 465 667 ;
+C 198 ; WX 500 ; N breve ; B 177 567 464 709 ;
+C 199 ; WX 500 ; N dotaccent ; B 248 584 361 697 ;
+C 200 ; WX 500 ; N dieresis ; B 163 589 452 692 ;
+C 202 ; WX 500 ; N ring ; B 209 557 426 774 ;
+C 203 ; WX 500 ; N cedilla ; B 61 -224 267 0 ;
+C 205 ; WX 500 ; N hungarumlaut ; B 175 546 569 737 ;
+C 206 ; WX 500 ; N ogonek ; B 90 -217 235 0 ;
+C 207 ; WX 500 ; N caron ; B 184 545 470 736 ;
+C 208 ; WX 1000 ; N emdash ; B -19 210 991 271 ;
+C 225 ; WX 873 ; N AE ; B -115 0 879 672 ;
+C 227 ; WX 394 ; N ordfeminine ; B 12 325 366 671 ;
+C 232 ; WX 498 ; N Lslash ; B -29 0 453 672 ;
+C 233 ; WX 708 ; N Oslash ; B 41 -74 669 744 ;
+C 234 ; WX 1007 ; N OE ; B 40 -13 1004 682 ;
+C 235 ; WX 377 ; N ordmasculine ; B 15 325 338 671 ;
+C 241 ; WX 671 ; N ae ; B 1 -10 628 483 ;
+C 245 ; WX 287 ; N dotlessi ; B 32 -7 255 483 ;
+C 248 ; WX 275 ; N lslash ; B -14 -10 293 737 ;
+C 249 ; WX 502 ; N oslash ; B 22 -80 450 548 ;
+C 250 ; WX 750 ; N oe ; B 21 -9 704 483 ;
+C 251 ; WX 574 ; N germandbls ; B -151 -216 522 739 ;
+C -1 ; WX 606 ; N Aacute ; B -79 0 585 930 ;
+C -1 ; WX 606 ; N Acircumflex ; B -79 0 585 930 ;
+C -1 ; WX 606 ; N Adieresis ; B -79 0 585 885 ;
+C -1 ; WX 606 ; N Agrave ; B -79 0 585 930 ;
+C -1 ; WX 606 ; N Aring ; B -79 0 585 980 ;
+C -1 ; WX 606 ; N Atilde ; B -79 0 585 902 ;
+C -1 ; WX 604 ; N Ccedilla ; B 41 -224 622 683 ;
+C -1 ; WX 546 ; N Eacute ; B -25 0 554 930 ;
+C -1 ; WX 546 ; N Ecircumflex ; B -25 0 554 930 ;
+C -1 ; WX 546 ; N Edieresis ; B -25 0 554 885 ;
+C -1 ; WX 546 ; N Egrave ; B -25 0 554 930 ;
+C -1 ; WX 312 ; N Iacute ; B -23 0 418 930 ;
+C -1 ; WX 312 ; N Icircumflex ; B -23 0 366 930 ;
+C -1 ; WX 312 ; N Idieresis ; B -23 0 385 885 ;
+C -1 ; WX 312 ; N Igrave ; B -23 0 333 930 ;
+C -1 ; WX 683 ; N Ntilde ; B -31 0 720 902 ;
+C -1 ; WX 708 ; N Oacute ; B 40 -13 669 930 ;
+C -1 ; WX 708 ; N Ocircumflex ; B 40 -13 669 930 ;
+C -1 ; WX 708 ; N Odieresis ; B 40 -13 669 885 ;
+C -1 ; WX 708 ; N Ograve ; B 40 -13 669 930 ;
+C -1 ; WX 708 ; N Otilde ; B 40 -13 669 902 ;
+C -1 ; WX 537 ; N Scaron ; B 9 -13 516 929 ;
+C -1 ; WX 664 ; N Uacute ; B 64 -12 705 930 ;
+C -1 ; WX 664 ; N Ucircumflex ; B 64 -12 705 930 ;
+C -1 ; WX 664 ; N Udieresis ; B 64 -12 705 885 ;
+C -1 ; WX 664 ; N Ugrave ; B 64 -12 705 930 ;
+C -1 ; WX 562 ; N Ydieresis ; B 31 0 642 885 ;
+C -1 ; WX 556 ; N Zcaron ; B -26 0 572 929 ;
+C -1 ; WX 525 ; N aacute ; B 17 -9 498 737 ;
+C -1 ; WX 525 ; N acircumflex ; B 17 -9 488 737 ;
+C -1 ; WX 525 ; N adieresis ; B 17 -9 488 692 ;
+C -1 ; WX 525 ; N agrave ; B 17 -9 488 737 ;
+C -1 ; WX 525 ; N aring ; B 17 -9 488 762 ;
+C -1 ; WX 525 ; N atilde ; B 17 -9 488 709 ;
+C -1 ; WX 394 ; N ccedilla ; B 8 -224 370 486 ;
+C -1 ; WX 424 ; N eacute ; B 20 -10 460 737 ;
+C -1 ; WX 424 ; N ecircumflex ; B 20 -10 408 737 ;
+C -1 ; WX 424 ; N edieresis ; B 20 -10 427 692 ;
+C -1 ; WX 424 ; N egrave ; B 20 -10 378 737 ;
+C -1 ; WX 287 ; N iacute ; B 32 -7 379 737 ;
+C -1 ; WX 287 ; N icircumflex ; B 32 -7 327 737 ;
+C -1 ; WX 287 ; N idieresis ; B 32 -7 346 692 ;
+C -1 ; WX 287 ; N igrave ; B 32 -7 255 737 ;
+C -1 ; WX 556 ; N ntilde ; B 32 -7 515 709 ;
+C -1 ; WX 502 ; N oacute ; B 21 -9 486 737 ;
+C -1 ; WX 502 ; N ocircumflex ; B 21 -9 450 737 ;
+C -1 ; WX 502 ; N odieresis ; B 21 -9 453 692 ;
+C -1 ; WX 502 ; N ograve ; B 21 -9 450 737 ;
+C -1 ; WX 502 ; N otilde ; B 21 -9 475 709 ;
+C -1 ; WX 370 ; N scaron ; B -17 -9 405 736 ;
+C -1 ; WX 553 ; N uacute ; B 30 -9 513 737 ;
+C -1 ; WX 553 ; N ucircumflex ; B 30 -9 513 737 ;
+C -1 ; WX 553 ; N udieresis ; B 30 -9 513 692 ;
+C -1 ; WX 553 ; N ugrave ; B 30 -9 513 737 ;
+C -1 ; WX 475 ; N ydieresis ; B -113 -218 485 692 ;
+C -1 ; WX 440 ; N zcaron ; B -15 -12 440 736 ;
+C -1 ; WX 822 ; N trademark ; B 118 398 716 663 ;
+C -1 ; WX 900 ; N copyright ; B 66 -46 838 726 ;
+C -1 ; WX 833 ; N logicalnot ; B 124 174 710 419 ;
+C -1 ; WX 900 ; N registered ; B 66 -46 838 726 ;
+C -1 ; WX 833 ; N minus ; B 124 269 710 328 ;
+C -1 ; WX 671 ; N Eth ; B -28 0 624 672 ;
+C -1 ; WX 532 ; N Thorn ; B -30 0 518 672 ;
+C -1 ; WX 562 ; N Yacute ; B 31 0 642 930 ;
+C -1 ; WX 500 ; N brokenbar ; B 219 -172 282 699 ;
+C -1 ; WX 329 ; N degree ; B 26 434 303 710 ;
+C -1 ; WX 833 ; N divide ; B 124 66 710 531 ;
+C -1 ; WX 500 ; N eth ; B 21 -9 464 726 ;
+C -1 ; WX 547 ; N mu ; B -39 -204 532 433 ;
+C -1 ; WX 833 ; N multiply ; B 146 26 691 571 ;
+C -1 ; WX 867 ; N onehalf ; B 51 0 844 678 ;
+C -1 ; WX 867 ; N onequarter ; B 51 -22 848 678 ;
+C -1 ; WX 367 ; N onesuperior ; B 54 268 267 679 ;
+C -1 ; WX 833 ; N plusminus ; B 124 20 710 577 ;
+C -1 ; WX 516 ; N thorn ; B -70 -218 461 737 ;
+C -1 ; WX 868 ; N threequarters ; B 0 -22 848 679 ;
+C -1 ; WX 367 ; N threesuperior ; B 0 261 338 679 ;
+C -1 ; WX 367 ; N twosuperior ; B -15 268 342 679 ;
+C -1 ; WX 475 ; N yacute ; B -113 -218 485 737 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 280
+KPX hyphen T -37
+KPX hyphen V -56
+KPX hyphen W -56
+KPX hyphen X -37
+KPX hyphen Y -74
+KPX A quoteright -130
+KPX A colon 19
+KPX A semicolon 19
+KPX A S 19
+KPX A T -37
+KPX A U -23
+KPX A V -56
+KPX A W -42
+KPX A Y -42
+KPX A y -19
+KPX A quotedblright -130
+KPX B hyphen 56
+KPX B S 19
+KPX B V -19
+KPX B W -19
+KPX B Y -19
+KPX C quoteright 37
+KPX C hyphen 23
+KPX C S 19
+KPX C quotedblright 37
+KPX D hyphen 37
+KPX D A -19
+KPX D V -19
+KPX D W -19
+KPX D Y -28
+KPX D Aring -19
+KPX F comma -167
+KPX F hyphen -56
+KPX F period -167
+KPX F colon -37
+KPX F semicolon -37
+KPX F A -32
+KPX F a -42
+KPX F e -46
+KPX F o -46
+KPX F ae -42
+KPX F oslash -46
+KPX F oe -46
+KPX F Aring -32
+KPX G hyphen 19
+KPX J A -23
+KPX J Aring -23
+KPX K hyphen -37
+KPX K A -23
+KPX K C -28
+KPX K O -28
+KPX K U -37
+KPX K W -42
+KPX K Y -32
+KPX K a -19
+KPX K e -56
+KPX K o -56
+KPX K u -56
+KPX K y -83
+KPX K Oslash -28
+KPX K OE -28
+KPX K ae -19
+KPX K oslash -56
+KPX K oe -56
+KPX K Aring -23
+KPX L quoteright -185
+KPX L hyphen 56
+KPX L A 19
+KPX L T -74
+KPX L U -19
+KPX L V -102
+KPX L W -88
+KPX L Y -88
+KPX L u -19
+KPX L y -37
+KPX L quotesinglbase 19
+KPX L quotedblbase 19
+KPX L quotedblright -185
+KPX L Aring 19
+KPX O comma -37
+KPX O hyphen 19
+KPX O period -37
+KPX O V -19
+KPX O X -19
+KPX O Y -19
+KPX P comma -250
+KPX P hyphen -74
+KPX P period -250
+KPX P colon -19
+KPX P semicolon -19
+KPX P A -56
+KPX P U -19
+KPX P W -19
+KPX P Y -19
+KPX P a -37
+KPX P e -56
+KPX P o -51
+KPX P s -32
+KPX P ae -37
+KPX P oslash -51
+KPX P oe -51
+KPX P Aring -56
+KPX Q quoteright 19
+KPX Q hyphen 19
+KPX Q quotedblright 19
+KPX R quoteright -37
+KPX R comma 19
+KPX R hyphen -19
+KPX R period 19
+KPX R T -19
+KPX R V -19
+KPX R W -23
+KPX R Y -37
+KPX R quoteleft -19
+KPX R a -19
+KPX R e -19
+KPX R o -19
+KPX R y -19
+KPX R quotedblleft -19
+KPX R quotedblright -37
+KPX R ae -19
+KPX R oslash -19
+KPX R oe -19
+KPX S A 37
+KPX S G 19
+KPX S O 19
+KPX S Q 19
+KPX S S 19
+KPX S Oslash 19
+KPX S OE 19
+KPX S Aring 37
+KPX T comma -148
+KPX T hyphen -130
+KPX T period -148
+KPX T colon -37
+KPX T semicolon -37
+KPX T A -56
+KPX T T 19
+KPX T a -116
+KPX T c -97
+KPX T e -97
+KPX T i -19
+KPX T o -116
+KPX T r -74
+KPX T s -93
+KPX T u -93
+KPX T w -93
+KPX T y -74
+KPX T ae -116
+KPX T oslash -116
+KPX T oe -116
+KPX T Aring -56
+KPX U A -28
+KPX U J -19
+KPX U Z -19
+KPX U Aring -28
+KPX V comma -185
+KPX V hyphen -56
+KPX V period -185
+KPX V colon -93
+KPX V semicolon -93
+KPX V A -79
+KPX V O -19
+KPX V a -93
+KPX V e -93
+KPX V i -28
+KPX V o -60
+KPX V u -32
+KPX V y -46
+KPX V Oslash -19
+KPX V OE -19
+KPX V ae -93
+KPX V oslash -60
+KPX V oe -60
+KPX V Aring -79
+KPX W comma -134
+KPX W hyphen -37
+KPX W period -134
+KPX W colon -28
+KPX W semicolon -28
+KPX W A -28
+KPX W a -51
+KPX W e -74
+KPX W i -19
+KPX W o -51
+KPX W r -28
+KPX W u -28
+KPX W y -23
+KPX W ae -51
+KPX W oslash -51
+KPX W oe -51
+KPX W Aring -28
+KPX X hyphen -19
+KPX X A -19
+KPX X Aring -19
+KPX Y comma -130
+KPX Y hyphen -111
+KPX Y period -130
+KPX Y colon -106
+KPX Y semicolon -106
+KPX Y A -46
+KPX Y a -116
+KPX Y e -116
+KPX Y i -19
+KPX Y o -97
+KPX Y u -56
+KPX Y ae -116
+KPX Y oslash -97
+KPX Y oe -97
+KPX Y Aring -46
+KPX Z hyphen 37
+KPX quoteleft A -130
+KPX quoteleft J -130
+KPX quoteleft V 19
+KPX quoteleft AE -111
+KPX quoteleft Aring -130
+KPX f quoteright 93
+KPX f comma -83
+KPX f hyphen -19
+KPX f period -83
+KPX f quotedblright 93
+KPX r comma -130
+KPX r hyphen -19
+KPX r period -130
+KPX v comma -46
+KPX v hyphen 37
+KPX v period -46
+KPX w comma -56
+KPX w hyphen 19
+KPX w period -56
+KPX y comma -60
+KPX y hyphen 19
+KPX y period -60
+KPX quotedblleft A -130
+KPX quotedblleft J -130
+KPX quotedblleft V 19
+KPX quotedblleft AE -111
+KPX quotedblleft Aring -130
+KPX AE hyphen 19
+KPX Lslash quoteright -185
+KPX Lslash hyphen 56
+KPX Lslash A 19
+KPX Lslash T -74
+KPX Lslash U -19
+KPX Lslash V -102
+KPX Lslash W -88
+KPX Lslash Y -88
+KPX Lslash u -19
+KPX Lslash y -37
+KPX Lslash quotesinglbase 19
+KPX Lslash quotedblbase 19
+KPX Lslash quotedblright -185
+KPX Lslash Aring 19
+KPX Oslash comma -37
+KPX Oslash hyphen 19
+KPX Oslash period -37
+KPX Oslash V -19
+KPX Oslash X -19
+KPX Oslash Y -19
+KPX Aring quoteright -130
+KPX Aring colon 19
+KPX Aring semicolon 19
+KPX Aring S 19
+KPX Aring T -37
+KPX Aring U -23
+KPX Aring V -56
+KPX Aring W -42
+KPX Aring Y -42
+KPX Aring y -19
+KPX Aring quotedblright -130
+KPX Eth hyphen 37
+KPX Eth A -19
+KPX Eth V -19
+KPX Eth W -19
+KPX Eth Y -28
+KPX Eth Aring -19
+KPX Thorn quoteright -37
+KPX Thorn comma -148
+KPX Thorn period -148
+KPX Thorn quotedblright -37
+EndKernPairs
+StartTrackKern 3
+TrackKern -1 6 0.10 144 -2.09
+TrackKern -2 6 0.05 144 -4.02
+TrackKern -3 6 0.00 144 -5.96
+EndTrackKern
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbx10.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbx10.afm
new file mode 100644
index 00000000000..3e51f92b986
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbx10.afm
@@ -0,0 +1,751 @@
+StartFontMetrics 2.0
+FontName dcbx10
+FullName dcbx10
+FamilyName dcbx10
+Weight Medium
+ItalicAngle 0.000000
+IsFixedPitch false
+UnderlinePosition -133
+UnderlineThickness 20
+Version 1.0\(Level-B\)
+FontBBox -82, -308, 1212, 914
+Notice Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\nBaKoMa Fonts Collection, Level-B.
+EncodingScheme FontSpecific
+CapHeight 686
+XHeight 444
+Descender -194
+Ascender 694
+StartCharMetrics 256
+C 0 ; WX 574.83 ; N grave ; B 116 507 336 705 ;
+C 1 ; WX 574.83 ; N acute ; B 238 507 458 705 ;
+C 2 ; WX 574.83 ; N circumflex ; B 129 527 445 694 ;
+C 3 ; WX 574.83 ; N tilde ; B 96 577 478 694 ;
+C 4 ; WX 574.83 ; N dieresis ; B 101 546 473 695 ;
+C 5 ; WX 574.83 ; N hungarumlaut ; B 138 514 491 711 ;
+C 6 ; WX 869.22 ; N ring ; B 294 535 536 702 ;
+C 7 ; WX 574.83 ; N caron ; B 132 517 442 655 ;
+C 8 ; WX 574.83 ; N breve ; B 108 505 466 694 ;
+C 9 ; WX 574.83 ; N macron ; B 80 551 494 607 ;
+C 10 ; WX 319.39 ; N dotaccent ; B 79 535 239 695 ;
+C 11 ; WX 511 ; N cedilla ; B 132 -201 442 -11 ;
+C 12 ; WX 319.39 ; N ogonek ; B -10 -219 262 31 ;
+C 13 ; WX 319.39 ; N quotesinglbase ; B 78 -194 251 160 ;
+C 14 ; WX 511 ; N guilsinglleft ; B 109 40 375 432 ;
+C 15 ; WX 511 ; N guilsinglright ; B 109 40 419 432 ;
+C 16 ; WX 602.61 ; N quotedblleft ; B 132 340 564 694 ;
+C 17 ; WX 602.61 ; N quotedblright ; B 38 340 470 694 ;
+C 18 ; WX 602.61 ; N quotedblbase ; B 154 -194 586 160 ;
+C 19 ; WX 766.5 ; N guillemotleft ; B 109 40 630 432 ;
+C 20 ; WX 766.5 ; N guillemotright ; B 109 40 674 432 ;
+C 21 ; WX 574.83 ; N endash ; B 0 254 574 294 ; L hyphen emdash ;
+C 22 ; WX 1149.72 ; N emdash ; B 0 254 1149 294 ;
+C 23 ; WX 0 ; N compoundwordmark ; B 0 0 0 0 ;
+C 24 ; WX 447.11 ; N perthousand ; B 63 -56 383 347 ;
+C 25 ; WX 319.39 ; N dotlessi ; B 34 0 277 450 ;
+C 26 ; WX 351.28 ; N dotlessj ; B -82 -194 247 450 ;
+C 27 ; WX 670.67 ; N ff ; B 31 0 750 700 ; L i ffi ; L l ffl ;
+C 28 ; WX 638.72 ; N fi ; B 31 0 603 700 ;
+C 29 ; WX 638.72 ; N fl ; B 31 0 603 700 ;
+C 30 ; WX 958.11 ; N ffi ; B 31 0 923 700 ;
+C 31 ; WX 958.11 ; N ffl ; B 31 0 923 700 ;
+C 32 ; WX 574.83 ; N visiblespace ; B 48 -111 526 251 ;
+C 33 ; WX 349.89 ; N exclam ; B 94 0 256 705 ;
+C 34 ; WX 574.83 ; N quotedbl ; B 125 360 450 711 ;
+C 35 ; WX 958.11 ; N numbersign ; B 64 -194 893 694 ;
+C 36 ; WX 574.83 ; N dollar ; B 65 -56 511 750 ;
+C 37 ; WX 958.11 ; N percent ; B 64 -56 893 750 ;
+C 38 ; WX 894.22 ; N ampersand ; B 48 -11 836 705 ;
+C 39 ; WX 319.39 ; N quoteright ; B 79 340 255 694 ; L quoteright quotedblright ;
+C 40 ; WX 447.11 ; N parenleft ; B 107 -251 382 750 ;
+C 41 ; WX 447.11 ; N parenright ; B 64 -251 339 750 ;
+C 42 ; WX 574.83 ; N asterisk ; B 73 306 501 750 ;
+C 43 ; WX 894.22 ; N plus ; B 64 -134 829 633 ;
+C 44 ; WX 319.39 ; N comma ; B 79 -194 252 160 ; L comma quotedblbase ;
+C 45 ; WX 383.22 ; N hyphen ; B 13 172 318 273 ; L hyphen endash ;
+C 46 ; WX 319.39 ; N period ; B 79 0 239 160 ;
+C 47 ; WX 574.83 ; N slash ; B 64 -250 510 750 ;
+C 48 ; WX 574.83 ; N zero ; B 45 -11 529 655 ;
+C 49 ; WX 574.83 ; N one ; B 83 0 494 655 ;
+C 50 ; WX 574.83 ; N two ; B 57 0 517 655 ;
+C 51 ; WX 574.83 ; N three ; B 48 -11 526 655 ;
+C 52 ; WX 574.83 ; N four ; B 32 0 542 656 ;
+C 53 ; WX 574.83 ; N five ; B 57 -11 517 655 ;
+C 54 ; WX 574.83 ; N six ; B 48 -11 526 655 ;
+C 55 ; WX 574.83 ; N seven ; B 64 -11 558 676 ;
+C 56 ; WX 574.83 ; N eight ; B 48 -11 526 655 ;
+C 57 ; WX 574.83 ; N nine ; B 48 -11 526 655 ;
+C 58 ; WX 319.39 ; N colon ; B 79 0 239 444 ;
+C 59 ; WX 319.39 ; N semicolon ; B 79 -194 242 444 ;
+C 60 ; WX 894.22 ; N less ; B 96 -76 797 575 ; L less guillemotleft ;
+C 61 ; WX 894.22 ; N equal ; B 64 118 829 381 ;
+C 62 ; WX 894.22 ; N greater ; B 96 -76 797 575 ; L greater guillemotright ;
+C 63 ; WX 542.94 ; N question ; B 64 0 478 700 ;
+C 64 ; WX 894.22 ; N at ; B 64 0 829 700 ;
+C 65 ; WX 869.22 ; N A ; B 22 0 808 698 ;
+C 66 ; WX 817.83 ; N B ; B 20 0 734 686 ;
+C 67 ; WX 830.33 ; N C ; B 64 -11 765 697 ;
+C 68 ; WX 881.72 ; N D ; B 20 0 798 686 ;
+C 69 ; WX 755.39 ; N E ; B 20 0 703 680 ;
+C 70 ; WX 723.44 ; N F ; B 20 0 655 680 ;
+C 71 ; WX 904 ; N G ; B 64 -11 845 697 ;
+C 72 ; WX 899.78 ; N H ; B 20 0 841 686 ;
+C 73 ; WX 436 ; N I ; B 12 0 386 686 ;
+C 74 ; WX 594.28 ; N J ; B 19 -11 527 686 ;
+C 75 ; WX 901.17 ; N K ; B 20 0 833 686 ;
+C 76 ; WX 691.5 ; N L ; B 20 0 623 686 ;
+C 77 ; WX 1091.39 ; N M ; B 20 0 1032 686 ;
+C 78 ; WX 899.78 ; N N ; B 20 0 841 686 ;
+C 79 ; WX 863.67 ; N O ; B 64 -11 799 697 ;
+C 80 ; WX 785.94 ; N P ; B 20 0 702 686 ;
+C 81 ; WX 863.67 ; N Q ; B 64 -194 805 697 ;
+C 82 ; WX 862.28 ; N R ; B 20 -11 839 686 ;
+C 83 ; WX 638.72 ; N S ; B 64 -11 574 697 ;
+C 84 ; WX 799.78 ; N T ; B 43 0 758 675 ;
+C 85 ; WX 884.5 ; N U ; B 20 -11 826 686 ;
+C 86 ; WX 869.22 ; N V ; B 7 -8 823 686 ;
+C 87 ; WX 1188.61 ; N W ; B 5 -8 1145 686 ;
+C 88 ; WX 869.22 ; N X ; B 15 0 816 686 ;
+C 89 ; WX 869.22 ; N Y ; B 0 0 830 686 ;
+C 90 ; WX 702.61 ; N Z ; B 64 0 645 686 ;
+C 91 ; WX 319.39 ; N bracketleft ; B 102 -250 293 750 ;
+C 92 ; WX 574.83 ; N backslash ; B 64 -250 510 750 ;
+C 93 ; WX 319.39 ; N bracketright ; B 25 -250 216 750 ;
+C 94 ; WX 702.61 ; N asciicircum ; B 132 458 570 632 ;
+C 95 ; WX 894.22 ; N underscore ; B 96 -308 797 -247 ;
+C 96 ; WX 319.39 ; N quoteleft ; B 63 340 239 694 ; L quoteleft quotedblleft ;
+C 97 ; WX 558.89 ; N a ; B 32 0 558 453 ;
+C 98 ; WX 638.72 ; N b ; B 35 0 600 694 ;
+C 99 ; WX 511 ; N c ; B 38 0 478 453 ;
+C 100 ; WX 638.72 ; N d ; B 38 0 603 694 ;
+C 101 ; WX 527 ; N e ; B 32 0 494 453 ;
+C 102 ; WX 351.28 ; N f ; B 31 0 430 700 ; L i fi ; L f ff ; L l fl ;
+C 103 ; WX 574.83 ; N g ; B 32 -201 558 455 ;
+C 104 ; WX 638.72 ; N h ; B 32 0 606 694 ;
+C 105 ; WX 319.39 ; N i ; B 34 0 277 695 ;
+C 106 ; WX 351.28 ; N j ; B -82 -194 247 695 ;
+C 107 ; WX 606.78 ; N k ; B 35 0 587 694 ;
+C 108 ; WX 319.39 ; N l ; B 34 0 284 694 ;
+C 109 ; WX 958.11 ; N m ; B 32 0 927 444 ;
+C 110 ; WX 638.72 ; N n ; B 32 0 606 444 ;
+C 111 ; WX 574.83 ; N o ; B 32 0 542 453 ;
+C 112 ; WX 638.72 ; N p ; B 35 -194 600 444 ;
+C 113 ; WX 606.78 ; N q ; B 38 -194 603 444 ;
+C 114 ; WX 473.5 ; N r ; B 35 0 441 444 ;
+C 115 ; WX 453.5 ; N s ; B 38 0 415 453 ;
+C 116 ; WX 447.11 ; N t ; B 21 0 382 635 ;
+C 117 ; WX 638.72 ; N u ; B 32 0 606 450 ;
+C 118 ; WX 606.78 ; N v ; B 26 0 580 444 ;
+C 119 ; WX 830.33 ; N w ; B 25 0 804 444 ;
+C 120 ; WX 606.78 ; N x ; B 22 0 586 444 ;
+C 121 ; WX 606.78 ; N y ; B 22 -194 580 444 ;
+C 122 ; WX 511 ; N z ; B 32 0 462 444 ;
+C 123 ; WX 574.83 ; N braceleft ; B 76 -250 498 750 ;
+C 124 ; WX 319.39 ; N bar ; B 129 -250 190 750 ;
+C 125 ; WX 574.83 ; N braceright ; B 76 -250 498 750 ;
+C 126 ; WX 702.61 ; N asciitilde ; B 96 577 606 694 ;
+C 127 ; WX 383.22 ; N hyphen ; B 13 172 318 273 ;
+C 128 ; WX 869.22 ; N Abreve ; B 22 0 808 894 ;
+C 129 ; WX 869.22 ; N Aogonek ; B 22 -207 856 698 ;
+C 130 ; WX 830.33 ; N Cacute ; B 64 -11 765 905 ;
+C 131 ; WX 830.33 ; N Ccaron ; B 64 -11 765 864 ;
+C 132 ; WX 881.72 ; N Dcaron ; B 20 0 798 864 ;
+C 133 ; WX 755.39 ; N Ecaron ; B 20 0 703 863 ;
+C 134 ; WX 755.39 ; N Eogonek ; B 20 -207 703 680 ;
+C 135 ; WX 904 ; N Gbreve ; B 64 -11 845 894 ;
+C 136 ; WX 691.5 ; N Lacute ; B 20 0 623 905 ;
+C 137 ; WX 691.5 ; N Lquoteright ; B 20 0 647 686 ;
+C 138 ; WX 691.5 ; N Lslash ; B 20 0 623 686 ;
+C 139 ; WX 899.78 ; N Nacute ; B 20 0 841 905 ;
+C 140 ; WX 899.78 ; N Ncaron ; B 20 0 841 863 ;
+C 141 ; WX 841.44 ; N Eng ; B 32 -11 783 686 ;
+C 142 ; WX 863.67 ; N Ohungarumlaut ; B 64 -11 799 904 ;
+C 143 ; WX 862.28 ; N Racute ; B 20 -11 839 905 ;
+C 144 ; WX 862.28 ; N Rcaron ; B 20 -11 839 864 ;
+C 145 ; WX 638.72 ; N Sacute ; B 64 -11 574 905 ;
+C 146 ; WX 638.72 ; N Scaron ; B 64 -11 574 864 ;
+C 147 ; WX 638.72 ; N Scedilla ; B 64 -201 574 697 ;
+C 148 ; WX 799.78 ; N Tcaron ; B 43 0 758 863 ;
+C 149 ; WX 799.78 ; N Tcedilla ; B 43 -201 758 675 ;
+C 150 ; WX 884.5 ; N Uhungarumlaut ; B 20 -11 826 904 ;
+C 151 ; WX 884.5 ; N Uring ; B 20 -11 826 902 ;
+C 152 ; WX 869.22 ; N Ydieresis ; B 0 0 830 894 ;
+C 153 ; WX 702.61 ; N Zacute ; B 64 0 645 905 ;
+C 154 ; WX 702.61 ; N Zcaron ; B 64 0 645 864 ;
+C 155 ; WX 702.61 ; N Zdotaccent ; B 64 0 645 894 ;
+C 156 ; WX 1010.83 ; N IJ ; B 12 -11 925 686 ;
+C 157 ; WX 436 ; N Idotaccent ; B 12 0 386 902 ;
+C 158 ; WX 638.72 ; N dbar ; B 38 0 603 694 ;
+C 159 ; WX 529 ; N section ; B 80 -194 448 700 ;
+C 160 ; WX 558.89 ; N abreve ; B 32 0 558 694 ;
+C 161 ; WX 558.89 ; N aogonek ; B 32 -219 558 453 ;
+C 162 ; WX 511 ; N cacute ; B 38 0 478 664 ;
+C 163 ; WX 511 ; N ccaron ; B 38 0 478 623 ;
+C 164 ; WX 810.22 ; N dquoteright ; B 38 0 798 694 ;
+C 165 ; WX 527 ; N ecaron ; B 32 0 494 623 ;
+C 166 ; WX 527 ; N eogonek ; B 32 -219 494 453 ;
+C 167 ; WX 574.83 ; N gbreve ; B 32 -201 558 694 ;
+C 168 ; WX 319.39 ; N lacute ; B 34 0 332 914 ;
+C 169 ; WX 502 ; N lquoteright ; B 34 0 478 694 ;
+C 170 ; WX 319.39 ; N lslash ; B 4 0 314 694 ;
+C 171 ; WX 638.72 ; N nacute ; B 32 0 606 664 ;
+C 172 ; WX 638.72 ; N ncaron ; B 32 0 606 623 ;
+C 173 ; WX 638.72 ; N eng ; B 32 -194 537 444 ;
+C 174 ; WX 574.83 ; N ohungarumlaut ; B 32 0 606 663 ;
+C 175 ; WX 473.5 ; N racute ; B 35 0 441 664 ;
+C 176 ; WX 473.5 ; N rcaron ; B 35 0 441 623 ;
+C 177 ; WX 453.5 ; N sacute ; B 38 0 415 664 ;
+C 178 ; WX 453.5 ; N scaron ; B 38 0 415 622 ;
+C 179 ; WX 453.5 ; N scedilla ; B 38 -201 415 453 ;
+C 180 ; WX 506.83 ; N tquoteright ; B 21 0 494 708 ;
+C 181 ; WX 447.11 ; N tcedilla ; B 21 -201 430 635 ;
+C 182 ; WX 638.72 ; N uhungarumlaut ; B 32 0 638 663 ;
+C 183 ; WX 638.72 ; N uring ; B 32 0 606 661 ;
+C 184 ; WX 606.78 ; N ydieresis ; B 22 -194 580 652 ;
+C 185 ; WX 511 ; N zacute ; B 32 0 462 664 ;
+C 186 ; WX 511 ; N zcaron ; B 32 0 462 623 ;
+C 187 ; WX 511 ; N zdotaccent ; B 32 0 463 694 ;
+C 188 ; WX 670.67 ; N ij ; B 43 -194 574 695 ;
+C 189 ; WX 349.89 ; N exclamdown ; B 94 -205 256 500 ;
+C 190 ; WX 542.94 ; N questiondown ; B 64 -194 478 500 ;
+C 191 ; WX 734.56 ; N sterling ; B 64 0 725 706 ;
+C 192 ; WX 869.22 ; N Agrave ; B 22 0 808 905 ;
+C 193 ; WX 869.22 ; N Aacute ; B 22 0 808 905 ;
+C 194 ; WX 869.22 ; N Acircumflex ; B 22 0 808 894 ;
+C 195 ; WX 869.22 ; N Atilde ; B 22 0 808 894 ;
+C 196 ; WX 869.22 ; N Adieresis ; B 22 0 808 894 ;
+C 197 ; WX 869.22 ; N Aring ; B 22 0 808 861 ;
+C 198 ; WX 1041.39 ; N AE ; B 22 0 989 686 ;
+C 199 ; WX 830.33 ; N Ccedilla ; B 64 -201 765 697 ;
+C 200 ; WX 755.39 ; N Egrave ; B 20 0 703 905 ;
+C 201 ; WX 755.39 ; N Eacute ; B 20 0 703 905 ;
+C 202 ; WX 755.39 ; N Ecircumflex ; B 20 0 703 894 ;
+C 203 ; WX 755.39 ; N Edieresis ; B 20 0 703 894 ;
+C 204 ; WX 436 ; N Igrave ; B 12 0 386 905 ;
+C 205 ; WX 436 ; N Iacute ; B 12 0 386 905 ;
+C 206 ; WX 436 ; N Icircumflex ; B 12 0 386 894 ;
+C 207 ; WX 436 ; N Idieresis ; B 12 0 386 894 ;
+C 208 ; WX 881.72 ; N Eth ; B 20 0 798 686 ;
+C 209 ; WX 899.78 ; N Ntilde ; B 20 0 841 894 ;
+C 210 ; WX 863.67 ; N Ograve ; B 64 -11 799 905 ;
+C 211 ; WX 863.67 ; N Oacute ; B 64 -11 799 905 ;
+C 212 ; WX 863.67 ; N Ocircumflex ; B 64 -11 799 894 ;
+C 213 ; WX 863.67 ; N Otilde ; B 64 -11 799 894 ;
+C 214 ; WX 863.67 ; N Odieresis ; B 64 -11 799 894 ;
+C 215 ; WX 1169.17 ; N OE ; B 64 -11 1117 697 ;
+C 216 ; WX 894.22 ; N Oslash ; B 64 -61 829 747 ;
+C 217 ; WX 884.5 ; N Ugrave ; B 20 -11 826 905 ;
+C 218 ; WX 884.5 ; N Uacute ; B 20 -11 826 905 ;
+C 219 ; WX 884.5 ; N Ucircumflex ; B 20 -11 826 894 ;
+C 220 ; WX 884.5 ; N Udieresis ; B 20 -11 826 894 ;
+C 221 ; WX 869.22 ; N Yacute ; B 0 0 830 905 ;
+C 222 ; WX 722 ; N Thorn ; B 20 0 638 686 ;
+C 223 ; WX 1277.44 ; N Germandbls ; B 64 -11 1212 697 ;
+C 224 ; WX 558.89 ; N agrave ; B 32 0 558 664 ;
+C 225 ; WX 558.89 ; N aacute ; B 32 0 558 664 ;
+C 226 ; WX 558.89 ; N acircumflex ; B 32 0 558 653 ;
+C 227 ; WX 558.89 ; N atilde ; B 32 0 558 694 ;
+C 228 ; WX 558.89 ; N adieresis ; B 32 0 558 652 ;
+C 229 ; WX 558.89 ; N aring ; B 32 0 558 661 ;
+C 230 ; WX 830.33 ; N ae ; B 35 0 797 453 ;
+C 231 ; WX 511 ; N ccedilla ; B 38 -201 478 453 ;
+C 232 ; WX 527 ; N egrave ; B 32 0 494 664 ;
+C 233 ; WX 527 ; N eacute ; B 32 0 494 664 ;
+C 234 ; WX 527 ; N ecircumflex ; B 32 0 494 653 ;
+C 235 ; WX 527 ; N edieresis ; B 32 0 494 652 ;
+C 236 ; WX 319.39 ; N igrave ; B -14 0 277 664 ;
+C 237 ; WX 319.39 ; N iacute ; B 34 0 332 664 ;
+C 238 ; WX 319.39 ; N icircumflex ; B -1 0 319 653 ;
+C 239 ; WX 383.22 ; N idieresis ; B -27 0 346 652 ;
+C 240 ; WX 574.83 ; N eth ; B 32 0 542 694 ;
+C 241 ; WX 638.72 ; N ntilde ; B 32 0 606 694 ;
+C 242 ; WX 574.83 ; N ograve ; B 32 0 542 664 ;
+C 243 ; WX 574.83 ; N oacute ; B 32 0 542 664 ;
+C 244 ; WX 574.83 ; N ocircumflex ; B 32 0 542 653 ;
+C 245 ; WX 574.83 ; N otilde ; B 32 0 542 694 ;
+C 246 ; WX 574.83 ; N odieresis ; B 32 0 542 652 ;
+C 247 ; WX 894.22 ; N oe ; B 32 0 861 453 ;
+C 248 ; WX 574.83 ; N oslash ; B 32 -107 542 552 ;
+C 249 ; WX 638.72 ; N ugrave ; B 32 0 606 664 ;
+C 250 ; WX 638.72 ; N uacute ; B 32 0 606 664 ;
+C 251 ; WX 638.72 ; N ucircumflex ; B 32 0 606 653 ;
+C 252 ; WX 638.72 ; N udieresis ; B 32 0 606 652 ;
+C 253 ; WX 606.78 ; N yacute ; B 22 -194 580 664 ;
+C 254 ; WX 638.72 ; N thorn ; B 34 -212 600 694 ;
+C 255 ; WX 597.06 ; N germandbls ; B 35 0 564 700 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 471
+KPX A C -31.94
+KPX A G -31.94
+KPX A O -31.94
+KPX A Q -31.94
+KPX A T -95.81
+KPX A U -31.94
+KPX A V -127.75
+KPX A W -127.75
+KPX A Y -95.81
+KPX A t -31.94
+KPX Aacute C -31.94
+KPX Aacute G -31.94
+KPX Aacute O -31.94
+KPX Aacute Q -31.94
+KPX Aacute T -95.81
+KPX Aacute U -31.94
+KPX Aacute V -127.75
+KPX Aacute W -127.75
+KPX Aacute Y -95.81
+KPX Aacute t -31.94
+KPX Abreve C -31.94
+KPX Abreve G -31.94
+KPX Abreve O -31.94
+KPX Abreve Q -31.94
+KPX Abreve T -95.81
+KPX Abreve U -31.94
+KPX Abreve V -127.75
+KPX Abreve W -127.75
+KPX Abreve Y -95.81
+KPX Abreve t -31.94
+KPX Acircumflex C -31.94
+KPX Acircumflex G -31.94
+KPX Acircumflex O -31.94
+KPX Acircumflex Q -31.94
+KPX Acircumflex T -95.81
+KPX Acircumflex U -31.94
+KPX Acircumflex V -127.75
+KPX Acircumflex W -127.75
+KPX Acircumflex Y -95.81
+KPX Acircumflex t -31.94
+KPX Adieresis C -31.94
+KPX Adieresis G -31.94
+KPX Adieresis O -31.94
+KPX Adieresis Q -31.94
+KPX Adieresis T -95.81
+KPX Adieresis U -31.94
+KPX Adieresis V -127.75
+KPX Adieresis W -127.75
+KPX Adieresis Y -95.81
+KPX Adieresis t -31.94
+KPX Agrave C -31.94
+KPX Agrave G -31.94
+KPX Agrave O -31.94
+KPX Agrave Q -31.94
+KPX Agrave T -95.81
+KPX Agrave U -31.94
+KPX Agrave V -127.75
+KPX Agrave W -127.75
+KPX Agrave Y -95.81
+KPX Agrave t -31.94
+KPX Aogonek C -31.94
+KPX Aogonek G -31.94
+KPX Aogonek O -31.94
+KPX Aogonek Q -31.94
+KPX Aogonek T -95.81
+KPX Aogonek U -31.94
+KPX Aogonek V -127.75
+KPX Aogonek W -127.75
+KPX Aogonek Y -95.81
+KPX Aogonek t -31.94
+KPX Aring C -31.94
+KPX Aring G -31.94
+KPX Aring O -31.94
+KPX Aring Q -31.94
+KPX Aring T -95.81
+KPX Aring U -31.94
+KPX Aring V -127.75
+KPX Aring W -127.75
+KPX Aring Y -95.81
+KPX Aring t -31.94
+KPX Atilde C -31.94
+KPX Atilde G -31.94
+KPX Atilde O -31.94
+KPX Atilde Q -31.94
+KPX Atilde T -95.81
+KPX Atilde U -31.94
+KPX Atilde V -127.75
+KPX Atilde W -127.75
+KPX Atilde Y -95.81
+KPX Atilde t -31.94
+KPX D A -31.94
+KPX D V -31.94
+KPX D W -31.94
+KPX D X -31.94
+KPX D Y -31.94
+KPX F A -127.75
+KPX F C -31.94
+KPX F G -31.94
+KPX F O -31.94
+KPX F Q -31.94
+KPX F a -95.81
+KPX F e -95.81
+KPX F o -95.81
+KPX F r -95.81
+KPX F u -95.81
+KPX I I 31.94
+KPX K C -31.94
+KPX K G -31.94
+KPX K O -31.94
+KPX K Q -31.94
+KPX L T -95.81
+KPX L V -127.75
+KPX L W -127.75
+KPX L Y -95.81
+KPX O A -31.94
+KPX O V -31.94
+KPX O W -31.94
+KPX O X -31.94
+KPX O Y -31.94
+KPX P A -95.81
+KPX P a -31.94
+KPX P aacute -31.94
+KPX P acircumflex -31.94
+KPX P acircumflex -31.94
+KPX P adieresis -31.94
+KPX P ae -31.94
+KPX P agrave -31.94
+KPX P aogonek -31.94
+KPX P aring -31.94
+KPX P atilde -31.94
+KPX P cacute -31.94
+KPX P comma -95.81
+KPX P e -31.94
+KPX P eacute -31.94
+KPX P ecaron -31.94
+KPX P ecircumflex -31.94
+KPX P edieresis -31.94
+KPX P egrave -31.94
+KPX P eogonek -31.94
+KPX P o -31.94
+KPX P oacute -31.94
+KPX P ocircumflex -31.94
+KPX P odieresis -31.94
+KPX P oe -31.94
+KPX P ograve -31.94
+KPX P ohungarumlaut -31.94
+KPX P otilde -31.94
+KPX P period -95.81
+KPX R C -31.94
+KPX R G -31.94
+KPX R O -31.94
+KPX R Q -31.94
+KPX R T -95.81
+KPX R U -31.94
+KPX R V -127.75
+KPX R W -127.75
+KPX R Y -95.81
+KPX R t -31.94
+KPX T A -95.81
+KPX T a -95.81
+KPX T e -95.81
+KPX T o -95.81
+KPX T r -95.81
+KPX T u -95.81
+KPX T y -31.94
+KPX V A -127.75
+KPX V C -31.94
+KPX V G -31.94
+KPX V O -31.94
+KPX V Q -31.94
+KPX V a -95.81
+KPX V e -95.81
+KPX V o -95.81
+KPX V r -95.81
+KPX V u -95.81
+KPX W A -127.75
+KPX W C -31.94
+KPX W G -31.94
+KPX W O -31.94
+KPX W Q -31.94
+KPX W a -95.81
+KPX W e -95.81
+KPX W o -95.81
+KPX W r -95.81
+KPX W u -95.81
+KPX X C -31.94
+KPX X G -31.94
+KPX X O -31.94
+KPX X Q -31.94
+KPX Y A -95.81
+KPX Y a -95.81
+KPX Y e -95.81
+KPX Y o -95.81
+KPX Y r -95.81
+KPX Y u -95.81
+KPX a j 63.87
+KPX a v -31.94
+KPX a w -31.94
+KPX a y -31.94
+KPX b c 31.94
+KPX b cacute 31.94
+KPX b ccaron 31.94
+KPX b ccedilla 31.94
+KPX b d 31.94
+KPX b e 31.94
+KPX b eacute 31.94
+KPX b ecaron 31.94
+KPX b ecircumflex 31.94
+KPX b edieresis 31.94
+KPX b egrave 31.94
+KPX b eogonek 31.94
+KPX b j 63.87
+KPX b o 31.94
+KPX b oacute 31.94
+KPX b ocircumflex 31.94
+KPX b odieresis 31.94
+KPX b oe 31.94
+KPX b ograve 31.94
+KPX b ohungarumlaut 31.94
+KPX b otilde 31.94
+KPX b q 31.94
+KPX b v -31.94
+KPX b w -31.94
+KPX b x -31.94
+KPX b y -31.94
+KPX c h -31.94
+KPX c k -31.94
+KPX f bracketright 109
+KPX f exclam 109
+KPX f parenright 109
+KPX f question 109
+KPX f quoteright 109
+KPX ff bracketright 109
+KPX ff exclam 109
+KPX ff parenright 109
+KPX ff question 109
+KPX ff quoteright 109
+KPX g j 31.94
+KPX h b -31.94
+KPX h t -31.94
+KPX h u -31.94
+KPX h uacute -31.94
+KPX h ucircumflex -31.94
+KPX h udieresis -31.94
+KPX h ugrave -31.94
+KPX h uhungarumlaut -31.94
+KPX h uring -31.94
+KPX h v -31.94
+KPX h w -31.94
+KPX h y -31.94
+KPX k a -31.94
+KPX k a -63.87
+KPX k aacute -31.94
+KPX k aacute -63.87
+KPX k acircumflex -63.87
+KPX k acircumflex -63.87
+KPX k acircumflex -31.94
+KPX k acircumflex -31.94
+KPX k adieresis -31.94
+KPX k adieresis -63.87
+KPX k ae -63.87
+KPX k ae -31.94
+KPX k agrave -63.87
+KPX k agrave -31.94
+KPX k aogonek -63.87
+KPX k aogonek -31.94
+KPX k aring -63.87
+KPX k aring -31.94
+KPX k atilde -31.94
+KPX k atilde -63.87
+KPX k c -31.94
+KPX k cacute -31.94
+KPX k cacute -31.94
+KPX k cacute -63.87
+KPX k ccaron -31.94
+KPX k ccedilla -31.94
+KPX k e -31.94
+KPX k eacute -31.94
+KPX k ecaron -31.94
+KPX k ecircumflex -31.94
+KPX k edieresis -31.94
+KPX k egrave -31.94
+KPX k eogonek -31.94
+KPX k o -31.94
+KPX k oacute -31.94
+KPX k ocircumflex -31.94
+KPX k odieresis -31.94
+KPX k oe -31.94
+KPX k ograve -31.94
+KPX k ohungarumlaut -31.94
+KPX k otilde -31.94
+KPX m b -31.94
+KPX m t -31.94
+KPX m u -31.94
+KPX m uacute -31.94
+KPX m ucircumflex -31.94
+KPX m udieresis -31.94
+KPX m ugrave -31.94
+KPX m uhungarumlaut -31.94
+KPX m uring -31.94
+KPX m v -31.94
+KPX m w -31.94
+KPX m y -31.94
+KPX n b -31.94
+KPX n t -31.94
+KPX n u -31.94
+KPX n uacute -31.94
+KPX n ucircumflex -31.94
+KPX n udieresis -31.94
+KPX n ugrave -31.94
+KPX n uhungarumlaut -31.94
+KPX n uring -31.94
+KPX n v -31.94
+KPX n w -31.94
+KPX n y -31.94
+KPX o c 31.94
+KPX o cacute 31.94
+KPX o ccaron 31.94
+KPX o ccedilla 31.94
+KPX o d 31.94
+KPX o e 31.94
+KPX o eacute 31.94
+KPX o ecaron 31.94
+KPX o ecircumflex 31.94
+KPX o edieresis 31.94
+KPX o egrave 31.94
+KPX o eogonek 31.94
+KPX o j 63.87
+KPX o o 31.94
+KPX o oacute 31.94
+KPX o ocircumflex 31.94
+KPX o odieresis 31.94
+KPX o oe 31.94
+KPX o ograve 31.94
+KPX o ohungarumlaut 31.94
+KPX o otilde 31.94
+KPX o q 31.94
+KPX o v -31.94
+KPX o w -31.94
+KPX o x -31.94
+KPX o y -31.94
+KPX p c 31.94
+KPX p cacute 31.94
+KPX p ccaron 31.94
+KPX p ccedilla 31.94
+KPX p d 31.94
+KPX p e 31.94
+KPX p eacute 31.94
+KPX p ecaron 31.94
+KPX p ecircumflex 31.94
+KPX p edieresis 31.94
+KPX p egrave 31.94
+KPX p eogonek 31.94
+KPX p j 63.87
+KPX p o 31.94
+KPX p oacute 31.94
+KPX p ocircumflex 31.94
+KPX p odieresis 31.94
+KPX p oe 31.94
+KPX p ograve 31.94
+KPX p ohungarumlaut 31.94
+KPX p otilde 31.94
+KPX p q 31.94
+KPX p v -31.94
+KPX p w -31.94
+KPX p x -31.94
+KPX p y -31.94
+KPX quoteright exclam 127.75
+KPX quoteright question 127.75
+KPX t w -31.94
+KPX t y -31.94
+KPX u w -31.94
+KPX v a -31.94
+KPX v a -63.87
+KPX v aacute -31.94
+KPX v aacute -63.87
+KPX v acircumflex -63.87
+KPX v acircumflex -31.94
+KPX v acircumflex -31.94
+KPX v acircumflex -63.87
+KPX v adieresis -31.94
+KPX v adieresis -63.87
+KPX v ae -31.94
+KPX v ae -63.87
+KPX v agrave -31.94
+KPX v agrave -63.87
+KPX v aogonek -63.87
+KPX v aogonek -31.94
+KPX v aring -63.87
+KPX v aring -31.94
+KPX v atilde -63.87
+KPX v atilde -31.94
+KPX v c -31.94
+KPX v cacute -63.87
+KPX v cacute -31.94
+KPX v cacute -31.94
+KPX v ccaron -31.94
+KPX v ccedilla -31.94
+KPX v e -31.94
+KPX v eacute -31.94
+KPX v ecaron -31.94
+KPX v ecircumflex -31.94
+KPX v edieresis -31.94
+KPX v egrave -31.94
+KPX v eogonek -31.94
+KPX v o -31.94
+KPX v oacute -31.94
+KPX v ocircumflex -31.94
+KPX v odieresis -31.94
+KPX v oe -31.94
+KPX v ograve -31.94
+KPX v ohungarumlaut -31.94
+KPX v otilde -31.94
+KPX w a -31.94
+KPX w aacute -31.94
+KPX w acircumflex -31.94
+KPX w acircumflex -31.94
+KPX w adieresis -31.94
+KPX w ae -31.94
+KPX w agrave -31.94
+KPX w aogonek -31.94
+KPX w aring -31.94
+KPX w atilde -31.94
+KPX w c -31.94
+KPX w cacute -31.94
+KPX w cacute -31.94
+KPX w ccaron -31.94
+KPX w ccedilla -31.94
+KPX w e -31.94
+KPX w eacute -31.94
+KPX w ecaron -31.94
+KPX w ecircumflex -31.94
+KPX w edieresis -31.94
+KPX w egrave -31.94
+KPX w eogonek -31.94
+KPX w o -31.94
+KPX w oacute -31.94
+KPX w ocircumflex -31.94
+KPX w odieresis -31.94
+KPX w oe -31.94
+KPX w ograve -31.94
+KPX w ohungarumlaut -31.94
+KPX w otilde -31.94
+KPX y a -31.94
+KPX y aacute -31.94
+KPX y acircumflex -31.94
+KPX y acircumflex -31.94
+KPX y adieresis -31.94
+KPX y ae -31.94
+KPX y agrave -31.94
+KPX y aogonek -31.94
+KPX y aring -31.94
+KPX y atilde -31.94
+KPX y cacute -31.94
+KPX y comma -95.81
+KPX y e -31.94
+KPX y eacute -31.94
+KPX y ecaron -31.94
+KPX y ecircumflex -31.94
+KPX y edieresis -31.94
+KPX y egrave -31.94
+KPX y eogonek -31.94
+KPX y o -31.94
+KPX y oacute -31.94
+KPX y ocircumflex -31.94
+KPX y odieresis -31.94
+KPX y oe -31.94
+KPX y ograve -31.94
+KPX y ohungarumlaut -31.94
+KPX y otilde -31.94
+KPX y period -95.81
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbxti10.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbxti10.afm
new file mode 100644
index 00000000000..a808627df1f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcbxti10.afm
@@ -0,0 +1,2341 @@
+StartFontMetrics 2.0
+FontName dcbxti10
+FullName dcbxti10
+FamilyName dcbxti10
+Weight Medium
+ItalicAngle 0.000000
+IsFixedPitch false
+UnderlinePosition -133
+UnderlineThickness 20
+Version 1.0\(Level-B\)
+FontBBox -60, -308, 1261, 911
+Notice Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\nBaKoMa Fonts Collection, Level-B.
+EncodingScheme FontSpecific
+CapHeight 686
+XHeight 444
+Descender -194
+Ascender 694
+StartCharMetrics 256
+C 0 ; WX 591 ; N grave ; B 272 500 455 699 ;
+C 1 ; WX 591 ; N acute ; B 342 500 578 699 ;
+C 2 ; WX 591 ; N circumflex ; B 246 521 562 694 ;
+C 3 ; WX 591 ; N tilde ; B 236 572 609 694 ;
+C 4 ; WX 591 ; N dieresis ; B 247 555 595 695 ;
+C 5 ; WX 591 ; N hungarumlaut ; B 252 504 609 702 ;
+C 6 ; WX 948.67 ; N ring ; B 462 544 701 711 ;
+C 7 ; WX 591 ; N caron ; B 259 500 572 642 ;
+C 8 ; WX 591 ; N breve ; B 263 513 600 694 ;
+C 9 ; WX 591 ; N macron ; B 218 557 603 611 ;
+C 10 ; WX 355.44 ; N dotaccent ; B 224 544 379 695 ;
+C 11 ; WX 532.11 ; N cedilla ; B 78 -189 383 19 ;
+C 12 ; WX 355.44 ; N ogonek ; B -29 -194 232 36 ;
+C 13 ; WX 355.44 ; N quotesinglbase ; B 52 -194 242 151 ;
+C 14 ; WX 532.11 ; N guilsinglleft ; B 159 40 452 432 ;
+C 15 ; WX 532.11 ; N guilsinglright ; B 115 40 447 432 ;
+C 16 ; WX 620.39 ; N quotedblleft ; B 231 349 663 694 ;
+C 17 ; WX 620.39 ; N quotedblright ; B 156 349 588 694 ;
+C 18 ; WX 620.39 ; N quotedblbase ; B 127 -194 559 151 ;
+C 19 ; WX 767.61 ; N guillemotleft ; B 159 40 688 432 ;
+C 20 ; WX 767.61 ; N guillemotright ; B 115 40 683 432 ;
+C 21 ; WX 591 ; N endash ; B 68 254 598 294 ; L hyphen emdash ;
+C 22 ; WX 1181.94 ; N emdash ; B 68 254 1127 294 ;
+C 23 ; WX 0 ; N compoundwordmark ; B 0 0 0 0 ;
+C 24 ; WX 473.22 ; N perthousand ; B 85 -56 400 347 ;
+C 25 ; WX 355.44 ; N dotlessi ; B 44 -8 360 452 ;
+C 26 ; WX 384.89 ; N dotlessj ; B -60 -202 346 452 ;
+C 27 ; WX 755.39 ; N ff ; B -49 -202 861 702 ; L i ffi ; L l ffl ;
+C 28 ; WX 674.28 ; N fi ; B -49 -202 679 702 ;
+C 29 ; WX 703.72 ; N fl ; B -49 -202 720 702 ;
+C 30 ; WX 1044.44 ; N ffi ; B -49 -202 1049 702 ;
+C 31 ; WX 1059.17 ; N ffl ; B -49 -202 1075 702 ;
+C 32 ; WX 591 ; N visiblespace ; B 19 -111 545 251 ;
+C 33 ; WX 386 ; N exclam ; B 104 0 400 711 ;
+C 34 ; WX 591 ; N quotedbl ; B 245 342 579 706 ;
+C 35 ; WX 944.22 ; N numbersign ; B 94 -194 913 694 ;
+C 36 ; WX 591 ; N dollar ; B 99 -56 606 750 ;
+C 37 ; WX 944.22 ; N percent ; B 141 -56 915 750 ;
+C 38 ; WX 885.33 ; N ampersand ; B 110 -17 865 711 ;
+C 39 ; WX 355.44 ; N quoteright ; B 192 349 385 694 ; L quoteright quotedblright ;
+C 40 ; WX 473.22 ; N parenleft ; B 136 -251 536 750 ;
+C 41 ; WX 473.22 ; N parenright ; B 0 -251 400 750 ;
+C 42 ; WX 591 ; N asterisk ; B 176 306 617 750 ;
+C 43 ; WX 885.33 ; N plus ; B 121 -104 826 603 ;
+C 44 ; WX 355.44 ; N comma ; B 56 -194 246 151 ; L comma quotedblbase ;
+C 45 ; WX 414.33 ; N hyphen ; B 60 174 356 271 ; L hyphen endash ;
+C 46 ; WX 355.44 ; N period ; B 88 0 243 151 ;
+C 47 ; WX 591 ; N slash ; B 2 -250 653 750 ;
+C 48 ; WX 591 ; N zero ; B 82 -17 607 661 ;
+C 49 ; WX 591 ; N one ; B 93 0 489 661 ;
+C 50 ; WX 591 ; N two ; B 57 -17 587 661 ;
+C 51 ; WX 591 ; N three ; B 77 -17 597 661 ;
+C 52 ; WX 591 ; N four ; B 23 -194 516 661 ;
+C 53 ; WX 591 ; N five ; B 88 -17 597 661 ;
+C 54 ; WX 591 ; N six ; B 101 -17 596 661 ;
+C 55 ; WX 591 ; N seven ; B 110 -17 677 661 ;
+C 56 ; WX 591 ; N eight ; B 79 -17 587 661 ;
+C 57 ; WX 591 ; N nine ; B 94 -17 590 661 ;
+C 58 ; WX 355.44 ; N colon ; B 88 0 316 444 ;
+C 59 ; WX 355.44 ; N semicolon ; B 56 -194 316 444 ;
+C 60 ; WX 885.33 ; N less ; B 150 -76 874 575 ; L less guillemotleft ;
+C 61 ; WX 885.33 ; N equal ; B 94 118 855 381 ;
+C 62 ; WX 885.33 ; N greater ; B 74 -76 797 575 ; L greater guillemotright ;
+C 63 ; WX 591 ; N question ; B 183 0 583 711 ;
+C 64 ; WX 885.33 ; N at ; B 133 -8 864 702 ;
+C 65 ; WX 865.33 ; N A ; B 22 0 755 711 ;
+C 66 ; WX 816.44 ; N B ; B 14 0 780 686 ;
+C 67 ; WX 826.44 ; N C ; B 132 -17 877 703 ;
+C 68 ; WX 875.33 ; N D ; B 14 0 834 686 ;
+C 69 ; WX 756.5 ; N E ; B 14 0 754 680 ;
+C 70 ; WX 727 ; N F ; B 14 0 740 680 ;
+C 71 ; WX 895.06 ; N G ; B 132 -17 877 703 ;
+C 72 ; WX 895.89 ; N H ; B 14 0 953 686 ;
+C 73 ; WX 471.56 ; N I ; B 7 0 537 686 ;
+C 74 ; WX 610.39 ; N J ; B 37 -17 659 686 ;
+C 75 ; WX 894.78 ; N K ; B 14 0 922 686 ;
+C 76 ; WX 697.61 ; N L ; B 14 0 638 686 ;
+C 77 ; WX 1072.5 ; N M ; B 14 0 1130 686 ;
+C 78 ; WX 895.89 ; N N ; B 14 0 953 686 ;
+C 79 ; WX 854.78 ; N O ; B 129 -17 834 703 ;
+C 80 ; WX 787 ; N P ; B 14 0 775 686 ;
+C 81 ; WX 854.78 ; N Q ; B 129 -194 834 703 ;
+C 82 ; WX 859.22 ; N R ; B 14 -17 800 686 ;
+C 83 ; WX 649.83 ; N S ; B 58 -17 672 703 ;
+C 84 ; WX 795.94 ; N T ; B 148 0 841 675 ;
+C 85 ; WX 880.61 ; N U ; B 168 -17 938 686 ;
+C 86 ; WX 865.33 ; N V ; B 167 -17 928 686 ;
+C 87 ; WX 1159.72 ; N W ; B 166 -17 1224 686 ;
+C 88 ; WX 865.33 ; N X ; B 16 0 877 686 ;
+C 89 ; WX 865.33 ; N Y ; B 161 0 934 686 ;
+C 90 ; WX 708.72 ; N Z ; B 63 0 756 686 ;
+C 91 ; WX 356 ; N bracketleft ; B 36 -250 454 750 ;
+C 92 ; WX 591 ; N backslash ; B 242 -250 413 750 ;
+C 93 ; WX 356 ; N bracketright ; B -35 -250 383 750 ;
+C 94 ; WX 708.72 ; N asciicircum ; B 231 452 662 632 ;
+C 95 ; WX 885.33 ; N underscore ; B 19 -308 666 -247 ;
+C 96 ; WX 355.44 ; N quoteleft ; B 169 349 362 694 ; L quoteleft quotedblleft ;
+C 97 ; WX 591 ; N a ; B 73 -8 596 452 ;
+C 98 ; WX 532.11 ; N b ; B 79 -8 508 694 ;
+C 99 ; WX 532.11 ; N c ; B 74 -8 505 452 ;
+C 100 ; WX 591 ; N d ; B 73 -8 606 694 ;
+C 101 ; WX 532.11 ; N e ; B 77 -8 505 452 ;
+C 102 ; WX 399.89 ; N f ; B -49 -202 506 702 ; L i fi ; L f ff ; L l fl ;
+C 103 ; WX 532.11 ; N g ; B 26 -202 534 452 ;
+C 104 ; WX 591 ; N h ; B 43 -8 596 694 ;
+C 105 ; WX 355.44 ; N i ; B 44 -8 360 694 ;
+C 106 ; WX 355.44 ; N j ; B -60 -202 383 694 ;
+C 107 ; WX 532.11 ; N k ; B 43 -8 537 694 ;
+C 108 ; WX 296.61 ; N l ; B 57 -8 312 694 ;
+C 109 ; WX 944.22 ; N m ; B 44 -8 949 452 ;
+C 110 ; WX 649.83 ; N n ; B 44 -8 655 452 ;
+C 111 ; WX 591 ; N o ; B 75 -8 566 452 ;
+C 112 ; WX 591 ; N p ; B -8 -194 567 452 ;
+C 113 ; WX 532.11 ; N q ; B 73 -194 546 452 ;
+C 114 ; WX 501.56 ; N r ; B 44 -8 529 452 ;
+C 115 ; WX 486.83 ; N s ; B 54 -8 455 452 ;
+C 116 ; WX 384.89 ; N t ; B 59 -8 390 643 ;
+C 117 ; WX 620.39 ; N u ; B 44 -8 625 452 ;
+C 118 ; WX 532.11 ; N v ; B 44 -8 524 453 ;
+C 119 ; WX 767.61 ; N w ; B 44 -8 760 453 ;
+C 120 ; WX 560.44 ; N x ; B 39 -8 570 452 ;
+C 121 ; WX 561.56 ; N y ; B 44 -202 566 452 ;
+C 122 ; WX 490.44 ; N z ; B 31 -8 509 452 ;
+C 123 ; WX 591 ; N braceleft ; B 129 -250 645 750 ;
+C 124 ; WX 355.44 ; N bar ; B 61 -250 357 750 ;
+C 125 ; WX 591 ; N braceright ; B 9 -250 525 750 ;
+C 126 ; WX 708.72 ; N asciitilde ; B 236 572 727 694 ;
+C 127 ; WX 414.33 ; N hyphen ; B 60 174 356 271 ;
+C 128 ; WX 865.33 ; N Abreve ; B 22 0 769 894 ;
+C 129 ; WX 865.33 ; N Aogonek ; B 22 -182 784 711 ;
+C 130 ; WX 826.44 ; N Cacute ; B 132 -17 877 899 ;
+C 131 ; WX 826.44 ; N Ccaron ; B 132 -17 877 843 ;
+C 132 ; WX 875.33 ; N Dcaron ; B 14 0 834 843 ;
+C 133 ; WX 756.5 ; N Ecaron ; B 14 0 754 843 ;
+C 134 ; WX 756.5 ; N Eogonek ; B 14 -182 754 680 ;
+C 135 ; WX 895.06 ; N Gbreve ; B 132 -17 877 894 ;
+C 136 ; WX 697.61 ; N Lacute ; B 14 0 674 899 ;
+C 137 ; WX 697.61 ; N Lquoteright ; B 14 0 764 686 ;
+C 138 ; WX 697.61 ; N Lslash ; B 14 0 638 686 ;
+C 139 ; WX 895.89 ; N Nacute ; B 14 0 953 899 ;
+C 140 ; WX 895.89 ; N Ncaron ; B 14 0 953 843 ;
+C 141 ; WX 837.56 ; N Eng ; B 22 -17 862 694 ;
+C 142 ; WX 854.78 ; N Ohungarumlaut ; B 129 -17 896 899 ;
+C 143 ; WX 859.22 ; N Racute ; B 14 -17 800 899 ;
+C 144 ; WX 859.22 ; N Rcaron ; B 14 -17 800 843 ;
+C 145 ; WX 649.83 ; N Sacute ; B 58 -17 672 899 ;
+C 146 ; WX 649.83 ; N Scaron ; B 58 -17 672 843 ;
+C 147 ; WX 649.83 ; N Scedilla ; B 58 -189 672 703 ;
+C 148 ; WX 795.94 ; N Tcaron ; B 148 0 841 843 ;
+C 149 ; WX 795.94 ; N Tcedilla ; B 148 -189 841 675 ;
+C 150 ; WX 880.61 ; N Uhungarumlaut ; B 168 -17 938 899 ;
+C 151 ; WX 880.61 ; N Uring ; B 168 -17 938 911 ;
+C 152 ; WX 865.33 ; N Ydieresis ; B 161 0 934 894 ;
+C 153 ; WX 708.72 ; N Zacute ; B 63 0 756 899 ;
+C 154 ; WX 708.72 ; N Zcaron ; B 63 0 756 843 ;
+C 155 ; WX 708.72 ; N Zdotaccent ; B 63 0 756 894 ;
+C 156 ; WX 1001.44 ; N IJ ; B 7 -17 1031 686 ;
+C 157 ; WX 471.56 ; N Idotaccent ; B 7 0 537 902 ;
+C 158 ; WX 591 ; N dbar ; B 73 -8 626 694 ;
+C 159 ; WX 549.33 ; N section ; B 66 -202 546 702 ;
+C 160 ; WX 591 ; N abreve ; B 73 -8 596 653 ;
+C 161 ; WX 591 ; N aogonek ; B 73 -194 596 452 ;
+C 162 ; WX 532.11 ; N cacute ; B 74 -8 539 658 ;
+C 163 ; WX 532.11 ; N ccaron ; B 74 -8 563 602 ;
+C 164 ; WX 591 ; N dquoteright ; B 73 -8 830 694 ;
+C 165 ; WX 532.11 ; N ecaron ; B 77 -8 533 602 ;
+C 166 ; WX 532.11 ; N eogonek ; B 77 -179 505 452 ;
+C 167 ; WX 532.11 ; N gbreve ; B 26 -202 561 653 ;
+C 168 ; WX 296.61 ; N lacute ; B 57 -8 485 908 ;
+C 169 ; WX 296.61 ; N lquoteright ; B 57 -8 536 694 ;
+C 170 ; WX 296.61 ; N lslash ; B 8 -8 338 694 ;
+C 171 ; WX 649.83 ; N nacute ; B 44 -8 655 658 ;
+C 172 ; WX 649.83 ; N ncaron ; B 44 -8 655 602 ;
+C 173 ; WX 649.83 ; N eng ; B 44 -202 575 452 ;
+C 174 ; WX 591 ; N ohungarumlaut ; B 75 -8 704 658 ;
+C 175 ; WX 501.56 ; N racute ; B 44 -8 529 658 ;
+C 176 ; WX 501.56 ; N rcaron ; B 44 -8 529 602 ;
+C 177 ; WX 486.83 ; N sacute ; B 54 -8 517 658 ;
+C 178 ; WX 486.83 ; N scaron ; B 54 -8 510 602 ;
+C 179 ; WX 486.83 ; N scedilla ; B 26 -189 455 452 ;
+C 180 ; WX 384.89 ; N tquoteright ; B 59 -8 529 708 ;
+C 181 ; WX 384.89 ; N tcedilla ; B 20 -189 390 643 ;
+C 182 ; WX 620.39 ; N uhungarumlaut ; B 44 -8 719 658 ;
+C 183 ; WX 620.39 ; N uring ; B 44 -8 625 670 ;
+C 184 ; WX 561.56 ; N ydieresis ; B 44 -202 570 652 ;
+C 185 ; WX 490.44 ; N zacute ; B 31 -8 518 658 ;
+C 186 ; WX 490.44 ; N zcaron ; B 31 -8 512 602 ;
+C 187 ; WX 490.44 ; N zdotaccent ; B 31 -8 509 694 ;
+C 188 ; WX 649.83 ; N ij ; B 44 -202 678 694 ;
+C 189 ; WX 386 ; N exclamdown ; B 50 -211 346 500 ;
+C 190 ; WX 591 ; N questiondown ; B 71 -211 471 500 ;
+C 191 ; WX 868.33 ; N sterling ; B 70 -8 753 708 ;
+C 192 ; WX 865.33 ; N Agrave ; B 22 0 755 899 ;
+C 193 ; WX 865.33 ; N Aacute ; B 22 0 755 899 ;
+C 194 ; WX 865.33 ; N Acircumflex ; B 22 0 755 894 ;
+C 195 ; WX 865.33 ; N Atilde ; B 22 0 777 894 ;
+C 196 ; WX 865.33 ; N Adieresis ; B 22 0 763 894 ;
+C 197 ; WX 865.33 ; N Aring ; B 22 0 755 870 ;
+C 198 ; WX 1022.56 ; N AE ; B 23 0 1022 686 ;
+C 199 ; WX 826.44 ; N Ccedilla ; B 132 -189 877 703 ;
+C 200 ; WX 756.5 ; N Egrave ; B 14 0 754 899 ;
+C 201 ; WX 756.5 ; N Eacute ; B 14 0 754 899 ;
+C 202 ; WX 756.5 ; N Ecircumflex ; B 14 0 754 894 ;
+C 203 ; WX 756.5 ; N Edieresis ; B 14 0 754 894 ;
+C 204 ; WX 471.56 ; N Igrave ; B 7 0 537 899 ;
+C 205 ; WX 471.56 ; N Iacute ; B 7 0 551 899 ;
+C 206 ; WX 471.56 ; N Icircumflex ; B 7 0 537 894 ;
+C 207 ; WX 471.56 ; N Idieresis ; B 7 0 566 894 ;
+C 208 ; WX 875.33 ; N Eth ; B 14 0 834 686 ;
+C 209 ; WX 895.89 ; N Ntilde ; B 14 0 953 894 ;
+C 210 ; WX 854.78 ; N Ograve ; B 129 -17 834 899 ;
+C 211 ; WX 854.78 ; N Oacute ; B 129 -17 834 899 ;
+C 212 ; WX 854.78 ; N Ocircumflex ; B 129 -17 834 894 ;
+C 213 ; WX 854.78 ; N Otilde ; B 129 -17 834 894 ;
+C 214 ; WX 854.78 ; N Odieresis ; B 129 -17 834 894 ;
+C 215 ; WX 1140.28 ; N OE ; B 130 -17 1139 703 ;
+C 216 ; WX 885.33 ; N Oslash ; B 130 -69 863 755 ;
+C 217 ; WX 880.61 ; N Ugrave ; B 168 -17 938 899 ;
+C 218 ; WX 880.61 ; N Uacute ; B 168 -17 938 899 ;
+C 219 ; WX 880.61 ; N Ucircumflex ; B 168 -17 938 894 ;
+C 220 ; WX 880.61 ; N Udieresis ; B 168 -17 938 894 ;
+C 221 ; WX 865.33 ; N Yacute ; B 161 0 934 899 ;
+C 222 ; WX 728.17 ; N Thorn ; B 14 0 688 686 ;
+C 223 ; WX 1238.61 ; N Germandbls ; B 58 -17 1261 703 ;
+C 224 ; WX 591 ; N agrave ; B 73 -8 596 658 ;
+C 225 ; WX 591 ; N aacute ; B 73 -8 596 658 ;
+C 226 ; WX 591 ; N acircumflex ; B 73 -8 596 653 ;
+C 227 ; WX 591 ; N atilde ; B 73 -8 596 694 ;
+C 228 ; WX 591 ; N adieresis ; B 73 -8 596 652 ;
+C 229 ; WX 591 ; N aring ; B 73 -8 596 670 ;
+C 230 ; WX 826.44 ; N ae ; B 56 -8 797 452 ;
+C 231 ; WX 532.11 ; N ccedilla ; B 74 -189 505 452 ;
+C 232 ; WX 532.11 ; N egrave ; B 77 -8 505 658 ;
+C 233 ; WX 532.11 ; N eacute ; B 77 -8 505 658 ;
+C 234 ; WX 532.11 ; N ecircumflex ; B 77 -8 518 653 ;
+C 235 ; WX 532.11 ; N edieresis ; B 77 -8 555 652 ;
+C 236 ; WX 355.44 ; N igrave ; B 44 -8 360 658 ;
+C 237 ; WX 355.44 ; N iacute ; B 44 -8 451 658 ;
+C 238 ; WX 355.44 ; N icircumflex ; B 44 -8 387 653 ;
+C 239 ; WX 355.44 ; N idieresis ; B 44 -8 466 652 ;
+C 240 ; WX 591 ; N eth ; B 75 -8 582 694 ;
+C 241 ; WX 649.83 ; N ntilde ; B 44 -8 655 694 ;
+C 242 ; WX 591 ; N ograve ; B 75 -8 566 658 ;
+C 243 ; WX 591 ; N oacute ; B 75 -8 569 658 ;
+C 244 ; WX 591 ; N ocircumflex ; B 75 -8 566 653 ;
+C 245 ; WX 591 ; N otilde ; B 75 -8 609 694 ;
+C 246 ; WX 591 ; N odieresis ; B 75 -8 584 652 ;
+C 247 ; WX 826.44 ; N oe ; B 73 -14 797 458 ;
+C 248 ; WX 591 ; N oslash ; B 44 -116 596 561 ;
+C 249 ; WX 620.39 ; N ugrave ; B 44 -8 625 658 ;
+C 250 ; WX 620.39 ; N uacute ; B 44 -8 625 658 ;
+C 251 ; WX 620.39 ; N ucircumflex ; B 44 -8 625 653 ;
+C 252 ; WX 620.39 ; N udieresis ; B 44 -8 625 652 ;
+C 253 ; WX 561.56 ; N yacute ; B 44 -202 566 658 ;
+C 254 ; WX 591 ; N thorn ; B -24 -194 560 694 ;
+C 255 ; WX 664.83 ; N germandbls ; B -43 -202 660 702 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2061
+KPX A C -29.44
+KPX A Cacute -29.44
+KPX A Ccaron -29.44
+KPX A G -29.44
+KPX A Gbreve -29.44
+KPX A O -29.44
+KPX A Oacute -29.44
+KPX A Ocircumflex -29.44
+KPX A Odieresis -29.44
+KPX A Ograve -29.44
+KPX A Ohungarumlaut -29.44
+KPX A Oslash -29.44
+KPX A Otilde -29.44
+KPX A Q -29.44
+KPX A T -88.31
+KPX A Tcaron -88.31
+KPX A Tcedilla -88.31
+KPX A U -29.44
+KPX A Uacute -29.44
+KPX A Ucircumflex -29.44
+KPX A Udieresis -29.44
+KPX A Ugrave -29.44
+KPX A Uhungarumlaut -29.44
+KPX A Uring -29.44
+KPX A V -117.75
+KPX A W -117.75
+KPX A Y -88.31
+KPX A Ydieresis -88.31
+KPX A a -58.87
+KPX A aacute -58.87
+KPX A acircumflex -58.87
+KPX A acircumflex -58.87
+KPX A adieresis -58.87
+KPX A ae -58.87
+KPX A agrave -58.87
+KPX A aogonek -58.87
+KPX A aring -58.87
+KPX A atilde -58.87
+KPX A b -29.44
+KPX A c -58.87
+KPX A cacute -58.87
+KPX A cacute -58.87
+KPX A ccaron -58.87
+KPX A ccedilla -58.87
+KPX A d -58.87
+KPX A dbar -58.87
+KPX A e -58.87
+KPX A eacute -58.87
+KPX A ecaron -58.87
+KPX A ecircumflex -58.87
+KPX A edieresis -58.87
+KPX A egrave -58.87
+KPX A eogonek -58.87
+KPX A g -58.87
+KPX A gbreve -58.87
+KPX A h -29.44
+KPX A i -29.44
+KPX A iacute -29.44
+KPX A k -29.44
+KPX A l -29.44
+KPX A lacute -29.44
+KPX A lquoteright -29.44
+KPX A m -29.44
+KPX A n -29.44
+KPX A o -58.87
+KPX A oacute -58.87
+KPX A ocircumflex -58.87
+KPX A odieresis -58.87
+KPX A oe -58.87
+KPX A ograve -58.87
+KPX A ohungarumlaut -58.87
+KPX A oslash -58.87
+KPX A otilde -58.87
+KPX A q -58.87
+KPX A r -29.44
+KPX A t -29.44
+KPX A tcedilla -29.44
+KPX A tquoteright -29.44
+KPX A u -29.44
+KPX A uacute -29.44
+KPX A ucircumflex -29.44
+KPX A udieresis -29.44
+KPX A ugrave -29.44
+KPX A uhungarumlaut -29.44
+KPX A uring -29.44
+KPX A v -29.44
+KPX A w -29.44
+KPX Aacute C -29.44
+KPX Aacute Cacute -29.44
+KPX Aacute Ccaron -29.44
+KPX Aacute G -29.44
+KPX Aacute Gbreve -29.44
+KPX Aacute O -29.44
+KPX Aacute Oacute -29.44
+KPX Aacute Ocircumflex -29.44
+KPX Aacute Odieresis -29.44
+KPX Aacute Ograve -29.44
+KPX Aacute Ohungarumlaut -29.44
+KPX Aacute Oslash -29.44
+KPX Aacute Otilde -29.44
+KPX Aacute Q -29.44
+KPX Aacute T -88.31
+KPX Aacute Tcaron -88.31
+KPX Aacute Tcedilla -88.31
+KPX Aacute U -29.44
+KPX Aacute Uacute -29.44
+KPX Aacute Ucircumflex -29.44
+KPX Aacute Udieresis -29.44
+KPX Aacute Ugrave -29.44
+KPX Aacute Uhungarumlaut -29.44
+KPX Aacute Uring -29.44
+KPX Aacute V -117.75
+KPX Aacute W -117.75
+KPX Aacute Y -88.31
+KPX Aacute Ydieresis -88.31
+KPX Aacute a -58.87
+KPX Aacute aacute -58.87
+KPX Aacute acircumflex -58.87
+KPX Aacute acircumflex -58.87
+KPX Aacute adieresis -58.87
+KPX Aacute ae -58.87
+KPX Aacute agrave -58.87
+KPX Aacute aogonek -58.87
+KPX Aacute aring -58.87
+KPX Aacute atilde -58.87
+KPX Aacute b -29.44
+KPX Aacute c -58.87
+KPX Aacute cacute -58.87
+KPX Aacute cacute -58.87
+KPX Aacute ccaron -58.87
+KPX Aacute ccedilla -58.87
+KPX Aacute d -58.87
+KPX Aacute dbar -58.87
+KPX Aacute e -58.87
+KPX Aacute eacute -58.87
+KPX Aacute ecaron -58.87
+KPX Aacute ecircumflex -58.87
+KPX Aacute edieresis -58.87
+KPX Aacute egrave -58.87
+KPX Aacute eogonek -58.87
+KPX Aacute g -58.87
+KPX Aacute gbreve -58.87
+KPX Aacute h -29.44
+KPX Aacute i -29.44
+KPX Aacute iacute -29.44
+KPX Aacute k -29.44
+KPX Aacute l -29.44
+KPX Aacute lacute -29.44
+KPX Aacute lquoteright -29.44
+KPX Aacute m -29.44
+KPX Aacute n -29.44
+KPX Aacute o -58.87
+KPX Aacute oacute -58.87
+KPX Aacute ocircumflex -58.87
+KPX Aacute odieresis -58.87
+KPX Aacute oe -58.87
+KPX Aacute ograve -58.87
+KPX Aacute ohungarumlaut -58.87
+KPX Aacute oslash -58.87
+KPX Aacute otilde -58.87
+KPX Aacute q -58.87
+KPX Aacute r -29.44
+KPX Aacute t -29.44
+KPX Aacute tcedilla -29.44
+KPX Aacute tquoteright -29.44
+KPX Aacute u -29.44
+KPX Aacute uacute -29.44
+KPX Aacute ucircumflex -29.44
+KPX Aacute udieresis -29.44
+KPX Aacute ugrave -29.44
+KPX Aacute uhungarumlaut -29.44
+KPX Aacute uring -29.44
+KPX Aacute v -29.44
+KPX Aacute w -29.44
+KPX Abreve C -29.44
+KPX Abreve Cacute -29.44
+KPX Abreve Ccaron -29.44
+KPX Abreve G -29.44
+KPX Abreve Gbreve -29.44
+KPX Abreve O -29.44
+KPX Abreve Oacute -29.44
+KPX Abreve Ocircumflex -29.44
+KPX Abreve Odieresis -29.44
+KPX Abreve Ograve -29.44
+KPX Abreve Ohungarumlaut -29.44
+KPX Abreve Oslash -29.44
+KPX Abreve Otilde -29.44
+KPX Abreve Q -29.44
+KPX Abreve T -88.31
+KPX Abreve Tcaron -88.31
+KPX Abreve Tcedilla -88.31
+KPX Abreve U -29.44
+KPX Abreve Uacute -29.44
+KPX Abreve Ucircumflex -29.44
+KPX Abreve Udieresis -29.44
+KPX Abreve Ugrave -29.44
+KPX Abreve Uhungarumlaut -29.44
+KPX Abreve Uring -29.44
+KPX Abreve V -117.75
+KPX Abreve W -117.75
+KPX Abreve Y -88.31
+KPX Abreve Ydieresis -88.31
+KPX Abreve a -58.87
+KPX Abreve aacute -58.87
+KPX Abreve acircumflex -58.87
+KPX Abreve acircumflex -58.87
+KPX Abreve adieresis -58.87
+KPX Abreve ae -58.87
+KPX Abreve agrave -58.87
+KPX Abreve aogonek -58.87
+KPX Abreve aring -58.87
+KPX Abreve atilde -58.87
+KPX Abreve b -29.44
+KPX Abreve c -58.87
+KPX Abreve cacute -58.87
+KPX Abreve cacute -58.87
+KPX Abreve ccaron -58.87
+KPX Abreve ccedilla -58.87
+KPX Abreve d -58.87
+KPX Abreve dbar -58.87
+KPX Abreve e -58.87
+KPX Abreve eacute -58.87
+KPX Abreve ecaron -58.87
+KPX Abreve ecircumflex -58.87
+KPX Abreve edieresis -58.87
+KPX Abreve egrave -58.87
+KPX Abreve eogonek -58.87
+KPX Abreve g -58.87
+KPX Abreve gbreve -58.87
+KPX Abreve h -29.44
+KPX Abreve i -29.44
+KPX Abreve iacute -29.44
+KPX Abreve k -29.44
+KPX Abreve l -29.44
+KPX Abreve lacute -29.44
+KPX Abreve lquoteright -29.44
+KPX Abreve m -29.44
+KPX Abreve n -29.44
+KPX Abreve o -58.87
+KPX Abreve oacute -58.87
+KPX Abreve ocircumflex -58.87
+KPX Abreve odieresis -58.87
+KPX Abreve oe -58.87
+KPX Abreve ograve -58.87
+KPX Abreve ohungarumlaut -58.87
+KPX Abreve oslash -58.87
+KPX Abreve otilde -58.87
+KPX Abreve q -58.87
+KPX Abreve r -29.44
+KPX Abreve t -29.44
+KPX Abreve tcedilla -29.44
+KPX Abreve tquoteright -29.44
+KPX Abreve u -29.44
+KPX Abreve uacute -29.44
+KPX Abreve ucircumflex -29.44
+KPX Abreve udieresis -29.44
+KPX Abreve ugrave -29.44
+KPX Abreve uhungarumlaut -29.44
+KPX Abreve uring -29.44
+KPX Abreve v -29.44
+KPX Abreve w -29.44
+KPX Acircumflex C -29.44
+KPX Acircumflex Cacute -29.44
+KPX Acircumflex Ccaron -29.44
+KPX Acircumflex G -29.44
+KPX Acircumflex Gbreve -29.44
+KPX Acircumflex O -29.44
+KPX Acircumflex Oacute -29.44
+KPX Acircumflex Ocircumflex -29.44
+KPX Acircumflex Odieresis -29.44
+KPX Acircumflex Ograve -29.44
+KPX Acircumflex Ohungarumlaut -29.44
+KPX Acircumflex Oslash -29.44
+KPX Acircumflex Otilde -29.44
+KPX Acircumflex Q -29.44
+KPX Acircumflex T -88.31
+KPX Acircumflex Tcaron -88.31
+KPX Acircumflex Tcedilla -88.31
+KPX Acircumflex U -29.44
+KPX Acircumflex Uacute -29.44
+KPX Acircumflex Ucircumflex -29.44
+KPX Acircumflex Udieresis -29.44
+KPX Acircumflex Ugrave -29.44
+KPX Acircumflex Uhungarumlaut -29.44
+KPX Acircumflex Uring -29.44
+KPX Acircumflex V -117.75
+KPX Acircumflex W -117.75
+KPX Acircumflex Y -88.31
+KPX Acircumflex Ydieresis -88.31
+KPX Acircumflex a -58.87
+KPX Acircumflex aacute -58.87
+KPX Acircumflex acircumflex -58.87
+KPX Acircumflex acircumflex -58.87
+KPX Acircumflex adieresis -58.87
+KPX Acircumflex ae -58.87
+KPX Acircumflex agrave -58.87
+KPX Acircumflex aogonek -58.87
+KPX Acircumflex aring -58.87
+KPX Acircumflex atilde -58.87
+KPX Acircumflex b -29.44
+KPX Acircumflex c -58.87
+KPX Acircumflex cacute -58.87
+KPX Acircumflex cacute -58.87
+KPX Acircumflex ccaron -58.87
+KPX Acircumflex ccedilla -58.87
+KPX Acircumflex d -58.87
+KPX Acircumflex dbar -58.87
+KPX Acircumflex e -58.87
+KPX Acircumflex eacute -58.87
+KPX Acircumflex ecaron -58.87
+KPX Acircumflex ecircumflex -58.87
+KPX Acircumflex edieresis -58.87
+KPX Acircumflex egrave -58.87
+KPX Acircumflex eogonek -58.87
+KPX Acircumflex g -58.87
+KPX Acircumflex gbreve -58.87
+KPX Acircumflex h -29.44
+KPX Acircumflex i -29.44
+KPX Acircumflex iacute -29.44
+KPX Acircumflex k -29.44
+KPX Acircumflex l -29.44
+KPX Acircumflex lacute -29.44
+KPX Acircumflex lquoteright -29.44
+KPX Acircumflex m -29.44
+KPX Acircumflex n -29.44
+KPX Acircumflex o -58.87
+KPX Acircumflex oacute -58.87
+KPX Acircumflex ocircumflex -58.87
+KPX Acircumflex odieresis -58.87
+KPX Acircumflex oe -58.87
+KPX Acircumflex ograve -58.87
+KPX Acircumflex ohungarumlaut -58.87
+KPX Acircumflex oslash -58.87
+KPX Acircumflex otilde -58.87
+KPX Acircumflex q -58.87
+KPX Acircumflex r -29.44
+KPX Acircumflex t -29.44
+KPX Acircumflex tcedilla -29.44
+KPX Acircumflex tquoteright -29.44
+KPX Acircumflex u -29.44
+KPX Acircumflex uacute -29.44
+KPX Acircumflex ucircumflex -29.44
+KPX Acircumflex udieresis -29.44
+KPX Acircumflex ugrave -29.44
+KPX Acircumflex uhungarumlaut -29.44
+KPX Acircumflex uring -29.44
+KPX Acircumflex v -29.44
+KPX Acircumflex w -29.44
+KPX Adieresis C -29.44
+KPX Adieresis Cacute -29.44
+KPX Adieresis Ccaron -29.44
+KPX Adieresis G -29.44
+KPX Adieresis Gbreve -29.44
+KPX Adieresis O -29.44
+KPX Adieresis Oacute -29.44
+KPX Adieresis Ocircumflex -29.44
+KPX Adieresis Odieresis -29.44
+KPX Adieresis Ograve -29.44
+KPX Adieresis Ohungarumlaut -29.44
+KPX Adieresis Oslash -29.44
+KPX Adieresis Otilde -29.44
+KPX Adieresis Q -29.44
+KPX Adieresis T -88.31
+KPX Adieresis Tcaron -88.31
+KPX Adieresis Tcedilla -88.31
+KPX Adieresis U -29.44
+KPX Adieresis Uacute -29.44
+KPX Adieresis Ucircumflex -29.44
+KPX Adieresis Udieresis -29.44
+KPX Adieresis Ugrave -29.44
+KPX Adieresis Uhungarumlaut -29.44
+KPX Adieresis Uring -29.44
+KPX Adieresis V -117.75
+KPX Adieresis W -117.75
+KPX Adieresis Y -88.31
+KPX Adieresis Ydieresis -88.31
+KPX Adieresis a -58.87
+KPX Adieresis aacute -58.87
+KPX Adieresis acircumflex -58.87
+KPX Adieresis acircumflex -58.87
+KPX Adieresis adieresis -58.87
+KPX Adieresis ae -58.87
+KPX Adieresis agrave -58.87
+KPX Adieresis aogonek -58.87
+KPX Adieresis aring -58.87
+KPX Adieresis atilde -58.87
+KPX Adieresis b -29.44
+KPX Adieresis c -58.87
+KPX Adieresis cacute -58.87
+KPX Adieresis cacute -58.87
+KPX Adieresis ccaron -58.87
+KPX Adieresis ccedilla -58.87
+KPX Adieresis d -58.87
+KPX Adieresis dbar -58.87
+KPX Adieresis e -58.87
+KPX Adieresis eacute -58.87
+KPX Adieresis ecaron -58.87
+KPX Adieresis ecircumflex -58.87
+KPX Adieresis edieresis -58.87
+KPX Adieresis egrave -58.87
+KPX Adieresis eogonek -58.87
+KPX Adieresis g -58.87
+KPX Adieresis gbreve -58.87
+KPX Adieresis h -29.44
+KPX Adieresis i -29.44
+KPX Adieresis iacute -29.44
+KPX Adieresis k -29.44
+KPX Adieresis l -29.44
+KPX Adieresis lacute -29.44
+KPX Adieresis lquoteright -29.44
+KPX Adieresis m -29.44
+KPX Adieresis n -29.44
+KPX Adieresis o -58.87
+KPX Adieresis oacute -58.87
+KPX Adieresis ocircumflex -58.87
+KPX Adieresis odieresis -58.87
+KPX Adieresis oe -58.87
+KPX Adieresis ograve -58.87
+KPX Adieresis ohungarumlaut -58.87
+KPX Adieresis oslash -58.87
+KPX Adieresis otilde -58.87
+KPX Adieresis q -58.87
+KPX Adieresis r -29.44
+KPX Adieresis t -29.44
+KPX Adieresis tcedilla -29.44
+KPX Adieresis tquoteright -29.44
+KPX Adieresis u -29.44
+KPX Adieresis uacute -29.44
+KPX Adieresis ucircumflex -29.44
+KPX Adieresis udieresis -29.44
+KPX Adieresis ugrave -29.44
+KPX Adieresis uhungarumlaut -29.44
+KPX Adieresis uring -29.44
+KPX Adieresis v -29.44
+KPX Adieresis w -29.44
+KPX Agrave C -29.44
+KPX Agrave Cacute -29.44
+KPX Agrave Ccaron -29.44
+KPX Agrave G -29.44
+KPX Agrave Gbreve -29.44
+KPX Agrave O -29.44
+KPX Agrave Oacute -29.44
+KPX Agrave Ocircumflex -29.44
+KPX Agrave Odieresis -29.44
+KPX Agrave Ograve -29.44
+KPX Agrave Ohungarumlaut -29.44
+KPX Agrave Oslash -29.44
+KPX Agrave Otilde -29.44
+KPX Agrave Q -29.44
+KPX Agrave T -88.31
+KPX Agrave Tcaron -88.31
+KPX Agrave Tcedilla -88.31
+KPX Agrave U -29.44
+KPX Agrave Uacute -29.44
+KPX Agrave Ucircumflex -29.44
+KPX Agrave Udieresis -29.44
+KPX Agrave Ugrave -29.44
+KPX Agrave Uhungarumlaut -29.44
+KPX Agrave Uring -29.44
+KPX Agrave V -117.75
+KPX Agrave W -117.75
+KPX Agrave Y -88.31
+KPX Agrave Ydieresis -88.31
+KPX Agrave a -58.87
+KPX Agrave aacute -58.87
+KPX Agrave acircumflex -58.87
+KPX Agrave acircumflex -58.87
+KPX Agrave adieresis -58.87
+KPX Agrave ae -58.87
+KPX Agrave agrave -58.87
+KPX Agrave aogonek -58.87
+KPX Agrave aring -58.87
+KPX Agrave atilde -58.87
+KPX Agrave b -29.44
+KPX Agrave c -58.87
+KPX Agrave cacute -58.87
+KPX Agrave cacute -58.87
+KPX Agrave ccaron -58.87
+KPX Agrave ccedilla -58.87
+KPX Agrave d -58.87
+KPX Agrave dbar -58.87
+KPX Agrave e -58.87
+KPX Agrave eacute -58.87
+KPX Agrave ecaron -58.87
+KPX Agrave ecircumflex -58.87
+KPX Agrave edieresis -58.87
+KPX Agrave egrave -58.87
+KPX Agrave eogonek -58.87
+KPX Agrave g -58.87
+KPX Agrave gbreve -58.87
+KPX Agrave h -29.44
+KPX Agrave i -29.44
+KPX Agrave iacute -29.44
+KPX Agrave k -29.44
+KPX Agrave l -29.44
+KPX Agrave lacute -29.44
+KPX Agrave lquoteright -29.44
+KPX Agrave m -29.44
+KPX Agrave n -29.44
+KPX Agrave o -58.87
+KPX Agrave oacute -58.87
+KPX Agrave ocircumflex -58.87
+KPX Agrave odieresis -58.87
+KPX Agrave oe -58.87
+KPX Agrave ograve -58.87
+KPX Agrave ohungarumlaut -58.87
+KPX Agrave oslash -58.87
+KPX Agrave otilde -58.87
+KPX Agrave q -58.87
+KPX Agrave r -29.44
+KPX Agrave t -29.44
+KPX Agrave tcedilla -29.44
+KPX Agrave tquoteright -29.44
+KPX Agrave u -29.44
+KPX Agrave uacute -29.44
+KPX Agrave ucircumflex -29.44
+KPX Agrave udieresis -29.44
+KPX Agrave ugrave -29.44
+KPX Agrave uhungarumlaut -29.44
+KPX Agrave uring -29.44
+KPX Agrave v -29.44
+KPX Agrave w -29.44
+KPX Aogonek C -29.44
+KPX Aogonek Cacute -29.44
+KPX Aogonek Ccaron -29.44
+KPX Aogonek G -29.44
+KPX Aogonek Gbreve -29.44
+KPX Aogonek O -29.44
+KPX Aogonek Oacute -29.44
+KPX Aogonek Ocircumflex -29.44
+KPX Aogonek Odieresis -29.44
+KPX Aogonek Ograve -29.44
+KPX Aogonek Ohungarumlaut -29.44
+KPX Aogonek Oslash -29.44
+KPX Aogonek Otilde -29.44
+KPX Aogonek Q -29.44
+KPX Aogonek T -88.31
+KPX Aogonek Tcaron -88.31
+KPX Aogonek Tcedilla -88.31
+KPX Aogonek U -29.44
+KPX Aogonek Uacute -29.44
+KPX Aogonek Ucircumflex -29.44
+KPX Aogonek Udieresis -29.44
+KPX Aogonek Ugrave -29.44
+KPX Aogonek Uhungarumlaut -29.44
+KPX Aogonek Uring -29.44
+KPX Aogonek V -117.75
+KPX Aogonek W -117.75
+KPX Aogonek Y -88.31
+KPX Aogonek Ydieresis -88.31
+KPX Aogonek a -58.87
+KPX Aogonek aacute -58.87
+KPX Aogonek acircumflex -58.87
+KPX Aogonek acircumflex -58.87
+KPX Aogonek adieresis -58.87
+KPX Aogonek ae -58.87
+KPX Aogonek agrave -58.87
+KPX Aogonek aogonek -58.87
+KPX Aogonek aring -58.87
+KPX Aogonek atilde -58.87
+KPX Aogonek b -29.44
+KPX Aogonek c -58.87
+KPX Aogonek cacute -58.87
+KPX Aogonek cacute -58.87
+KPX Aogonek ccaron -58.87
+KPX Aogonek ccedilla -58.87
+KPX Aogonek d -58.87
+KPX Aogonek dbar -58.87
+KPX Aogonek e -58.87
+KPX Aogonek eacute -58.87
+KPX Aogonek ecaron -58.87
+KPX Aogonek ecircumflex -58.87
+KPX Aogonek edieresis -58.87
+KPX Aogonek egrave -58.87
+KPX Aogonek eogonek -58.87
+KPX Aogonek g -58.87
+KPX Aogonek gbreve -58.87
+KPX Aogonek h -29.44
+KPX Aogonek i -29.44
+KPX Aogonek iacute -29.44
+KPX Aogonek k -29.44
+KPX Aogonek l -29.44
+KPX Aogonek lacute -29.44
+KPX Aogonek lquoteright -29.44
+KPX Aogonek m -29.44
+KPX Aogonek n -29.44
+KPX Aogonek o -58.87
+KPX Aogonek oacute -58.87
+KPX Aogonek ocircumflex -58.87
+KPX Aogonek odieresis -58.87
+KPX Aogonek oe -58.87
+KPX Aogonek ograve -58.87
+KPX Aogonek ohungarumlaut -58.87
+KPX Aogonek oslash -58.87
+KPX Aogonek otilde -58.87
+KPX Aogonek q -58.87
+KPX Aogonek r -29.44
+KPX Aogonek t -29.44
+KPX Aogonek tcedilla -29.44
+KPX Aogonek tquoteright -29.44
+KPX Aogonek u -29.44
+KPX Aogonek uacute -29.44
+KPX Aogonek ucircumflex -29.44
+KPX Aogonek udieresis -29.44
+KPX Aogonek ugrave -29.44
+KPX Aogonek uhungarumlaut -29.44
+KPX Aogonek uring -29.44
+KPX Aogonek v -29.44
+KPX Aogonek w -29.44
+KPX Aring C -29.44
+KPX Aring Cacute -29.44
+KPX Aring Ccaron -29.44
+KPX Aring G -29.44
+KPX Aring Gbreve -29.44
+KPX Aring O -29.44
+KPX Aring Oacute -29.44
+KPX Aring Ocircumflex -29.44
+KPX Aring Odieresis -29.44
+KPX Aring Ograve -29.44
+KPX Aring Ohungarumlaut -29.44
+KPX Aring Oslash -29.44
+KPX Aring Otilde -29.44
+KPX Aring Q -29.44
+KPX Aring T -88.31
+KPX Aring Tcaron -88.31
+KPX Aring Tcedilla -88.31
+KPX Aring U -29.44
+KPX Aring Uacute -29.44
+KPX Aring Ucircumflex -29.44
+KPX Aring Udieresis -29.44
+KPX Aring Ugrave -29.44
+KPX Aring Uhungarumlaut -29.44
+KPX Aring Uring -29.44
+KPX Aring V -117.75
+KPX Aring W -117.75
+KPX Aring Y -88.31
+KPX Aring Ydieresis -88.31
+KPX Aring a -58.87
+KPX Aring aacute -58.87
+KPX Aring acircumflex -58.87
+KPX Aring acircumflex -58.87
+KPX Aring adieresis -58.87
+KPX Aring ae -58.87
+KPX Aring agrave -58.87
+KPX Aring aogonek -58.87
+KPX Aring aring -58.87
+KPX Aring atilde -58.87
+KPX Aring b -29.44
+KPX Aring c -58.87
+KPX Aring cacute -58.87
+KPX Aring cacute -58.87
+KPX Aring ccaron -58.87
+KPX Aring ccedilla -58.87
+KPX Aring d -58.87
+KPX Aring dbar -58.87
+KPX Aring e -58.87
+KPX Aring eacute -58.87
+KPX Aring ecaron -58.87
+KPX Aring ecircumflex -58.87
+KPX Aring edieresis -58.87
+KPX Aring egrave -58.87
+KPX Aring eogonek -58.87
+KPX Aring g -58.87
+KPX Aring gbreve -58.87
+KPX Aring h -29.44
+KPX Aring i -29.44
+KPX Aring iacute -29.44
+KPX Aring k -29.44
+KPX Aring l -29.44
+KPX Aring lacute -29.44
+KPX Aring lquoteright -29.44
+KPX Aring m -29.44
+KPX Aring n -29.44
+KPX Aring o -58.87
+KPX Aring oacute -58.87
+KPX Aring ocircumflex -58.87
+KPX Aring odieresis -58.87
+KPX Aring oe -58.87
+KPX Aring ograve -58.87
+KPX Aring ohungarumlaut -58.87
+KPX Aring oslash -58.87
+KPX Aring otilde -58.87
+KPX Aring q -58.87
+KPX Aring r -29.44
+KPX Aring t -29.44
+KPX Aring tcedilla -29.44
+KPX Aring tquoteright -29.44
+KPX Aring u -29.44
+KPX Aring uacute -29.44
+KPX Aring ucircumflex -29.44
+KPX Aring udieresis -29.44
+KPX Aring ugrave -29.44
+KPX Aring uhungarumlaut -29.44
+KPX Aring uring -29.44
+KPX Aring v -29.44
+KPX Aring w -29.44
+KPX Atilde C -29.44
+KPX Atilde Cacute -29.44
+KPX Atilde Ccaron -29.44
+KPX Atilde G -29.44
+KPX Atilde Gbreve -29.44
+KPX Atilde O -29.44
+KPX Atilde Oacute -29.44
+KPX Atilde Ocircumflex -29.44
+KPX Atilde Odieresis -29.44
+KPX Atilde Ograve -29.44
+KPX Atilde Ohungarumlaut -29.44
+KPX Atilde Oslash -29.44
+KPX Atilde Otilde -29.44
+KPX Atilde Q -29.44
+KPX Atilde T -88.31
+KPX Atilde Tcaron -88.31
+KPX Atilde Tcedilla -88.31
+KPX Atilde U -29.44
+KPX Atilde Uacute -29.44
+KPX Atilde Ucircumflex -29.44
+KPX Atilde Udieresis -29.44
+KPX Atilde Ugrave -29.44
+KPX Atilde Uhungarumlaut -29.44
+KPX Atilde Uring -29.44
+KPX Atilde V -117.75
+KPX Atilde W -117.75
+KPX Atilde Y -88.31
+KPX Atilde Ydieresis -88.31
+KPX Atilde a -58.87
+KPX Atilde aacute -58.87
+KPX Atilde acircumflex -58.87
+KPX Atilde acircumflex -58.87
+KPX Atilde adieresis -58.87
+KPX Atilde ae -58.87
+KPX Atilde agrave -58.87
+KPX Atilde aogonek -58.87
+KPX Atilde aring -58.87
+KPX Atilde atilde -58.87
+KPX Atilde b -29.44
+KPX Atilde c -58.87
+KPX Atilde cacute -58.87
+KPX Atilde cacute -58.87
+KPX Atilde ccaron -58.87
+KPX Atilde ccedilla -58.87
+KPX Atilde d -58.87
+KPX Atilde dbar -58.87
+KPX Atilde e -58.87
+KPX Atilde eacute -58.87
+KPX Atilde ecaron -58.87
+KPX Atilde ecircumflex -58.87
+KPX Atilde edieresis -58.87
+KPX Atilde egrave -58.87
+KPX Atilde eogonek -58.87
+KPX Atilde g -58.87
+KPX Atilde gbreve -58.87
+KPX Atilde h -29.44
+KPX Atilde i -29.44
+KPX Atilde iacute -29.44
+KPX Atilde k -29.44
+KPX Atilde l -29.44
+KPX Atilde lacute -29.44
+KPX Atilde lquoteright -29.44
+KPX Atilde m -29.44
+KPX Atilde n -29.44
+KPX Atilde o -58.87
+KPX Atilde oacute -58.87
+KPX Atilde ocircumflex -58.87
+KPX Atilde odieresis -58.87
+KPX Atilde oe -58.87
+KPX Atilde ograve -58.87
+KPX Atilde ohungarumlaut -58.87
+KPX Atilde oslash -58.87
+KPX Atilde otilde -58.87
+KPX Atilde q -58.87
+KPX Atilde r -29.44
+KPX Atilde t -29.44
+KPX Atilde tcedilla -29.44
+KPX Atilde tquoteright -29.44
+KPX Atilde u -29.44
+KPX Atilde uacute -29.44
+KPX Atilde ucircumflex -29.44
+KPX Atilde udieresis -29.44
+KPX Atilde ugrave -29.44
+KPX Atilde uhungarumlaut -29.44
+KPX Atilde uring -29.44
+KPX Atilde v -29.44
+KPX Atilde w -29.44
+KPX D A -29.44
+KPX D Aacute -29.44
+KPX D Abreve -29.44
+KPX D Acircumflex -29.44
+KPX D Adieresis -29.44
+KPX D Agrave -29.44
+KPX D Aogonek -29.44
+KPX D Aring -29.44
+KPX D Atilde -29.44
+KPX D V -29.44
+KPX D W -29.44
+KPX D X -29.44
+KPX D Y -29.44
+KPX D Yacute -29.44
+KPX Dcaron A -29.44
+KPX Dcaron Aacute -29.44
+KPX Dcaron Abreve -29.44
+KPX Dcaron Acircumflex -29.44
+KPX Dcaron Adieresis -29.44
+KPX Dcaron Agrave -29.44
+KPX Dcaron Aogonek -29.44
+KPX Dcaron Aring -29.44
+KPX Dcaron Atilde -29.44
+KPX Dcaron V -29.44
+KPX Dcaron W -29.44
+KPX Dcaron X -29.44
+KPX Dcaron Y -29.44
+KPX Dcaron Yacute -29.44
+KPX F A -117.75
+KPX F Aacute -117.75
+KPX F Abreve -117.75
+KPX F Acircumflex -117.75
+KPX F Adieresis -117.75
+KPX F Agrave -117.75
+KPX F Aogonek -117.75
+KPX F Aring -117.75
+KPX F Atilde -117.75
+KPX F C -29.44
+KPX F Cacute -29.44
+KPX F Ccaron -29.44
+KPX F G -29.44
+KPX F Gbreve -29.44
+KPX F O -29.44
+KPX F Oacute -29.44
+KPX F Ocircumflex -29.44
+KPX F Odieresis -29.44
+KPX F Ograve -29.44
+KPX F Ohungarumlaut -29.44
+KPX F Oslash -29.44
+KPX F Otilde -29.44
+KPX F Q -29.44
+KPX F a -88.31
+KPX F aogonek -88.31
+KPX F e -88.31
+KPX F eogonek -88.31
+KPX F o -88.31
+KPX F r -88.31
+KPX F u -88.31
+KPX K C -29.44
+KPX K Cacute -29.44
+KPX K Ccaron -29.44
+KPX K G -29.44
+KPX K Gbreve -29.44
+KPX K O -29.44
+KPX K Oacute -29.44
+KPX K Ocircumflex -29.44
+KPX K Odieresis -29.44
+KPX K Ograve -29.44
+KPX K Ohungarumlaut -29.44
+KPX K Oslash -29.44
+KPX K Otilde -29.44
+KPX K Q -29.44
+KPX L T -88.31
+KPX L Tcaron -88.31
+KPX L Tcedilla -88.31
+KPX L V -117.75
+KPX L W -117.75
+KPX L Y -88.31
+KPX L Ydieresis -88.31
+KPX L a -58.87
+KPX L aacute -58.87
+KPX L acircumflex -58.87
+KPX L acircumflex -58.87
+KPX L adieresis -58.87
+KPX L ae -58.87
+KPX L agrave -58.87
+KPX L aogonek -58.87
+KPX L aring -58.87
+KPX L atilde -58.87
+KPX L c -58.87
+KPX L cacute -58.87
+KPX L cacute -58.87
+KPX L ccaron -58.87
+KPX L ccedilla -58.87
+KPX L d -58.87
+KPX L dbar -58.87
+KPX L e -58.87
+KPX L eacute -58.87
+KPX L ecaron -58.87
+KPX L ecircumflex -58.87
+KPX L edieresis -58.87
+KPX L egrave -58.87
+KPX L eogonek -58.87
+KPX L g -58.87
+KPX L gbreve -58.87
+KPX L o -58.87
+KPX L oacute -58.87
+KPX L ocircumflex -58.87
+KPX L odieresis -58.87
+KPX L oe -58.87
+KPX L ograve -58.87
+KPX L ohungarumlaut -58.87
+KPX L oslash -58.87
+KPX L otilde -58.87
+KPX L q -58.87
+KPX O A -29.44
+KPX O Aacute -29.44
+KPX O Abreve -29.44
+KPX O Acircumflex -29.44
+KPX O Adieresis -29.44
+KPX O Agrave -29.44
+KPX O Aogonek -29.44
+KPX O Aring -29.44
+KPX O Atilde -29.44
+KPX O V -29.44
+KPX O W -29.44
+KPX O X -29.44
+KPX O Y -29.44
+KPX O Yacute -29.44
+KPX Oacute A -29.44
+KPX Oacute Aacute -29.44
+KPX Oacute Abreve -29.44
+KPX Oacute Acircumflex -29.44
+KPX Oacute Adieresis -29.44
+KPX Oacute Agrave -29.44
+KPX Oacute Aogonek -29.44
+KPX Oacute Aring -29.44
+KPX Oacute Atilde -29.44
+KPX Oacute V -29.44
+KPX Oacute W -29.44
+KPX Oacute X -29.44
+KPX Oacute Y -29.44
+KPX Oacute Yacute -29.44
+KPX Ocircumflex A -29.44
+KPX Ocircumflex Aacute -29.44
+KPX Ocircumflex Abreve -29.44
+KPX Ocircumflex Acircumflex -29.44
+KPX Ocircumflex Adieresis -29.44
+KPX Ocircumflex Agrave -29.44
+KPX Ocircumflex Aogonek -29.44
+KPX Ocircumflex Aring -29.44
+KPX Ocircumflex Atilde -29.44
+KPX Ocircumflex V -29.44
+KPX Ocircumflex W -29.44
+KPX Ocircumflex X -29.44
+KPX Ocircumflex Y -29.44
+KPX Ocircumflex Yacute -29.44
+KPX Odieresis A -29.44
+KPX Odieresis Aacute -29.44
+KPX Odieresis Abreve -29.44
+KPX Odieresis Acircumflex -29.44
+KPX Odieresis Adieresis -29.44
+KPX Odieresis Agrave -29.44
+KPX Odieresis Aogonek -29.44
+KPX Odieresis Aring -29.44
+KPX Odieresis Atilde -29.44
+KPX Odieresis V -29.44
+KPX Odieresis W -29.44
+KPX Odieresis X -29.44
+KPX Odieresis Y -29.44
+KPX Odieresis Yacute -29.44
+KPX Ograve A -29.44
+KPX Ograve Aacute -29.44
+KPX Ograve Abreve -29.44
+KPX Ograve Acircumflex -29.44
+KPX Ograve Adieresis -29.44
+KPX Ograve Agrave -29.44
+KPX Ograve Aogonek -29.44
+KPX Ograve Aring -29.44
+KPX Ograve Atilde -29.44
+KPX Ograve V -29.44
+KPX Ograve W -29.44
+KPX Ograve X -29.44
+KPX Ograve Y -29.44
+KPX Ograve Yacute -29.44
+KPX Ohungarumlaut A -29.44
+KPX Ohungarumlaut Aacute -29.44
+KPX Ohungarumlaut Abreve -29.44
+KPX Ohungarumlaut Acircumflex -29.44
+KPX Ohungarumlaut Adieresis -29.44
+KPX Ohungarumlaut Agrave -29.44
+KPX Ohungarumlaut Aogonek -29.44
+KPX Ohungarumlaut Aring -29.44
+KPX Ohungarumlaut Atilde -29.44
+KPX Ohungarumlaut V -29.44
+KPX Ohungarumlaut W -29.44
+KPX Ohungarumlaut X -29.44
+KPX Ohungarumlaut Y -29.44
+KPX Ohungarumlaut Yacute -29.44
+KPX Oslash A -29.44
+KPX Oslash Aacute -29.44
+KPX Oslash Abreve -29.44
+KPX Oslash Acircumflex -29.44
+KPX Oslash Adieresis -29.44
+KPX Oslash Agrave -29.44
+KPX Oslash Aogonek -29.44
+KPX Oslash Aring -29.44
+KPX Oslash Atilde -29.44
+KPX Oslash V -29.44
+KPX Oslash W -29.44
+KPX Oslash X -29.44
+KPX Oslash Y -29.44
+KPX Oslash Yacute -29.44
+KPX Otilde A -29.44
+KPX Otilde Aacute -29.44
+KPX Otilde Abreve -29.44
+KPX Otilde Acircumflex -29.44
+KPX Otilde Adieresis -29.44
+KPX Otilde Agrave -29.44
+KPX Otilde Aogonek -29.44
+KPX Otilde Aring -29.44
+KPX Otilde Atilde -29.44
+KPX Otilde V -29.44
+KPX Otilde W -29.44
+KPX Otilde X -29.44
+KPX Otilde Y -29.44
+KPX Otilde Yacute -29.44
+KPX P A -88.31
+KPX P Aacute -88.31
+KPX P Abreve -88.31
+KPX P Acircumflex -88.31
+KPX P Adieresis -88.31
+KPX P Agrave -88.31
+KPX P Aogonek -88.31
+KPX P Aring -88.31
+KPX P Atilde -88.31
+KPX R C -29.44
+KPX R Cacute -29.44
+KPX R Ccaron -29.44
+KPX R G -29.44
+KPX R Gbreve -29.44
+KPX R O -29.44
+KPX R Oacute -29.44
+KPX R Ocircumflex -29.44
+KPX R Odieresis -29.44
+KPX R Ograve -29.44
+KPX R Ohungarumlaut -29.44
+KPX R Oslash -29.44
+KPX R Otilde -29.44
+KPX R Q -29.44
+KPX R T -88.31
+KPX R Tcaron -88.31
+KPX R Tcedilla -88.31
+KPX R U -29.44
+KPX R Uacute -29.44
+KPX R Ucircumflex -29.44
+KPX R Udieresis -29.44
+KPX R Ugrave -29.44
+KPX R Uhungarumlaut -29.44
+KPX R Uring -29.44
+KPX R V -117.75
+KPX R W -117.75
+KPX R Y -88.31
+KPX R Ydieresis -88.31
+KPX R a -58.87
+KPX R aacute -58.87
+KPX R acircumflex -58.87
+KPX R acircumflex -58.87
+KPX R adieresis -58.87
+KPX R ae -58.87
+KPX R agrave -58.87
+KPX R aogonek -58.87
+KPX R aring -58.87
+KPX R atilde -58.87
+KPX R b -29.44
+KPX R c -58.87
+KPX R cacute -58.87
+KPX R cacute -58.87
+KPX R ccaron -58.87
+KPX R ccedilla -58.87
+KPX R d -58.87
+KPX R dbar -58.87
+KPX R e -58.87
+KPX R eacute -58.87
+KPX R ecaron -58.87
+KPX R ecircumflex -58.87
+KPX R edieresis -58.87
+KPX R egrave -58.87
+KPX R eogonek -58.87
+KPX R g -58.87
+KPX R gbreve -58.87
+KPX R h -29.44
+KPX R i -29.44
+KPX R iacute -29.44
+KPX R k -29.44
+KPX R l -29.44
+KPX R lacute -29.44
+KPX R lquoteright -29.44
+KPX R m -29.44
+KPX R n -29.44
+KPX R o -58.87
+KPX R oacute -58.87
+KPX R ocircumflex -58.87
+KPX R odieresis -58.87
+KPX R oe -58.87
+KPX R ograve -58.87
+KPX R ohungarumlaut -58.87
+KPX R oslash -58.87
+KPX R otilde -58.87
+KPX R q -58.87
+KPX R r -29.44
+KPX R t -29.44
+KPX R tcedilla -29.44
+KPX R tquoteright -29.44
+KPX R u -29.44
+KPX R uacute -29.44
+KPX R ucircumflex -29.44
+KPX R udieresis -29.44
+KPX R ugrave -29.44
+KPX R uhungarumlaut -29.44
+KPX R uring -29.44
+KPX R v -29.44
+KPX R w -29.44
+KPX Racute C -29.44
+KPX Racute Cacute -29.44
+KPX Racute Ccaron -29.44
+KPX Racute G -29.44
+KPX Racute Gbreve -29.44
+KPX Racute O -29.44
+KPX Racute Oacute -29.44
+KPX Racute Ocircumflex -29.44
+KPX Racute Odieresis -29.44
+KPX Racute Ograve -29.44
+KPX Racute Ohungarumlaut -29.44
+KPX Racute Oslash -29.44
+KPX Racute Otilde -29.44
+KPX Racute Q -29.44
+KPX Racute T -88.31
+KPX Racute Tcaron -88.31
+KPX Racute Tcedilla -88.31
+KPX Racute U -29.44
+KPX Racute Uacute -29.44
+KPX Racute Ucircumflex -29.44
+KPX Racute Udieresis -29.44
+KPX Racute Ugrave -29.44
+KPX Racute Uhungarumlaut -29.44
+KPX Racute Uring -29.44
+KPX Racute V -117.75
+KPX Racute W -117.75
+KPX Racute Y -88.31
+KPX Racute Ydieresis -88.31
+KPX Racute a -58.87
+KPX Racute aacute -58.87
+KPX Racute acircumflex -58.87
+KPX Racute acircumflex -58.87
+KPX Racute adieresis -58.87
+KPX Racute ae -58.87
+KPX Racute agrave -58.87
+KPX Racute aogonek -58.87
+KPX Racute aring -58.87
+KPX Racute atilde -58.87
+KPX Racute b -29.44
+KPX Racute c -58.87
+KPX Racute cacute -58.87
+KPX Racute cacute -58.87
+KPX Racute ccaron -58.87
+KPX Racute ccedilla -58.87
+KPX Racute d -58.87
+KPX Racute dbar -58.87
+KPX Racute e -58.87
+KPX Racute eacute -58.87
+KPX Racute ecaron -58.87
+KPX Racute ecircumflex -58.87
+KPX Racute edieresis -58.87
+KPX Racute egrave -58.87
+KPX Racute eogonek -58.87
+KPX Racute g -58.87
+KPX Racute gbreve -58.87
+KPX Racute h -29.44
+KPX Racute i -29.44
+KPX Racute iacute -29.44
+KPX Racute k -29.44
+KPX Racute l -29.44
+KPX Racute lacute -29.44
+KPX Racute lquoteright -29.44
+KPX Racute m -29.44
+KPX Racute n -29.44
+KPX Racute o -58.87
+KPX Racute oacute -58.87
+KPX Racute ocircumflex -58.87
+KPX Racute odieresis -58.87
+KPX Racute oe -58.87
+KPX Racute ograve -58.87
+KPX Racute ohungarumlaut -58.87
+KPX Racute oslash -58.87
+KPX Racute otilde -58.87
+KPX Racute q -58.87
+KPX Racute r -29.44
+KPX Racute t -29.44
+KPX Racute tcedilla -29.44
+KPX Racute tquoteright -29.44
+KPX Racute u -29.44
+KPX Racute uacute -29.44
+KPX Racute ucircumflex -29.44
+KPX Racute udieresis -29.44
+KPX Racute ugrave -29.44
+KPX Racute uhungarumlaut -29.44
+KPX Racute uring -29.44
+KPX Racute v -29.44
+KPX Racute w -29.44
+KPX T A -88.31
+KPX T Aacute -88.31
+KPX T Abreve -88.31
+KPX T Acircumflex -88.31
+KPX T Adieresis -88.31
+KPX T Agrave -88.31
+KPX T Aogonek -88.31
+KPX T Aring -88.31
+KPX T Atilde -88.31
+KPX T a -88.31
+KPX T e -88.31
+KPX T o -88.31
+KPX T r -88.31
+KPX T u -88.31
+KPX T y -88.31
+KPX Tcaron A -88.31
+KPX Tcaron Aacute -88.31
+KPX Tcaron Abreve -88.31
+KPX Tcaron Acircumflex -88.31
+KPX Tcaron Adieresis -88.31
+KPX Tcaron Agrave -88.31
+KPX Tcaron Aogonek -88.31
+KPX Tcaron Aring -88.31
+KPX Tcaron Atilde -88.31
+KPX Tcaron a -88.31
+KPX Tcaron e -88.31
+KPX Tcaron o -88.31
+KPX Tcaron r -88.31
+KPX Tcaron u -88.31
+KPX Tcaron y -88.31
+KPX Tcedilla A -88.31
+KPX Tcedilla Aacute -88.31
+KPX Tcedilla Abreve -88.31
+KPX Tcedilla Acircumflex -88.31
+KPX Tcedilla Adieresis -88.31
+KPX Tcedilla Agrave -88.31
+KPX Tcedilla Aogonek -88.31
+KPX Tcedilla Aring -88.31
+KPX Tcedilla Atilde -88.31
+KPX Tcedilla a -88.31
+KPX Tcedilla e -88.31
+KPX Tcedilla o -88.31
+KPX Tcedilla r -88.31
+KPX Tcedilla u -88.31
+KPX Tcedilla y -88.31
+KPX V A -117.75
+KPX V Aacute -117.75
+KPX V Abreve -117.75
+KPX V Acircumflex -117.75
+KPX V Adieresis -117.75
+KPX V Agrave -117.75
+KPX V Aogonek -117.75
+KPX V Aring -117.75
+KPX V Atilde -117.75
+KPX V C -29.44
+KPX V Cacute -29.44
+KPX V Ccaron -29.44
+KPX V G -29.44
+KPX V Gbreve -29.44
+KPX V O -29.44
+KPX V Oacute -29.44
+KPX V Ocircumflex -29.44
+KPX V Odieresis -29.44
+KPX V Ograve -29.44
+KPX V Ohungarumlaut -29.44
+KPX V Oslash -29.44
+KPX V Otilde -29.44
+KPX V Q -29.44
+KPX V a -88.31
+KPX V aogonek -88.31
+KPX V e -88.31
+KPX V eogonek -88.31
+KPX V o -88.31
+KPX V r -88.31
+KPX V u -88.31
+KPX W A -88.31
+KPX W Aacute -88.31
+KPX W Abreve -88.31
+KPX W Acircumflex -88.31
+KPX W Adieresis -88.31
+KPX W Agrave -88.31
+KPX W Aogonek -88.31
+KPX W Aring -88.31
+KPX W Atilde -88.31
+KPX X C -29.44
+KPX X Cacute -29.44
+KPX X Ccaron -29.44
+KPX X G -29.44
+KPX X Gbreve -29.44
+KPX X O -29.44
+KPX X Oacute -29.44
+KPX X Ocircumflex -29.44
+KPX X Odieresis -29.44
+KPX X Ograve -29.44
+KPX X Ohungarumlaut -29.44
+KPX X Oslash -29.44
+KPX X Otilde -29.44
+KPX X Q -29.44
+KPX Y A -88.31
+KPX Y Aacute -88.31
+KPX Y Abreve -88.31
+KPX Y Acircumflex -88.31
+KPX Y Adieresis -88.31
+KPX Y Agrave -88.31
+KPX Y Aogonek -88.31
+KPX Y Aring -88.31
+KPX Y Atilde -88.31
+KPX Y a -88.31
+KPX Y e -88.31
+KPX Y o -88.31
+KPX Y r -88.31
+KPX Y u -88.31
+KPX Yacute A -88.31
+KPX Yacute Aacute -88.31
+KPX Yacute Abreve -88.31
+KPX Yacute Acircumflex -88.31
+KPX Yacute Adieresis -88.31
+KPX Yacute Agrave -88.31
+KPX Yacute Aogonek -88.31
+KPX Yacute Aring -88.31
+KPX Yacute Atilde -88.31
+KPX Yacute a -88.31
+KPX Yacute e -88.31
+KPX Yacute o -88.31
+KPX Yacute r -88.31
+KPX Yacute u -88.31
+KPX b a -58.87
+KPX b aacute -58.87
+KPX b acircumflex -58.87
+KPX b acircumflex -58.87
+KPX b adieresis -58.87
+KPX b ae -58.87
+KPX b agrave -58.87
+KPX b aogonek -58.87
+KPX b aring -58.87
+KPX b atilde -58.87
+KPX b c -58.87
+KPX b cacute -58.87
+KPX b cacute -58.87
+KPX b ccaron -58.87
+KPX b ccedilla -58.87
+KPX b d -58.87
+KPX b dbar -58.87
+KPX b e -58.87
+KPX b eacute -58.87
+KPX b ecaron -58.87
+KPX b ecircumflex -58.87
+KPX b edieresis -58.87
+KPX b egrave -58.87
+KPX b eogonek -58.87
+KPX b g -58.87
+KPX b gbreve -58.87
+KPX b o -58.87
+KPX b oacute -58.87
+KPX b ocircumflex -58.87
+KPX b odieresis -58.87
+KPX b oe -58.87
+KPX b ograve -58.87
+KPX b ohungarumlaut -58.87
+KPX b oslash -58.87
+KPX b otilde -58.87
+KPX b q -58.87
+KPX c a -58.87
+KPX c aacute -58.87
+KPX c acircumflex -58.87
+KPX c acircumflex -58.87
+KPX c adieresis -58.87
+KPX c ae -58.87
+KPX c agrave -58.87
+KPX c aogonek -58.87
+KPX c aring -58.87
+KPX c atilde -58.87
+KPX c c -58.87
+KPX c cacute -58.87
+KPX c cacute -58.87
+KPX c ccaron -58.87
+KPX c ccedilla -58.87
+KPX c d -58.87
+KPX c dbar -58.87
+KPX c e -58.87
+KPX c eacute -58.87
+KPX c ecaron -58.87
+KPX c ecircumflex -58.87
+KPX c edieresis -58.87
+KPX c egrave -58.87
+KPX c eogonek -58.87
+KPX c g -58.87
+KPX c gbreve -58.87
+KPX c o -58.87
+KPX c oacute -58.87
+KPX c ocircumflex -58.87
+KPX c odieresis -58.87
+KPX c oe -58.87
+KPX c ograve -58.87
+KPX c ohungarumlaut -58.87
+KPX c oslash -58.87
+KPX c otilde -58.87
+KPX c q -58.87
+KPX cacute a -58.87
+KPX cacute aacute -58.87
+KPX cacute acircumflex -58.87
+KPX cacute acircumflex -58.87
+KPX cacute adieresis -58.87
+KPX cacute ae -58.87
+KPX cacute agrave -58.87
+KPX cacute aogonek -58.87
+KPX cacute aring -58.87
+KPX cacute atilde -58.87
+KPX cacute c -58.87
+KPX cacute cacute -58.87
+KPX cacute cacute -58.87
+KPX cacute ccaron -58.87
+KPX cacute ccedilla -58.87
+KPX cacute d -58.87
+KPX cacute dbar -58.87
+KPX cacute e -58.87
+KPX cacute eacute -58.87
+KPX cacute ecaron -58.87
+KPX cacute ecircumflex -58.87
+KPX cacute edieresis -58.87
+KPX cacute egrave -58.87
+KPX cacute eogonek -58.87
+KPX cacute g -58.87
+KPX cacute gbreve -58.87
+KPX cacute o -58.87
+KPX cacute oacute -58.87
+KPX cacute ocircumflex -58.87
+KPX cacute odieresis -58.87
+KPX cacute oe -58.87
+KPX cacute ograve -58.87
+KPX cacute ohungarumlaut -58.87
+KPX cacute oslash -58.87
+KPX cacute otilde -58.87
+KPX cacute q -58.87
+KPX ccaron a -58.87
+KPX ccaron aacute -58.87
+KPX ccaron acircumflex -58.87
+KPX ccaron acircumflex -58.87
+KPX ccaron adieresis -58.87
+KPX ccaron ae -58.87
+KPX ccaron agrave -58.87
+KPX ccaron aogonek -58.87
+KPX ccaron aring -58.87
+KPX ccaron atilde -58.87
+KPX ccaron c -58.87
+KPX ccaron cacute -58.87
+KPX ccaron cacute -58.87
+KPX ccaron ccaron -58.87
+KPX ccaron ccedilla -58.87
+KPX ccaron d -58.87
+KPX ccaron dbar -58.87
+KPX ccaron e -58.87
+KPX ccaron eacute -58.87
+KPX ccaron ecaron -58.87
+KPX ccaron ecircumflex -58.87
+KPX ccaron edieresis -58.87
+KPX ccaron egrave -58.87
+KPX ccaron eogonek -58.87
+KPX ccaron g -58.87
+KPX ccaron gbreve -58.87
+KPX ccaron o -58.87
+KPX ccaron oacute -58.87
+KPX ccaron ocircumflex -58.87
+KPX ccaron odieresis -58.87
+KPX ccaron oe -58.87
+KPX ccaron ograve -58.87
+KPX ccaron ohungarumlaut -58.87
+KPX ccaron oslash -58.87
+KPX ccaron otilde -58.87
+KPX ccaron q -58.87
+KPX d l 58.87
+KPX d lacute 58.87
+KPX d lquoteright 58.87
+KPX e a -58.87
+KPX e aacute -58.87
+KPX e acircumflex -58.87
+KPX e acircumflex -58.87
+KPX e adieresis -58.87
+KPX e ae -58.87
+KPX e agrave -58.87
+KPX e aogonek -58.87
+KPX e aring -58.87
+KPX e atilde -58.87
+KPX e c -58.87
+KPX e cacute -58.87
+KPX e cacute -58.87
+KPX e ccaron -58.87
+KPX e ccedilla -58.87
+KPX e d -58.87
+KPX e dbar -58.87
+KPX e e -58.87
+KPX e eacute -58.87
+KPX e ecaron -58.87
+KPX e ecircumflex -58.87
+KPX e edieresis -58.87
+KPX e egrave -58.87
+KPX e eogonek -58.87
+KPX e g -58.87
+KPX e gbreve -58.87
+KPX e o -58.87
+KPX e oacute -58.87
+KPX e ocircumflex -58.87
+KPX e odieresis -58.87
+KPX e oe -58.87
+KPX e ograve -58.87
+KPX e ohungarumlaut -58.87
+KPX e oslash -58.87
+KPX e otilde -58.87
+KPX e q -58.87
+KPX eacute a -58.87
+KPX eacute aacute -58.87
+KPX eacute acircumflex -58.87
+KPX eacute acircumflex -58.87
+KPX eacute adieresis -58.87
+KPX eacute ae -58.87
+KPX eacute agrave -58.87
+KPX eacute aogonek -58.87
+KPX eacute aring -58.87
+KPX eacute atilde -58.87
+KPX eacute c -58.87
+KPX eacute cacute -58.87
+KPX eacute cacute -58.87
+KPX eacute ccaron -58.87
+KPX eacute ccedilla -58.87
+KPX eacute d -58.87
+KPX eacute dbar -58.87
+KPX eacute e -58.87
+KPX eacute eacute -58.87
+KPX eacute ecaron -58.87
+KPX eacute ecircumflex -58.87
+KPX eacute edieresis -58.87
+KPX eacute egrave -58.87
+KPX eacute eogonek -58.87
+KPX eacute g -58.87
+KPX eacute gbreve -58.87
+KPX eacute o -58.87
+KPX eacute oacute -58.87
+KPX eacute ocircumflex -58.87
+KPX eacute odieresis -58.87
+KPX eacute oe -58.87
+KPX eacute ograve -58.87
+KPX eacute ohungarumlaut -58.87
+KPX eacute oslash -58.87
+KPX eacute otilde -58.87
+KPX eacute q -58.87
+KPX ecaron a -58.87
+KPX ecaron aacute -58.87
+KPX ecaron acircumflex -58.87
+KPX ecaron acircumflex -58.87
+KPX ecaron adieresis -58.87
+KPX ecaron ae -58.87
+KPX ecaron agrave -58.87
+KPX ecaron aogonek -58.87
+KPX ecaron aring -58.87
+KPX ecaron atilde -58.87
+KPX ecaron c -58.87
+KPX ecaron cacute -58.87
+KPX ecaron cacute -58.87
+KPX ecaron ccaron -58.87
+KPX ecaron ccedilla -58.87
+KPX ecaron d -58.87
+KPX ecaron dbar -58.87
+KPX ecaron e -58.87
+KPX ecaron eacute -58.87
+KPX ecaron ecaron -58.87
+KPX ecaron ecircumflex -58.87
+KPX ecaron edieresis -58.87
+KPX ecaron egrave -58.87
+KPX ecaron eogonek -58.87
+KPX ecaron g -58.87
+KPX ecaron gbreve -58.87
+KPX ecaron o -58.87
+KPX ecaron oacute -58.87
+KPX ecaron ocircumflex -58.87
+KPX ecaron odieresis -58.87
+KPX ecaron oe -58.87
+KPX ecaron ograve -58.87
+KPX ecaron ohungarumlaut -58.87
+KPX ecaron oslash -58.87
+KPX ecaron otilde -58.87
+KPX ecaron q -58.87
+KPX ecircumflex a -58.87
+KPX ecircumflex aacute -58.87
+KPX ecircumflex acircumflex -58.87
+KPX ecircumflex acircumflex -58.87
+KPX ecircumflex adieresis -58.87
+KPX ecircumflex ae -58.87
+KPX ecircumflex agrave -58.87
+KPX ecircumflex aogonek -58.87
+KPX ecircumflex aring -58.87
+KPX ecircumflex atilde -58.87
+KPX ecircumflex c -58.87
+KPX ecircumflex cacute -58.87
+KPX ecircumflex cacute -58.87
+KPX ecircumflex ccaron -58.87
+KPX ecircumflex ccedilla -58.87
+KPX ecircumflex d -58.87
+KPX ecircumflex dbar -58.87
+KPX ecircumflex e -58.87
+KPX ecircumflex eacute -58.87
+KPX ecircumflex ecaron -58.87
+KPX ecircumflex ecircumflex -58.87
+KPX ecircumflex edieresis -58.87
+KPX ecircumflex egrave -58.87
+KPX ecircumflex eogonek -58.87
+KPX ecircumflex g -58.87
+KPX ecircumflex gbreve -58.87
+KPX ecircumflex o -58.87
+KPX ecircumflex oacute -58.87
+KPX ecircumflex ocircumflex -58.87
+KPX ecircumflex odieresis -58.87
+KPX ecircumflex oe -58.87
+KPX ecircumflex ograve -58.87
+KPX ecircumflex ohungarumlaut -58.87
+KPX ecircumflex oslash -58.87
+KPX ecircumflex otilde -58.87
+KPX ecircumflex q -58.87
+KPX edieresis a -58.87
+KPX edieresis aacute -58.87
+KPX edieresis acircumflex -58.87
+KPX edieresis acircumflex -58.87
+KPX edieresis adieresis -58.87
+KPX edieresis ae -58.87
+KPX edieresis agrave -58.87
+KPX edieresis aogonek -58.87
+KPX edieresis aring -58.87
+KPX edieresis atilde -58.87
+KPX edieresis c -58.87
+KPX edieresis cacute -58.87
+KPX edieresis cacute -58.87
+KPX edieresis ccaron -58.87
+KPX edieresis ccedilla -58.87
+KPX edieresis d -58.87
+KPX edieresis dbar -58.87
+KPX edieresis e -58.87
+KPX edieresis eacute -58.87
+KPX edieresis ecaron -58.87
+KPX edieresis ecircumflex -58.87
+KPX edieresis edieresis -58.87
+KPX edieresis egrave -58.87
+KPX edieresis eogonek -58.87
+KPX edieresis g -58.87
+KPX edieresis gbreve -58.87
+KPX edieresis o -58.87
+KPX edieresis oacute -58.87
+KPX edieresis ocircumflex -58.87
+KPX edieresis odieresis -58.87
+KPX edieresis oe -58.87
+KPX edieresis ograve -58.87
+KPX edieresis ohungarumlaut -58.87
+KPX edieresis oslash -58.87
+KPX edieresis otilde -58.87
+KPX edieresis q -58.87
+KPX egrave a -58.87
+KPX egrave aacute -58.87
+KPX egrave acircumflex -58.87
+KPX egrave acircumflex -58.87
+KPX egrave adieresis -58.87
+KPX egrave ae -58.87
+KPX egrave agrave -58.87
+KPX egrave aogonek -58.87
+KPX egrave aring -58.87
+KPX egrave atilde -58.87
+KPX egrave c -58.87
+KPX egrave cacute -58.87
+KPX egrave cacute -58.87
+KPX egrave ccaron -58.87
+KPX egrave ccedilla -58.87
+KPX egrave d -58.87
+KPX egrave dbar -58.87
+KPX egrave e -58.87
+KPX egrave eacute -58.87
+KPX egrave ecaron -58.87
+KPX egrave ecircumflex -58.87
+KPX egrave edieresis -58.87
+KPX egrave egrave -58.87
+KPX egrave eogonek -58.87
+KPX egrave g -58.87
+KPX egrave gbreve -58.87
+KPX egrave o -58.87
+KPX egrave oacute -58.87
+KPX egrave ocircumflex -58.87
+KPX egrave odieresis -58.87
+KPX egrave oe -58.87
+KPX egrave ograve -58.87
+KPX egrave ohungarumlaut -58.87
+KPX egrave oslash -58.87
+KPX egrave otilde -58.87
+KPX egrave q -58.87
+KPX eogonek a -58.87
+KPX eogonek aacute -58.87
+KPX eogonek acircumflex -58.87
+KPX eogonek acircumflex -58.87
+KPX eogonek adieresis -58.87
+KPX eogonek ae -58.87
+KPX eogonek agrave -58.87
+KPX eogonek aogonek -58.87
+KPX eogonek aring -58.87
+KPX eogonek atilde -58.87
+KPX eogonek c -58.87
+KPX eogonek cacute -58.87
+KPX eogonek cacute -58.87
+KPX eogonek ccaron -58.87
+KPX eogonek ccedilla -58.87
+KPX eogonek d -58.87
+KPX eogonek dbar -58.87
+KPX eogonek e -58.87
+KPX eogonek eacute -58.87
+KPX eogonek ecaron -58.87
+KPX eogonek ecircumflex -58.87
+KPX eogonek edieresis -58.87
+KPX eogonek egrave -58.87
+KPX eogonek eogonek -58.87
+KPX eogonek g -58.87
+KPX eogonek gbreve -58.87
+KPX eogonek o -58.87
+KPX eogonek oacute -58.87
+KPX eogonek ocircumflex -58.87
+KPX eogonek odieresis -58.87
+KPX eogonek oe -58.87
+KPX eogonek ograve -58.87
+KPX eogonek ohungarumlaut -58.87
+KPX eogonek oslash -58.87
+KPX eogonek otilde -58.87
+KPX eogonek q -58.87
+KPX f bracketright 106.64
+KPX f exclam 106.64
+KPX f parenright 106.64
+KPX f question 106.64
+KPX f quoteright 106.64
+KPX ff bracketright 106.64
+KPX ff exclam 106.64
+KPX ff parenright 106.64
+KPX ff question 106.64
+KPX ff quoteright 106.64
+KPX l l 58.87
+KPX l lacute 58.87
+KPX l lquoteright 58.87
+KPX n quoteright -117.75
+KPX o a -58.87
+KPX o aacute -58.87
+KPX o acircumflex -58.87
+KPX o acircumflex -58.87
+KPX o adieresis -58.87
+KPX o ae -58.87
+KPX o agrave -58.87
+KPX o aogonek -58.87
+KPX o aring -58.87
+KPX o atilde -58.87
+KPX o c -58.87
+KPX o cacute -58.87
+KPX o cacute -58.87
+KPX o ccaron -58.87
+KPX o ccedilla -58.87
+KPX o d -58.87
+KPX o dbar -58.87
+KPX o e -58.87
+KPX o eacute -58.87
+KPX o ecaron -58.87
+KPX o ecircumflex -58.87
+KPX o edieresis -58.87
+KPX o egrave -58.87
+KPX o eogonek -58.87
+KPX o g -58.87
+KPX o gbreve -58.87
+KPX o o -58.87
+KPX o oacute -58.87
+KPX o ocircumflex -58.87
+KPX o odieresis -58.87
+KPX o oe -58.87
+KPX o ograve -58.87
+KPX o ohungarumlaut -58.87
+KPX o oslash -58.87
+KPX o otilde -58.87
+KPX o q -58.87
+KPX oacute a -58.87
+KPX oacute aacute -58.87
+KPX oacute acircumflex -58.87
+KPX oacute acircumflex -58.87
+KPX oacute adieresis -58.87
+KPX oacute ae -58.87
+KPX oacute agrave -58.87
+KPX oacute aogonek -58.87
+KPX oacute aring -58.87
+KPX oacute atilde -58.87
+KPX oacute c -58.87
+KPX oacute cacute -58.87
+KPX oacute cacute -58.87
+KPX oacute ccaron -58.87
+KPX oacute ccedilla -58.87
+KPX oacute d -58.87
+KPX oacute dbar -58.87
+KPX oacute e -58.87
+KPX oacute eacute -58.87
+KPX oacute ecaron -58.87
+KPX oacute ecircumflex -58.87
+KPX oacute edieresis -58.87
+KPX oacute egrave -58.87
+KPX oacute eogonek -58.87
+KPX oacute g -58.87
+KPX oacute gbreve -58.87
+KPX oacute o -58.87
+KPX oacute oacute -58.87
+KPX oacute ocircumflex -58.87
+KPX oacute odieresis -58.87
+KPX oacute oe -58.87
+KPX oacute ograve -58.87
+KPX oacute ohungarumlaut -58.87
+KPX oacute oslash -58.87
+KPX oacute otilde -58.87
+KPX oacute q -58.87
+KPX ocircumflex a -58.87
+KPX ocircumflex aacute -58.87
+KPX ocircumflex acircumflex -58.87
+KPX ocircumflex acircumflex -58.87
+KPX ocircumflex adieresis -58.87
+KPX ocircumflex ae -58.87
+KPX ocircumflex agrave -58.87
+KPX ocircumflex aogonek -58.87
+KPX ocircumflex aring -58.87
+KPX ocircumflex atilde -58.87
+KPX ocircumflex c -58.87
+KPX ocircumflex cacute -58.87
+KPX ocircumflex cacute -58.87
+KPX ocircumflex ccaron -58.87
+KPX ocircumflex ccedilla -58.87
+KPX ocircumflex d -58.87
+KPX ocircumflex dbar -58.87
+KPX ocircumflex e -58.87
+KPX ocircumflex eacute -58.87
+KPX ocircumflex ecaron -58.87
+KPX ocircumflex ecircumflex -58.87
+KPX ocircumflex edieresis -58.87
+KPX ocircumflex egrave -58.87
+KPX ocircumflex eogonek -58.87
+KPX ocircumflex g -58.87
+KPX ocircumflex gbreve -58.87
+KPX ocircumflex o -58.87
+KPX ocircumflex oacute -58.87
+KPX ocircumflex ocircumflex -58.87
+KPX ocircumflex odieresis -58.87
+KPX ocircumflex oe -58.87
+KPX ocircumflex ograve -58.87
+KPX ocircumflex ohungarumlaut -58.87
+KPX ocircumflex oslash -58.87
+KPX ocircumflex otilde -58.87
+KPX ocircumflex q -58.87
+KPX odieresis a -58.87
+KPX odieresis aacute -58.87
+KPX odieresis acircumflex -58.87
+KPX odieresis acircumflex -58.87
+KPX odieresis adieresis -58.87
+KPX odieresis ae -58.87
+KPX odieresis agrave -58.87
+KPX odieresis aogonek -58.87
+KPX odieresis aring -58.87
+KPX odieresis atilde -58.87
+KPX odieresis c -58.87
+KPX odieresis cacute -58.87
+KPX odieresis cacute -58.87
+KPX odieresis ccaron -58.87
+KPX odieresis ccedilla -58.87
+KPX odieresis d -58.87
+KPX odieresis dbar -58.87
+KPX odieresis e -58.87
+KPX odieresis eacute -58.87
+KPX odieresis ecaron -58.87
+KPX odieresis ecircumflex -58.87
+KPX odieresis edieresis -58.87
+KPX odieresis egrave -58.87
+KPX odieresis eogonek -58.87
+KPX odieresis g -58.87
+KPX odieresis gbreve -58.87
+KPX odieresis o -58.87
+KPX odieresis oacute -58.87
+KPX odieresis ocircumflex -58.87
+KPX odieresis odieresis -58.87
+KPX odieresis oe -58.87
+KPX odieresis ograve -58.87
+KPX odieresis ohungarumlaut -58.87
+KPX odieresis oslash -58.87
+KPX odieresis otilde -58.87
+KPX odieresis q -58.87
+KPX ograve a -58.87
+KPX ograve aacute -58.87
+KPX ograve acircumflex -58.87
+KPX ograve acircumflex -58.87
+KPX ograve adieresis -58.87
+KPX ograve ae -58.87
+KPX ograve agrave -58.87
+KPX ograve aogonek -58.87
+KPX ograve aring -58.87
+KPX ograve atilde -58.87
+KPX ograve c -58.87
+KPX ograve cacute -58.87
+KPX ograve cacute -58.87
+KPX ograve ccaron -58.87
+KPX ograve ccedilla -58.87
+KPX ograve d -58.87
+KPX ograve dbar -58.87
+KPX ograve e -58.87
+KPX ograve eacute -58.87
+KPX ograve ecaron -58.87
+KPX ograve ecircumflex -58.87
+KPX ograve edieresis -58.87
+KPX ograve egrave -58.87
+KPX ograve eogonek -58.87
+KPX ograve g -58.87
+KPX ograve gbreve -58.87
+KPX ograve o -58.87
+KPX ograve oacute -58.87
+KPX ograve ocircumflex -58.87
+KPX ograve odieresis -58.87
+KPX ograve oe -58.87
+KPX ograve ograve -58.87
+KPX ograve ohungarumlaut -58.87
+KPX ograve oslash -58.87
+KPX ograve otilde -58.87
+KPX ograve q -58.87
+KPX otilde a -58.87
+KPX otilde aacute -58.87
+KPX otilde acircumflex -58.87
+KPX otilde acircumflex -58.87
+KPX otilde adieresis -58.87
+KPX otilde ae -58.87
+KPX otilde agrave -58.87
+KPX otilde aogonek -58.87
+KPX otilde aring -58.87
+KPX otilde atilde -58.87
+KPX otilde c -58.87
+KPX otilde cacute -58.87
+KPX otilde cacute -58.87
+KPX otilde ccaron -58.87
+KPX otilde ccedilla -58.87
+KPX otilde d -58.87
+KPX otilde dbar -58.87
+KPX otilde e -58.87
+KPX otilde eacute -58.87
+KPX otilde ecaron -58.87
+KPX otilde ecircumflex -58.87
+KPX otilde edieresis -58.87
+KPX otilde egrave -58.87
+KPX otilde eogonek -58.87
+KPX otilde g -58.87
+KPX otilde gbreve -58.87
+KPX otilde o -58.87
+KPX otilde oacute -58.87
+KPX otilde ocircumflex -58.87
+KPX otilde odieresis -58.87
+KPX otilde oe -58.87
+KPX otilde ograve -58.87
+KPX otilde ohungarumlaut -58.87
+KPX otilde oslash -58.87
+KPX otilde otilde -58.87
+KPX otilde q -58.87
+KPX p a -58.87
+KPX p aacute -58.87
+KPX p acircumflex -58.87
+KPX p acircumflex -58.87
+KPX p adieresis -58.87
+KPX p ae -58.87
+KPX p agrave -58.87
+KPX p aogonek -58.87
+KPX p aring -58.87
+KPX p atilde -58.87
+KPX p c -58.87
+KPX p cacute -58.87
+KPX p cacute -58.87
+KPX p ccaron -58.87
+KPX p ccedilla -58.87
+KPX p d -58.87
+KPX p dbar -58.87
+KPX p e -58.87
+KPX p eacute -58.87
+KPX p ecaron -58.87
+KPX p ecircumflex -58.87
+KPX p edieresis -58.87
+KPX p egrave -58.87
+KPX p eogonek -58.87
+KPX p g -58.87
+KPX p gbreve -58.87
+KPX p o -58.87
+KPX p oacute -58.87
+KPX p ocircumflex -58.87
+KPX p odieresis -58.87
+KPX p oe -58.87
+KPX p ograve -58.87
+KPX p ohungarumlaut -58.87
+KPX p oslash -58.87
+KPX p otilde -58.87
+KPX p q -58.87
+KPX quoteright exclam 117.75
+KPX quoteright question 117.75
+KPX r a -58.87
+KPX r aacute -58.87
+KPX r acircumflex -58.87
+KPX r acircumflex -58.87
+KPX r adieresis -58.87
+KPX r ae -58.87
+KPX r agrave -58.87
+KPX r aogonek -58.87
+KPX r aring -58.87
+KPX r atilde -58.87
+KPX r c -58.87
+KPX r cacute -58.87
+KPX r cacute -58.87
+KPX r ccaron -58.87
+KPX r ccedilla -58.87
+KPX r d -58.87
+KPX r dbar -58.87
+KPX r e -58.87
+KPX r eacute -58.87
+KPX r ecaron -58.87
+KPX r ecircumflex -58.87
+KPX r edieresis -58.87
+KPX r egrave -58.87
+KPX r eogonek -58.87
+KPX r g -58.87
+KPX r gbreve -58.87
+KPX r o -58.87
+KPX r oacute -58.87
+KPX r ocircumflex -58.87
+KPX r odieresis -58.87
+KPX r oe -58.87
+KPX r ograve -58.87
+KPX r ohungarumlaut -58.87
+KPX r oslash -58.87
+KPX r otilde -58.87
+KPX r q -58.87
+KPX thorn a -58.87
+KPX thorn aacute -58.87
+KPX thorn acircumflex -58.87
+KPX thorn acircumflex -58.87
+KPX thorn adieresis -58.87
+KPX thorn ae -58.87
+KPX thorn agrave -58.87
+KPX thorn aogonek -58.87
+KPX thorn aring -58.87
+KPX thorn atilde -58.87
+KPX thorn c -58.87
+KPX thorn cacute -58.87
+KPX thorn cacute -58.87
+KPX thorn ccaron -58.87
+KPX thorn ccedilla -58.87
+KPX thorn d -58.87
+KPX thorn dbar -58.87
+KPX thorn e -58.87
+KPX thorn eacute -58.87
+KPX thorn ecaron -58.87
+KPX thorn ecircumflex -58.87
+KPX thorn edieresis -58.87
+KPX thorn egrave -58.87
+KPX thorn eogonek -58.87
+KPX thorn g -58.87
+KPX thorn gbreve -58.87
+KPX thorn o -58.87
+KPX thorn oacute -58.87
+KPX thorn ocircumflex -58.87
+KPX thorn odieresis -58.87
+KPX thorn oe -58.87
+KPX thorn ograve -58.87
+KPX thorn ohungarumlaut -58.87
+KPX thorn oslash -58.87
+KPX thorn otilde -58.87
+KPX thorn q -58.87
+KPX w l 58.87
+KPX w lacute 58.87
+KPX w lquoteright 58.87
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcr10.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcr10.afm
new file mode 100644
index 00000000000..e1eb535fcd7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcr10.afm
@@ -0,0 +1,751 @@
+StartFontMetrics 2.0
+FontName dcr10
+FullName dcr10
+FamilyName dcr10
+Weight Medium
+ItalicAngle 0.000000
+IsFixedPitch false
+UnderlinePosition -133
+UnderlineThickness 20
+Version 1.0\(Level-B\)
+FontBBox -55, -250, 1054, 913
+Notice Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\nBaKoMa Fonts Collection, Level-B.
+EncodingScheme FontSpecific
+CapHeight 683
+XHeight 430
+Descender -194
+Ascender 694
+StartCharMetrics 256
+C 0 ; WX 499.89 ; N grave ; B 107 508 294 698 ;
+C 1 ; WX 499.89 ; N acute ; B 205 508 392 698 ;
+C 2 ; WX 499.89 ; N circumflex ; B 115 537 384 694 ;
+C 3 ; WX 499.89 ; N tilde ; B 83 572 416 668 ;
+C 4 ; WX 499.89 ; N dieresis ; B 101 565 398 669 ;
+C 5 ; WX 499.89 ; N hungarumlaut ; B 126 511 420 699 ;
+C 6 ; WX 749.83 ; N ring ; B 263 540 458 716 ;
+C 7 ; WX 499.89 ; N caron ; B 117 515 382 640 ;
+C 8 ; WX 499.89 ; N breve ; B 98 519 401 694 ;
+C 9 ; WX 499.89 ; N macron ; B 69 555 430 590 ;
+C 10 ; WX 277.72 ; N dotaccent ; B 84 559 194 669 ;
+C 11 ; WX 444.33 ; N cedilla ; B 129 -205 369 -22 ;
+C 12 ; WX 277.72 ; N ogonek ; B 9 -194 226 20 ;
+C 13 ; WX 277.72 ; N quotesinglbase ; B 112 -194 233 110 ;
+C 14 ; WX 444.33 ; N guilsinglleft ; B 94 26 330 457 ;
+C 15 ; WX 444.33 ; N guilsinglright ; B 94 26 360 457 ;
+C 16 ; WX 499.89 ; N quotedblleft ; B 148 390 466 694 ;
+C 17 ; WX 499.89 ; N quotedblright ; B 33 390 351 694 ;
+C 18 ; WX 499.89 ; N quotedblbase ; B 138 -194 456 110 ;
+C 19 ; WX 666.5 ; N guillemotleft ; B 94 26 553 457 ;
+C 20 ; WX 666.5 ; N guillemotright ; B 94 26 583 457 ;
+C 21 ; WX 499.89 ; N endash ; B 0 253 499 279 ; L hyphen emdash ;
+C 22 ; WX 999.78 ; N emdash ; B 0 253 999 279 ;
+C 23 ; WX 0 ; N compoundwordmark ; B 0 0 0 0 ;
+C 24 ; WX 388.78 ; N perthousand ; B 55 -56 333 347 ;
+C 25 ; WX 277.72 ; N dotlessi ; B 25 0 243 441 ;
+C 26 ; WX 305.5 ; N dotlessj ; B -55 -205 201 441 ;
+C 27 ; WX 583.17 ; N ff ; B 26 0 632 705 ; L i ffi ; L l ffl ;
+C 28 ; WX 555.44 ; N fi ; B 26 0 528 705 ;
+C 29 ; WX 555.44 ; N fl ; B 26 0 528 705 ;
+C 30 ; WX 833.11 ; N ffi ; B 26 0 807 705 ;
+C 31 ; WX 833.11 ; N ffl ; B 26 0 807 705 ;
+C 32 ; WX 499.89 ; N visiblespace ; B 42 -107 457 252 ;
+C 33 ; WX 277.72 ; N exclam ; B 84 0 194 716 ;
+C 34 ; WX 499.89 ; N quotedbl ; B 117 349 383 711 ;
+C 35 ; WX 833.11 ; N numbersign ; B 56 -194 776 694 ;
+C 36 ; WX 499.89 ; N dollar ; B 57 -56 444 750 ;
+C 37 ; WX 833.11 ; N percent ; B 56 -56 776 750 ;
+C 38 ; WX 777.61 ; N ampersand ; B 42 -22 727 716 ;
+C 39 ; WX 277.72 ; N quoteright ; B 84 390 208 694 ; L quoteright quotedblright ;
+C 40 ; WX 388.78 ; N parenleft ; B 97 -250 332 750 ;
+C 41 ; WX 388.78 ; N parenright ; B 56 -250 291 750 ;
+C 42 ; WX 499.89 ; N asterisk ; B 65 320 434 750 ;
+C 43 ; WX 777.61 ; N plus ; B 56 -83 721 583 ;
+C 44 ; WX 277.72 ; N comma ; B 84 -194 205 110 ; L comma quotedblbase ;
+C 45 ; WX 333.28 ; N hyphen ; B 11 184 276 246 ; L hyphen endash ;
+C 46 ; WX 277.72 ; N period ; B 84 0 194 110 ;
+C 47 ; WX 499.89 ; N slash ; B 56 -250 443 750 ;
+C 48 ; WX 499.89 ; N zero ; B 39 -22 460 666 ;
+C 49 ; WX 499.89 ; N one ; B 87 0 421 666 ;
+C 50 ; WX 499.89 ; N two ; B 50 0 449 666 ;
+C 51 ; WX 499.89 ; N three ; B 42 -22 457 666 ;
+C 52 ; WX 499.89 ; N four ; B 28 0 471 677 ;
+C 53 ; WX 499.89 ; N five ; B 50 -22 449 666 ;
+C 54 ; WX 499.89 ; N six ; B 42 -22 457 666 ;
+C 55 ; WX 499.89 ; N seven ; B 56 -22 485 676 ;
+C 56 ; WX 499.89 ; N eight ; B 42 -22 457 666 ;
+C 57 ; WX 499.89 ; N nine ; B 42 -22 457 666 ;
+C 58 ; WX 277.72 ; N colon ; B 84 0 194 430 ;
+C 59 ; WX 277.72 ; N semicolon ; B 84 -194 197 430 ;
+C 60 ; WX 777.61 ; N less ; B 83 -33 694 533 ; L less guillemotleft ;
+C 61 ; WX 777.61 ; N equal ; B 56 140 721 360 ;
+C 62 ; WX 777.61 ; N greater ; B 83 -33 694 533 ; L greater guillemotright ;
+C 63 ; WX 472.11 ; N question ; B 56 0 415 705 ;
+C 64 ; WX 777.61 ; N at ; B 56 -11 721 705 ;
+C 65 ; WX 749.83 ; N A ; B 18 0 703 716 ;
+C 66 ; WX 708.17 ; N B ; B 20 0 637 683 ;
+C 67 ; WX 722 ; N C ; B 56 -22 665 705 ;
+C 68 ; WX 763.72 ; N D ; B 19 0 693 683 ;
+C 69 ; WX 680.39 ; N E ; B 17 0 637 680 ;
+C 70 ; WX 652.61 ; N F ; B 17 0 596 680 ;
+C 71 ; WX 784.56 ; N G ; B 56 -22 735 705 ;
+C 72 ; WX 749.83 ; N H ; B 17 0 704 683 ;
+C 73 ; WX 361 ; N I ; B 12 0 321 683 ;
+C 74 ; WX 513.78 ; N J ; B 37 -22 465 683 ;
+C 75 ; WX 777.61 ; N K ; B 17 0 722 683 ;
+C 76 ; WX 624.83 ; N L ; B 17 0 568 683 ;
+C 77 ; WX 916.44 ; N M ; B 21 0 866 683 ;
+C 78 ; WX 749.83 ; N N ; B 17 0 704 683 ;
+C 79 ; WX 777.61 ; N O ; B 56 -22 721 705 ;
+C 80 ; WX 680.39 ; N P ; B 19 0 609 683 ;
+C 81 ; WX 777.61 ; N Q ; B 56 -194 727 705 ;
+C 82 ; WX 735.94 ; N R ; B 19 -22 718 683 ;
+C 83 ; WX 555.44 ; N S ; B 56 -22 498 705 ;
+C 84 ; WX 722 ; N T ; B 37 0 686 677 ;
+C 85 ; WX 749.83 ; N U ; B 17 -22 704 683 ;
+C 86 ; WX 749.83 ; N V ; B 5 -22 716 683 ;
+C 87 ; WX 1027.56 ; N W ; B 4 -22 995 683 ;
+C 88 ; WX 749.83 ; N X ; B 9 0 712 683 ;
+C 89 ; WX 749.83 ; N Y ; B -3 0 724 683 ;
+C 90 ; WX 611 ; N Z ; B 56 0 560 683 ;
+C 91 ; WX 277.72 ; N bracketleft ; B 103 -250 255 750 ;
+C 92 ; WX 499.89 ; N backslash ; B 56 -250 443 750 ;
+C 93 ; WX 277.72 ; N bracketright ; B 22 -250 174 750 ;
+C 94 ; WX 611 ; N asciicircum ; B 117 461 493 628 ;
+C 95 ; WX 777.61 ; N underscore ; B 83 -233 694 -193 ;
+C 96 ; WX 277.72 ; N quoteleft ; B 70 390 194 694 ; L quoteleft quotedblleft ;
+C 97 ; WX 499.89 ; N a ; B 40 -11 493 447 ;
+C 98 ; WX 555.44 ; N b ; B 26 -11 521 694 ;
+C 99 ; WX 444.33 ; N c ; B 33 -11 415 447 ;
+C 100 ; WX 555.44 ; N d ; B 33 -11 528 694 ;
+C 101 ; WX 444.33 ; N e ; B 28 -11 415 447 ;
+C 102 ; WX 305.5 ; N f ; B 26 0 354 705 ; L i fi ; L f ff ; L l fl ;
+C 103 ; WX 499.89 ; N g ; B 28 -206 485 452 ;
+C 104 ; WX 555.44 ; N h ; B 24 0 530 694 ;
+C 105 ; WX 277.72 ; N i ; B 25 0 243 669 ;
+C 106 ; WX 305.5 ; N j ; B -55 -205 201 669 ;
+C 107 ; WX 527.67 ; N k ; B 26 0 511 694 ;
+C 108 ; WX 277.72 ; N l ; B 25 0 251 694 ;
+C 109 ; WX 833.11 ; N m ; B 24 0 810 441 ;
+C 110 ; WX 555.44 ; N n ; B 24 0 530 441 ;
+C 111 ; WX 499.89 ; N o ; B 28 -11 471 447 ;
+C 112 ; WX 555.44 ; N p ; B 26 -194 521 441 ;
+C 113 ; WX 527.67 ; N q ; B 33 -194 529 441 ;
+C 114 ; WX 391.56 ; N r ; B 26 0 364 441 ;
+C 115 ; WX 394.33 ; N s ; B 33 -11 360 447 ;
+C 116 ; WX 388.78 ; N t ; B 19 -11 332 615 ;
+C 117 ; WX 555.44 ; N u ; B 24 -11 530 441 ;
+C 118 ; WX 527.67 ; N v ; B 19 -11 508 430 ;
+C 119 ; WX 722 ; N w ; B 18 -11 703 430 ;
+C 120 ; WX 527.67 ; N x ; B 12 0 516 430 ;
+C 121 ; WX 527.67 ; N y ; B 19 -205 508 430 ;
+C 122 ; WX 444.33 ; N z ; B 28 0 401 430 ;
+C 123 ; WX 499.89 ; N braceleft ; B 70 -250 429 750 ;
+C 124 ; WX 277.72 ; N bar ; B 119 -250 159 750 ;
+C 125 ; WX 499.89 ; N braceright ; B 70 -250 429 750 ;
+C 126 ; WX 611 ; N asciitilde ; B 83 572 527 668 ;
+C 127 ; WX 333.28 ; N hyphen ; B 11 184 276 246 ;
+C 128 ; WX 749.83 ; N Abreve ; B 18 0 703 891 ;
+C 129 ; WX 749.83 ; N Aogonek ; B 18 -188 740 716 ;
+C 130 ; WX 722 ; N Cacute ; B 56 -22 665 895 ;
+C 131 ; WX 722 ; N Ccaron ; B 56 -22 665 856 ;
+C 132 ; WX 763.72 ; N Dcaron ; B 19 0 693 856 ;
+C 133 ; WX 680.39 ; N Ecaron ; B 17 0 637 856 ;
+C 134 ; WX 680.39 ; N Eogonek ; B 17 -188 637 680 ;
+C 135 ; WX 784.56 ; N Gbreve ; B 56 -22 735 891 ;
+C 136 ; WX 624.83 ; N Lacute ; B 17 0 568 895 ;
+C 137 ; WX 624.83 ; N Lquoteright ; B 17 0 568 683 ;
+C 138 ; WX 624.83 ; N Lslash ; B 17 0 568 683 ;
+C 139 ; WX 749.83 ; N Nacute ; B 17 0 704 895 ;
+C 140 ; WX 749.83 ; N Ncaron ; B 17 0 704 856 ;
+C 141 ; WX 727.61 ; N Eng ; B 24 -22 676 694 ;
+C 142 ; WX 777.61 ; N Ohungarumlaut ; B 56 -22 721 895 ;
+C 143 ; WX 735.94 ; N Racute ; B 19 -22 718 895 ;
+C 144 ; WX 735.94 ; N Rcaron ; B 19 -22 718 856 ;
+C 145 ; WX 555.44 ; N Sacute ; B 56 -22 498 895 ;
+C 146 ; WX 555.44 ; N Scaron ; B 56 -22 498 856 ;
+C 147 ; WX 555.44 ; N Scedilla ; B 56 -205 498 705 ;
+C 148 ; WX 722 ; N Tcaron ; B 37 0 686 856 ;
+C 149 ; WX 722 ; N Tcedilla ; B 37 -205 686 677 ;
+C 150 ; WX 749.83 ; N Uhungarumlaut ; B 17 -22 704 895 ;
+C 151 ; WX 749.83 ; N Uring ; B 17 -22 704 913 ;
+C 152 ; WX 749.83 ; N Ydieresis ; B -3 0 724 839 ;
+C 153 ; WX 611 ; N Zacute ; B 56 0 560 895 ;
+C 154 ; WX 611 ; N Zcaron ; B 56 0 560 856 ;
+C 155 ; WX 611 ; N Zdotaccent ; B 56 0 560 891 ;
+C 156 ; WX 860.89 ; N IJ ; B 12 -22 798 683 ;
+C 157 ; WX 361 ; N Idotaccent ; B 12 0 321 877 ;
+C 158 ; WX 555.44 ; N dbar ; B 33 -11 528 694 ;
+C 159 ; WX 444.33 ; N section ; B 69 -205 374 705 ;
+C 160 ; WX 499.89 ; N abreve ; B 40 -11 493 694 ;
+C 161 ; WX 499.89 ; N aogonek ; B 40 -194 493 447 ;
+C 162 ; WX 444.33 ; N cacute ; B 33 -11 415 643 ;
+C 163 ; WX 444.33 ; N ccaron ; B 33 -11 415 604 ;
+C 164 ; WX 674.83 ; N dquoteright ; B 33 -11 665 694 ;
+C 165 ; WX 444.33 ; N ecaron ; B 28 -11 415 604 ;
+C 166 ; WX 444.33 ; N eogonek ; B 28 -194 415 447 ;
+C 167 ; WX 499.89 ; N gbreve ; B 28 -206 485 694 ;
+C 168 ; WX 277.72 ; N lacute ; B 25 0 282 907 ;
+C 169 ; WX 402.67 ; N lquoteright ; B 25 0 386 694 ;
+C 170 ; WX 277.72 ; N lslash ; B 18 0 258 694 ;
+C 171 ; WX 555.44 ; N nacute ; B 24 0 530 643 ;
+C 172 ; WX 555.44 ; N ncaron ; B 24 0 530 604 ;
+C 173 ; WX 555.44 ; N eng ; B 24 -205 452 441 ;
+C 174 ; WX 499.89 ; N ohungarumlaut ; B 28 -11 521 643 ;
+C 175 ; WX 391.56 ; N racute ; B 26 0 364 643 ;
+C 176 ; WX 391.56 ; N rcaron ; B 26 0 364 604 ;
+C 177 ; WX 394.33 ; N sacute ; B 33 -11 360 643 ;
+C 178 ; WX 394.33 ; N scaron ; B 33 -11 360 604 ;
+C 179 ; WX 394.33 ; N scedilla ; B 33 -205 360 447 ;
+C 180 ; WX 411 ; N tquoteright ; B 19 -11 401 704 ;
+C 181 ; WX 388.78 ; N tcedilla ; B 19 -205 359 615 ;
+C 182 ; WX 555.44 ; N uhungarumlaut ; B 24 -11 549 643 ;
+C 183 ; WX 555.44 ; N uring ; B 24 -11 530 661 ;
+C 184 ; WX 527.67 ; N ydieresis ; B 19 -205 508 586 ;
+C 185 ; WX 444.33 ; N zacute ; B 28 0 401 643 ;
+C 186 ; WX 444.33 ; N zcaron ; B 28 0 401 604 ;
+C 187 ; WX 444.33 ; N zdotaccent ; B 28 0 402 669 ;
+C 188 ; WX 583.17 ; N ij ; B 33 -205 485 669 ;
+C 189 ; WX 277.72 ; N exclamdown ; B 84 -216 194 500 ;
+C 190 ; WX 472.11 ; N questiondown ; B 56 -205 415 500 ;
+C 191 ; WX 638.72 ; N sterling ; B 56 -11 620 709 ;
+C 192 ; WX 749.83 ; N Agrave ; B 18 0 703 895 ;
+C 193 ; WX 749.83 ; N Aacute ; B 18 0 703 895 ;
+C 194 ; WX 749.83 ; N Acircumflex ; B 18 0 703 891 ;
+C 195 ; WX 749.83 ; N Atilde ; B 18 0 703 891 ;
+C 196 ; WX 749.83 ; N Adieresis ; B 18 0 703 839 ;
+C 197 ; WX 749.83 ; N Aring ; B 18 0 703 872 ;
+C 198 ; WX 902.56 ; N AE ; B 18 0 860 683 ;
+C 199 ; WX 722 ; N Ccedilla ; B 56 -205 665 705 ;
+C 200 ; WX 680.39 ; N Egrave ; B 17 0 637 895 ;
+C 201 ; WX 680.39 ; N Eacute ; B 17 0 637 895 ;
+C 202 ; WX 680.39 ; N Ecircumflex ; B 17 0 637 891 ;
+C 203 ; WX 680.39 ; N Edieresis ; B 17 0 637 839 ;
+C 204 ; WX 361 ; N Igrave ; B 12 0 321 895 ;
+C 205 ; WX 361 ; N Iacute ; B 12 0 321 895 ;
+C 206 ; WX 361 ; N Icircumflex ; B 12 0 321 891 ;
+C 207 ; WX 361 ; N Idieresis ; B 12 0 321 839 ;
+C 208 ; WX 763.72 ; N Eth ; B 19 0 693 683 ;
+C 209 ; WX 749.83 ; N Ntilde ; B 17 0 704 891 ;
+C 210 ; WX 777.61 ; N Ograve ; B 56 -22 721 895 ;
+C 211 ; WX 777.61 ; N Oacute ; B 56 -22 721 895 ;
+C 212 ; WX 777.61 ; N Ocircumflex ; B 56 -22 721 891 ;
+C 213 ; WX 777.61 ; N Otilde ; B 56 -22 721 891 ;
+C 214 ; WX 777.61 ; N Odieresis ; B 56 -22 721 839 ;
+C 215 ; WX 1013.67 ; N OE ; B 56 -22 971 705 ;
+C 216 ; WX 777.61 ; N Oslash ; B 56 -57 721 740 ;
+C 217 ; WX 749.83 ; N Ugrave ; B 17 -22 704 895 ;
+C 218 ; WX 749.83 ; N Uacute ; B 17 -22 704 895 ;
+C 219 ; WX 749.83 ; N Ucircumflex ; B 17 -22 704 891 ;
+C 220 ; WX 749.83 ; N Udieresis ; B 17 -22 704 839 ;
+C 221 ; WX 749.83 ; N Yacute ; B -3 0 724 895 ;
+C 222 ; WX 624.83 ; N Thorn ; B 20 0 554 683 ;
+C 223 ; WX 1110.83 ; N Germandbls ; B 56 -22 1054 705 ;
+C 224 ; WX 499.89 ; N agrave ; B 40 -11 493 643 ;
+C 225 ; WX 499.89 ; N aacute ; B 40 -11 493 643 ;
+C 226 ; WX 499.89 ; N acircumflex ; B 40 -11 493 639 ;
+C 227 ; WX 499.89 ; N atilde ; B 40 -11 493 669 ;
+C 228 ; WX 499.89 ; N adieresis ; B 40 -11 493 586 ;
+C 229 ; WX 499.89 ; N aring ; B 40 -11 493 661 ;
+C 230 ; WX 722 ; N ae ; B 43 -11 693 447 ;
+C 231 ; WX 444.33 ; N ccedilla ; B 33 -205 415 447 ;
+C 232 ; WX 444.33 ; N egrave ; B 28 -11 415 643 ;
+C 233 ; WX 444.33 ; N eacute ; B 28 -11 415 643 ;
+C 234 ; WX 444.33 ; N ecircumflex ; B 28 -11 415 639 ;
+C 235 ; WX 444.33 ; N edieresis ; B 28 -11 415 586 ;
+C 236 ; WX 277.72 ; N igrave ; B -6 0 243 643 ;
+C 237 ; WX 277.72 ; N iacute ; B 25 0 282 643 ;
+C 238 ; WX 277.72 ; N icircumflex ; B 3 0 274 639 ;
+C 239 ; WX 333.28 ; N idieresis ; B -9 0 289 586 ;
+C 240 ; WX 499.89 ; N eth ; B 28 -11 471 694 ;
+C 241 ; WX 555.44 ; N ntilde ; B 24 0 530 669 ;
+C 242 ; WX 499.89 ; N ograve ; B 28 -11 471 643 ;
+C 243 ; WX 499.89 ; N oacute ; B 28 -11 471 643 ;
+C 244 ; WX 499.89 ; N ocircumflex ; B 28 -11 471 639 ;
+C 245 ; WX 499.89 ; N otilde ; B 28 -11 471 669 ;
+C 246 ; WX 499.89 ; N odieresis ; B 28 -11 471 586 ;
+C 247 ; WX 777.61 ; N oe ; B 28 -11 749 447 ;
+C 248 ; WX 499.89 ; N oslash ; B 33 -103 466 534 ;
+C 249 ; WX 555.44 ; N ugrave ; B 24 -11 530 643 ;
+C 250 ; WX 555.44 ; N uacute ; B 24 -11 530 643 ;
+C 251 ; WX 555.44 ; N ucircumflex ; B 24 -11 530 639 ;
+C 252 ; WX 555.44 ; N udieresis ; B 24 -11 530 586 ;
+C 253 ; WX 527.67 ; N yacute ; B 19 -205 508 643 ;
+C 254 ; WX 555.44 ; N thorn ; B 25 -205 521 694 ;
+C 255 ; WX 499.89 ; N germandbls ; B 26 -11 471 705 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 471
+KPX A C -27.77
+KPX A G -27.77
+KPX A O -27.77
+KPX A Q -27.77
+KPX A T -83.31
+KPX A U -27.77
+KPX A V -111.08
+KPX A W -111.08
+KPX A Y -83.31
+KPX A t -27.77
+KPX Aacute C -27.77
+KPX Aacute G -27.77
+KPX Aacute O -27.77
+KPX Aacute Q -27.77
+KPX Aacute T -83.31
+KPX Aacute U -27.77
+KPX Aacute V -111.08
+KPX Aacute W -111.08
+KPX Aacute Y -83.31
+KPX Aacute t -27.77
+KPX Abreve C -27.77
+KPX Abreve G -27.77
+KPX Abreve O -27.77
+KPX Abreve Q -27.77
+KPX Abreve T -83.31
+KPX Abreve U -27.77
+KPX Abreve V -111.08
+KPX Abreve W -111.08
+KPX Abreve Y -83.31
+KPX Abreve t -27.77
+KPX Acircumflex C -27.77
+KPX Acircumflex G -27.77
+KPX Acircumflex O -27.77
+KPX Acircumflex Q -27.77
+KPX Acircumflex T -83.31
+KPX Acircumflex U -27.77
+KPX Acircumflex V -111.08
+KPX Acircumflex W -111.08
+KPX Acircumflex Y -83.31
+KPX Acircumflex t -27.77
+KPX Adieresis C -27.77
+KPX Adieresis G -27.77
+KPX Adieresis O -27.77
+KPX Adieresis Q -27.77
+KPX Adieresis T -83.31
+KPX Adieresis U -27.77
+KPX Adieresis V -111.08
+KPX Adieresis W -111.08
+KPX Adieresis Y -83.31
+KPX Adieresis t -27.77
+KPX Agrave C -27.77
+KPX Agrave G -27.77
+KPX Agrave O -27.77
+KPX Agrave Q -27.77
+KPX Agrave T -83.31
+KPX Agrave U -27.77
+KPX Agrave V -111.08
+KPX Agrave W -111.08
+KPX Agrave Y -83.31
+KPX Agrave t -27.77
+KPX Aogonek C -27.77
+KPX Aogonek G -27.77
+KPX Aogonek O -27.77
+KPX Aogonek Q -27.77
+KPX Aogonek T -83.31
+KPX Aogonek U -27.77
+KPX Aogonek V -111.08
+KPX Aogonek W -111.08
+KPX Aogonek Y -83.31
+KPX Aogonek t -27.77
+KPX Aring C -27.77
+KPX Aring G -27.77
+KPX Aring O -27.77
+KPX Aring Q -27.77
+KPX Aring T -83.31
+KPX Aring U -27.77
+KPX Aring V -111.08
+KPX Aring W -111.08
+KPX Aring Y -83.31
+KPX Aring t -27.77
+KPX Atilde C -27.77
+KPX Atilde G -27.77
+KPX Atilde O -27.77
+KPX Atilde Q -27.77
+KPX Atilde T -83.31
+KPX Atilde U -27.77
+KPX Atilde V -111.08
+KPX Atilde W -111.08
+KPX Atilde Y -83.31
+KPX Atilde t -27.77
+KPX D A -27.77
+KPX D V -27.77
+KPX D W -27.77
+KPX D X -27.77
+KPX D Y -27.77
+KPX F A -111.08
+KPX F C -27.77
+KPX F G -27.77
+KPX F O -27.77
+KPX F Q -27.77
+KPX F a -83.31
+KPX F e -83.31
+KPX F o -83.31
+KPX F r -83.31
+KPX F u -83.31
+KPX I I 27.77
+KPX K C -27.77
+KPX K G -27.77
+KPX K O -27.77
+KPX K Q -27.77
+KPX L T -83.31
+KPX L V -111.08
+KPX L W -111.08
+KPX L Y -83.31
+KPX O A -27.77
+KPX O V -27.77
+KPX O W -27.77
+KPX O X -27.77
+KPX O Y -27.77
+KPX P A -83.31
+KPX P a -27.77
+KPX P aacute -27.77
+KPX P acircumflex -27.77
+KPX P acircumflex -27.77
+KPX P adieresis -27.77
+KPX P ae -27.77
+KPX P agrave -27.77
+KPX P aogonek -27.77
+KPX P aring -27.77
+KPX P atilde -27.77
+KPX P cacute -27.77
+KPX P comma -83.31
+KPX P e -27.77
+KPX P eacute -27.77
+KPX P ecaron -27.77
+KPX P ecircumflex -27.77
+KPX P edieresis -27.77
+KPX P egrave -27.77
+KPX P eogonek -27.77
+KPX P o -27.77
+KPX P oacute -27.77
+KPX P ocircumflex -27.77
+KPX P odieresis -27.77
+KPX P oe -27.77
+KPX P ograve -27.77
+KPX P ohungarumlaut -27.77
+KPX P otilde -27.77
+KPX P period -83.31
+KPX R C -27.77
+KPX R G -27.77
+KPX R O -27.77
+KPX R Q -27.77
+KPX R T -83.31
+KPX R U -27.77
+KPX R V -111.08
+KPX R W -111.08
+KPX R Y -83.31
+KPX R t -27.77
+KPX T A -83.31
+KPX T a -83.31
+KPX T e -83.31
+KPX T o -83.31
+KPX T r -83.31
+KPX T u -83.31
+KPX T y -27.77
+KPX V A -111.08
+KPX V C -27.77
+KPX V G -27.77
+KPX V O -27.77
+KPX V Q -27.77
+KPX V a -83.31
+KPX V e -83.31
+KPX V o -83.31
+KPX V r -83.31
+KPX V u -83.31
+KPX W A -111.08
+KPX W C -27.77
+KPX W G -27.77
+KPX W O -27.77
+KPX W Q -27.77
+KPX W a -83.31
+KPX W e -83.31
+KPX W o -83.31
+KPX W r -83.31
+KPX W u -83.31
+KPX X C -27.77
+KPX X G -27.77
+KPX X O -27.77
+KPX X Q -27.77
+KPX Y A -83.31
+KPX Y a -83.31
+KPX Y e -83.31
+KPX Y o -83.31
+KPX Y r -83.31
+KPX Y u -83.31
+KPX a j 55.54
+KPX a v -27.77
+KPX a w -27.77
+KPX a y -27.77
+KPX b c 27.77
+KPX b cacute 27.77
+KPX b ccaron 27.77
+KPX b ccedilla 27.77
+KPX b d 27.77
+KPX b e 27.77
+KPX b eacute 27.77
+KPX b ecaron 27.77
+KPX b ecircumflex 27.77
+KPX b edieresis 27.77
+KPX b egrave 27.77
+KPX b eogonek 27.77
+KPX b j 55.54
+KPX b o 27.77
+KPX b oacute 27.77
+KPX b ocircumflex 27.77
+KPX b odieresis 27.77
+KPX b oe 27.77
+KPX b ograve 27.77
+KPX b ohungarumlaut 27.77
+KPX b otilde 27.77
+KPX b q 27.77
+KPX b v -27.77
+KPX b w -27.77
+KPX b x -27.77
+KPX b y -27.77
+KPX c h -27.77
+KPX c k -27.77
+KPX f bracketright 77.76
+KPX f exclam 77.76
+KPX f parenright 77.76
+KPX f question 77.76
+KPX f quoteright 77.76
+KPX ff bracketright 77.76
+KPX ff exclam 77.76
+KPX ff parenright 77.76
+KPX ff question 77.76
+KPX ff quoteright 77.76
+KPX g j 27.77
+KPX h b -27.77
+KPX h t -27.77
+KPX h u -27.77
+KPX h uacute -27.77
+KPX h ucircumflex -27.77
+KPX h udieresis -27.77
+KPX h ugrave -27.77
+KPX h uhungarumlaut -27.77
+KPX h uring -27.77
+KPX h v -27.77
+KPX h w -27.77
+KPX h y -27.77
+KPX k a -27.77
+KPX k a -55.54
+KPX k aacute -27.77
+KPX k aacute -55.54
+KPX k acircumflex -55.54
+KPX k acircumflex -55.54
+KPX k acircumflex -27.77
+KPX k acircumflex -27.77
+KPX k adieresis -27.77
+KPX k adieresis -55.54
+KPX k ae -55.54
+KPX k ae -27.77
+KPX k agrave -55.54
+KPX k agrave -27.77
+KPX k aogonek -55.54
+KPX k aogonek -27.77
+KPX k aring -55.54
+KPX k aring -27.77
+KPX k atilde -27.77
+KPX k atilde -55.54
+KPX k c -27.77
+KPX k cacute -27.77
+KPX k cacute -27.77
+KPX k cacute -55.54
+KPX k ccaron -27.77
+KPX k ccedilla -27.77
+KPX k e -27.77
+KPX k eacute -27.77
+KPX k ecaron -27.77
+KPX k ecircumflex -27.77
+KPX k edieresis -27.77
+KPX k egrave -27.77
+KPX k eogonek -27.77
+KPX k o -27.77
+KPX k oacute -27.77
+KPX k ocircumflex -27.77
+KPX k odieresis -27.77
+KPX k oe -27.77
+KPX k ograve -27.77
+KPX k ohungarumlaut -27.77
+KPX k otilde -27.77
+KPX m b -27.77
+KPX m t -27.77
+KPX m u -27.77
+KPX m uacute -27.77
+KPX m ucircumflex -27.77
+KPX m udieresis -27.77
+KPX m ugrave -27.77
+KPX m uhungarumlaut -27.77
+KPX m uring -27.77
+KPX m v -27.77
+KPX m w -27.77
+KPX m y -27.77
+KPX n b -27.77
+KPX n t -27.77
+KPX n u -27.77
+KPX n uacute -27.77
+KPX n ucircumflex -27.77
+KPX n udieresis -27.77
+KPX n ugrave -27.77
+KPX n uhungarumlaut -27.77
+KPX n uring -27.77
+KPX n v -27.77
+KPX n w -27.77
+KPX n y -27.77
+KPX o c 27.77
+KPX o cacute 27.77
+KPX o ccaron 27.77
+KPX o ccedilla 27.77
+KPX o d 27.77
+KPX o e 27.77
+KPX o eacute 27.77
+KPX o ecaron 27.77
+KPX o ecircumflex 27.77
+KPX o edieresis 27.77
+KPX o egrave 27.77
+KPX o eogonek 27.77
+KPX o j 55.54
+KPX o o 27.77
+KPX o oacute 27.77
+KPX o ocircumflex 27.77
+KPX o odieresis 27.77
+KPX o oe 27.77
+KPX o ograve 27.77
+KPX o ohungarumlaut 27.77
+KPX o otilde 27.77
+KPX o q 27.77
+KPX o v -27.77
+KPX o w -27.77
+KPX o x -27.77
+KPX o y -27.77
+KPX p c 27.77
+KPX p cacute 27.77
+KPX p ccaron 27.77
+KPX p ccedilla 27.77
+KPX p d 27.77
+KPX p e 27.77
+KPX p eacute 27.77
+KPX p ecaron 27.77
+KPX p ecircumflex 27.77
+KPX p edieresis 27.77
+KPX p egrave 27.77
+KPX p eogonek 27.77
+KPX p j 55.54
+KPX p o 27.77
+KPX p oacute 27.77
+KPX p ocircumflex 27.77
+KPX p odieresis 27.77
+KPX p oe 27.77
+KPX p ograve 27.77
+KPX p ohungarumlaut 27.77
+KPX p otilde 27.77
+KPX p q 27.77
+KPX p v -27.77
+KPX p w -27.77
+KPX p x -27.77
+KPX p y -27.77
+KPX quoteright exclam 111.08
+KPX quoteright question 111.08
+KPX t w -27.77
+KPX t y -27.77
+KPX u w -27.77
+KPX v a -27.77
+KPX v a -55.54
+KPX v aacute -27.77
+KPX v aacute -55.54
+KPX v acircumflex -55.54
+KPX v acircumflex -27.77
+KPX v acircumflex -27.77
+KPX v acircumflex -55.54
+KPX v adieresis -27.77
+KPX v adieresis -55.54
+KPX v ae -27.77
+KPX v ae -55.54
+KPX v agrave -27.77
+KPX v agrave -55.54
+KPX v aogonek -55.54
+KPX v aogonek -27.77
+KPX v aring -55.54
+KPX v aring -27.77
+KPX v atilde -55.54
+KPX v atilde -27.77
+KPX v c -27.77
+KPX v cacute -55.54
+KPX v cacute -27.77
+KPX v cacute -27.77
+KPX v ccaron -27.77
+KPX v ccedilla -27.77
+KPX v e -27.77
+KPX v eacute -27.77
+KPX v ecaron -27.77
+KPX v ecircumflex -27.77
+KPX v edieresis -27.77
+KPX v egrave -27.77
+KPX v eogonek -27.77
+KPX v o -27.77
+KPX v oacute -27.77
+KPX v ocircumflex -27.77
+KPX v odieresis -27.77
+KPX v oe -27.77
+KPX v ograve -27.77
+KPX v ohungarumlaut -27.77
+KPX v otilde -27.77
+KPX w a -27.77
+KPX w aacute -27.77
+KPX w acircumflex -27.77
+KPX w acircumflex -27.77
+KPX w adieresis -27.77
+KPX w ae -27.77
+KPX w agrave -27.77
+KPX w aogonek -27.77
+KPX w aring -27.77
+KPX w atilde -27.77
+KPX w c -27.77
+KPX w cacute -27.77
+KPX w cacute -27.77
+KPX w ccaron -27.77
+KPX w ccedilla -27.77
+KPX w e -27.77
+KPX w eacute -27.77
+KPX w ecaron -27.77
+KPX w ecircumflex -27.77
+KPX w edieresis -27.77
+KPX w egrave -27.77
+KPX w eogonek -27.77
+KPX w o -27.77
+KPX w oacute -27.77
+KPX w ocircumflex -27.77
+KPX w odieresis -27.77
+KPX w oe -27.77
+KPX w ograve -27.77
+KPX w ohungarumlaut -27.77
+KPX w otilde -27.77
+KPX y a -27.77
+KPX y aacute -27.77
+KPX y acircumflex -27.77
+KPX y acircumflex -27.77
+KPX y adieresis -27.77
+KPX y ae -27.77
+KPX y agrave -27.77
+KPX y aogonek -27.77
+KPX y aring -27.77
+KPX y atilde -27.77
+KPX y cacute -27.77
+KPX y comma -83.31
+KPX y e -27.77
+KPX y eacute -27.77
+KPX y ecaron -27.77
+KPX y ecircumflex -27.77
+KPX y edieresis -27.77
+KPX y egrave -27.77
+KPX y eogonek -27.77
+KPX y o -27.77
+KPX y oacute -27.77
+KPX y ocircumflex -27.77
+KPX y odieresis -27.77
+KPX y oe -27.77
+KPX y ograve -27.77
+KPX y ohungarumlaut -27.77
+KPX y otilde -27.77
+KPX y period -83.31
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcti10.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcti10.afm
new file mode 100644
index 00000000000..b1a4c37f200
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/dcti10.afm
@@ -0,0 +1,2341 @@
+StartFontMetrics 2.0
+FontName dcti10
+FullName dcti10
+FamilyName dcti10
+Weight Medium
+ItalicAngle 0.000000
+IsFixedPitch false
+UnderlinePosition -133
+UnderlineThickness 20
+Version 1.0\(Level-B\)
+FontBBox -61, -250, 1119, 913
+Notice Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\nBaKoMa Fonts Collection, Level-B.
+EncodingScheme FontSpecific
+CapHeight 683
+XHeight 430
+Descender -194
+Ascender 694
+StartCharMetrics 256
+C 0 ; WX 511 ; N grave ; B 265 503 407 696 ;
+C 1 ; WX 511 ; N acute ; B 313 503 525 696 ;
+C 2 ; WX 511 ; N circumflex ; B 238 533 498 694 ;
+C 3 ; WX 511 ; N tilde ; B 221 564 546 668 ;
+C 4 ; WX 511 ; N dieresis ; B 242 565 526 669 ;
+C 5 ; WX 511 ; N hungarumlaut ; B 241 504 550 697 ;
+C 6 ; WX 831.11 ; N ring ; B 435 540 630 716 ;
+C 7 ; WX 511 ; N caron ; B 253 505 512 633 ;
+C 8 ; WX 511 ; N breve ; B 254 520 541 694 ;
+C 9 ; WX 511 ; N macron ; B 206 555 540 589 ;
+C 10 ; WX 306.61 ; N dotaccent ; B 225 559 337 669 ;
+C 11 ; WX 459.89 ; N cedilla ; B 73 -194 312 0 ;
+C 12 ; WX 306.61 ; N ogonek ; B -16 -181 192 23 ;
+C 13 ; WX 306.61 ; N quotesinglbase ; B 63 -194 217 110 ;
+C 14 ; WX 459.89 ; N guilsinglleft ; B 147 26 417 457 ;
+C 15 ; WX 459.89 ; N guilsinglright ; B 96 26 392 457 ;
+C 16 ; WX 514.33 ; N quotedblleft ; B 239 390 583 694 ;
+C 17 ; WX 514.33 ; N quotedblright ; B 150 390 494 694 ;
+C 18 ; WX 514.33 ; N quotedblbase ; B 95 -194 439 110 ;
+C 19 ; WX 664.28 ; N guillemotleft ; B 147 26 621 457 ;
+C 20 ; WX 664.28 ; N guillemotright ; B 96 26 596 457 ;
+C 21 ; WX 511 ; N endash ; B 66 253 526 279 ; L hyphen emdash ;
+C 22 ; WX 1022 ; N emdash ; B 66 253 985 279 ;
+C 23 ; WX 0 ; N compoundwordmark ; B 0 0 0 0 ;
+C 24 ; WX 408.78 ; N perthousand ; B 78 -56 353 347 ;
+C 25 ; WX 306.61 ; N dotlessi ; B 55 -11 308 441 ;
+C 26 ; WX 332.17 ; N dotlessj ; B -61 -205 296 441 ;
+C 27 ; WX 613.17 ; N ff ; B -51 -205 732 705 ; L i ffi ; L l ffl ;
+C 28 ; WX 562.11 ; N fi ; B -51 -205 571 705 ;
+C 29 ; WX 587.61 ; N fl ; B -51 -205 613 705 ;
+C 30 ; WX 881.44 ; N ffi ; B -51 -205 890 705 ;
+C 31 ; WX 894.22 ; N ffl ; B -51 -205 919 705 ;
+C 32 ; WX 511 ; N visiblespace ; B 13 -107 482 252 ;
+C 33 ; WX 306.61 ; N exclam ; B 85 0 350 716 ;
+C 34 ; WX 511 ; N quotedbl ; B 226 338 517 706 ;
+C 35 ; WX 817.56 ; N numbersign ; B 89 -194 802 694 ;
+C 36 ; WX 511 ; N dollar ; B 89 -56 546 750 ;
+C 37 ; WX 817.56 ; N percent ; B 119 -56 821 750 ;
+C 38 ; WX 766.5 ; N ampersand ; B 101 -22 776 716 ;
+C 39 ; WX 306.61 ; N quoteright ; B 192 390 349 694 ; L quoteright quotedblright ;
+C 40 ; WX 408.78 ; N parenleft ; B 124 -250 491 750 ;
+C 41 ; WX 408.78 ; N parenright ; B -9 -250 358 750 ;
+C 42 ; WX 511 ; N asterisk ; B 169 320 558 750 ;
+C 43 ; WX 766.5 ; N plus ; B 114 -57 726 557 ;
+C 44 ; WX 306.61 ; N comma ; B 46 -194 200 110 ; L comma quotedblbase ;
+C 45 ; WX 357.67 ; N hyphen ; B 59 185 314 245 ; L hyphen endash ;
+C 46 ; WX 306.61 ; N period ; B 85 0 198 110 ;
+C 47 ; WX 511 ; N slash ; B -8 -250 592 750 ;
+C 48 ; WX 511 ; N zero ; B 89 -22 530 666 ;
+C 49 ; WX 511 ; N one ; B 89 0 437 666 ;
+C 50 ; WX 511 ; N two ; B 56 -22 525 666 ;
+C 51 ; WX 511 ; N three ; B 69 -22 536 666 ;
+C 52 ; WX 511 ; N four ; B 18 -194 449 666 ;
+C 53 ; WX 511 ; N five ; B 81 -22 541 666 ;
+C 54 ; WX 511 ; N six ; B 94 -22 541 666 ;
+C 55 ; WX 511 ; N seven ; B 116 -22 602 666 ;
+C 56 ; WX 511 ; N eight ; B 71 -22 528 666 ;
+C 57 ; WX 511 ; N nine ; B 79 -22 527 666 ;
+C 58 ; WX 306.61 ; N colon ; B 85 0 278 430 ;
+C 59 ; WX 306.61 ; N semicolon ; B 46 -194 278 430 ;
+C 60 ; WX 766.5 ; N less ; B 140 -33 767 533 ; L less guillemotleft ;
+C 61 ; WX 766.5 ; N equal ; B 89 140 749 360 ;
+C 62 ; WX 766.5 ; N greater ; B 72 -33 700 533 ; L greater guillemotright ;
+C 63 ; WX 511 ; N question ; B 168 0 525 716 ;
+C 64 ; WX 766.5 ; N at ; B 125 -11 762 705 ;
+C 65 ; WX 743.17 ; N A ; B 18 0 653 716 ;
+C 66 ; WX 703.72 ; N B ; B 22 0 694 683 ;
+C 67 ; WX 715.39 ; N C ; B 124 -22 786 705 ;
+C 68 ; WX 754.83 ; N D ; B 20 0 735 683 ;
+C 69 ; WX 678.17 ; N E ; B 19 0 703 680 ;
+C 70 ; WX 652.61 ; N F ; B 19 0 691 680 ;
+C 71 ; WX 773.44 ; N G ; B 124 -22 786 705 ;
+C 72 ; WX 743.17 ; N H ; B 19 0 814 683 ;
+C 73 ; WX 385.44 ; N I ; B 14 0 462 683 ;
+C 74 ; WX 524.89 ; N J ; B 64 -22 596 683 ;
+C 75 ; WX 768.72 ; N K ; B 19 0 820 683 ;
+C 76 ; WX 627.06 ; N L ; B 19 0 586 683 ;
+C 77 ; WX 896.44 ; N M ; B 23 0 963 683 ;
+C 78 ; WX 743.17 ; N N ; B 19 0 814 683 ;
+C 79 ; WX 766.5 ; N O ; B 122 -22 761 705 ;
+C 80 ; WX 678.17 ; N P ; B 20 0 690 683 ;
+C 81 ; WX 766.5 ; N Q ; B 122 -194 761 705 ;
+C 82 ; WX 729.28 ; N R ; B 20 -22 683 683 ;
+C 83 ; WX 562.11 ; N S ; B 48 -22 607 705 ;
+C 84 ; WX 715.39 ; N T ; B 148 0 780 677 ;
+C 85 ; WX 743.17 ; N U ; B 160 -22 814 683 ;
+C 86 ; WX 743.17 ; N V ; B 168 -22 828 683 ;
+C 87 ; WX 998.67 ; N W ; B 167 -22 1085 683 ;
+C 88 ; WX 743.17 ; N X ; B 10 0 785 683 ;
+C 89 ; WX 743.17 ; N Y ; B 161 0 835 683 ;
+C 90 ; WX 613.17 ; N Z ; B 53 0 678 683 ;
+C 91 ; WX 306.61 ; N bracketleft ; B 34 -250 420 750 ;
+C 92 ; WX 511 ; N backslash ; B 235 -250 349 750 ;
+C 93 ; WX 306.61 ; N bracketright ; B -40 -250 346 750 ;
+C 94 ; WX 613.17 ; N asciicircum ; B 219 457 580 628 ;
+C 95 ; WX 766.5 ; N underscore ; B 24 -233 584 -193 ;
+C 96 ; WX 306.61 ; N quoteleft ; B 178 390 335 694 ; L quoteleft quotedblleft ;
+C 97 ; WX 511 ; N a ; B 81 -11 512 441 ;
+C 98 ; WX 459.89 ; N b ; B 87 -11 435 694 ;
+C 99 ; WX 459.89 ; N c ; B 82 -11 444 441 ;
+C 100 ; WX 511 ; N d ; B 81 -11 536 694 ;
+C 101 ; WX 459.89 ; N e ; B 86 -11 442 441 ;
+C 102 ; WX 306.61 ; N f ; B -51 -205 426 705 ; L i fi ; L f ff ; L l fl ;
+C 103 ; WX 459.89 ; N g ; B 25 -205 463 441 ;
+C 104 ; WX 511 ; N h ; B 48 -11 512 694 ;
+C 105 ; WX 306.61 ; N i ; B 55 -11 308 656 ;
+C 106 ; WX 306.61 ; N j ; B -61 -205 333 656 ;
+C 107 ; WX 459.89 ; N k ; B 48 -11 474 694 ;
+C 108 ; WX 255.5 ; N l ; B 66 -11 282 694 ;
+C 109 ; WX 817.56 ; N m ; B 55 -11 819 441 ;
+C 110 ; WX 562.11 ; N n ; B 55 -11 563 441 ;
+C 111 ; WX 511 ; N o ; B 82 -11 485 441 ;
+C 112 ; WX 511 ; N p ; B -14 -194 486 441 ;
+C 113 ; WX 459.89 ; N q ; B 81 -194 473 441 ;
+C 114 ; WX 421.56 ; N r ; B 55 -11 462 441 ;
+C 115 ; WX 408.78 ; N s ; B 50 -11 392 441 ;
+C 116 ; WX 332.17 ; N t ; B 64 -11 347 626 ;
+C 117 ; WX 536.56 ; N u ; B 55 -11 538 441 ;
+C 118 ; WX 459.89 ; N v ; B 55 -11 466 442 ;
+C 119 ; WX 664.28 ; N w ; B 55 -11 670 442 ;
+C 120 ; WX 463.78 ; N x ; B 29 -11 491 441 ;
+C 121 ; WX 485.44 ; N y ; B 55 -205 490 441 ;
+C 122 ; WX 408.78 ; N z ; B 34 -11 439 441 ;
+C 123 ; WX 511 ; N braceleft ; B 126 -250 580 750 ;
+C 124 ; WX 306.61 ; N bar ; B 51 -250 331 750 ;
+C 125 ; WX 511 ; N braceright ; B 4 -250 458 750 ;
+C 126 ; WX 613.17 ; N asciitilde ; B 221 564 648 668 ;
+C 127 ; WX 357.67 ; N hyphen ; B 59 185 314 245 ;
+C 128 ; WX 743.17 ; N Abreve ; B 18 0 693 891 ;
+C 129 ; WX 743.17 ; N Aogonek ; B 18 -169 668 716 ;
+C 130 ; WX 715.39 ; N Cacute ; B 124 -22 786 893 ;
+C 131 ; WX 715.39 ; N Ccaron ; B 124 -22 786 844 ;
+C 132 ; WX 754.83 ; N Dcaron ; B 20 0 735 844 ;
+C 133 ; WX 678.17 ; N Ecaron ; B 19 0 703 844 ;
+C 134 ; WX 678.17 ; N Eogonek ; B 19 -169 703 680 ;
+C 135 ; WX 773.44 ; N Gbreve ; B 124 -22 786 891 ;
+C 136 ; WX 627.06 ; N Lacute ; B 19 0 626 893 ;
+C 137 ; WX 627.06 ; N Lquoteright ; B 19 0 632 683 ;
+C 138 ; WX 627.06 ; N Lslash ; B 19 0 586 683 ;
+C 139 ; WX 743.17 ; N Nacute ; B 19 0 814 893 ;
+C 140 ; WX 743.17 ; N Ncaron ; B 19 0 814 844 ;
+C 141 ; WX 720.94 ; N Eng ; B 13 -22 763 694 ;
+C 142 ; WX 766.5 ; N Ohungarumlaut ; B 122 -22 819 893 ;
+C 143 ; WX 729.28 ; N Racute ; B 20 -22 683 893 ;
+C 144 ; WX 729.28 ; N Rcaron ; B 20 -22 683 844 ;
+C 145 ; WX 562.11 ; N Sacute ; B 48 -22 607 893 ;
+C 146 ; WX 562.11 ; N Scaron ; B 48 -22 607 844 ;
+C 147 ; WX 562.11 ; N Scedilla ; B 48 -194 607 705 ;
+C 148 ; WX 715.39 ; N Tcaron ; B 148 0 780 844 ;
+C 149 ; WX 715.39 ; N Tcedilla ; B 148 -194 780 677 ;
+C 150 ; WX 743.17 ; N Uhungarumlaut ; B 160 -22 819 893 ;
+C 151 ; WX 743.17 ; N Uring ; B 160 -22 814 913 ;
+C 152 ; WX 743.17 ; N Ydieresis ; B 161 0 835 891 ;
+C 153 ; WX 613.17 ; N Zacute ; B 53 0 678 893 ;
+C 154 ; WX 613.17 ; N Zcaron ; B 53 0 678 844 ;
+C 155 ; WX 613.17 ; N Zdotaccent ; B 53 0 678 891 ;
+C 156 ; WX 845.33 ; N IJ ; B 14 -22 902 683 ;
+C 157 ; WX 385.44 ; N Idotaccent ; B 14 0 462 878 ;
+C 158 ; WX 511 ; N dbar ; B 81 -11 556 694 ;
+C 159 ; WX 459.89 ; N section ; B 53 -205 480 705 ;
+C 160 ; WX 511 ; N abreve ; B 81 -11 527 639 ;
+C 161 ; WX 511 ; N aogonek ; B 81 -181 512 441 ;
+C 162 ; WX 459.89 ; N cacute ; B 82 -11 486 641 ;
+C 163 ; WX 459.89 ; N ccaron ; B 82 -11 502 592 ;
+C 164 ; WX 511 ; N dquoteright ; B 81 -11 723 694 ;
+C 165 ; WX 459.89 ; N ecaron ; B 86 -11 477 592 ;
+C 166 ; WX 459.89 ; N eogonek ; B 86 -152 442 441 ;
+C 167 ; WX 459.89 ; N gbreve ; B 25 -205 502 639 ;
+C 168 ; WX 255.5 ; N lacute ; B 66 -11 450 905 ;
+C 169 ; WX 255.5 ; N lquoteright ; B 66 -11 467 694 ;
+C 170 ; WX 255.5 ; N lslash ; B 34 -11 288 694 ;
+C 171 ; WX 562.11 ; N nacute ; B 55 -11 563 641 ;
+C 172 ; WX 562.11 ; N ncaron ; B 55 -11 563 592 ;
+C 173 ; WX 562.11 ; N eng ; B 55 -205 494 441 ;
+C 174 ; WX 511 ; N ohungarumlaut ; B 82 -11 629 641 ;
+C 175 ; WX 421.56 ; N racute ; B 55 -11 462 641 ;
+C 176 ; WX 421.56 ; N rcaron ; B 55 -11 462 592 ;
+C 177 ; WX 408.78 ; N sacute ; B 50 -11 461 641 ;
+C 178 ; WX 408.78 ; N scaron ; B 50 -11 451 592 ;
+C 179 ; WX 408.78 ; N scedilla ; B 22 -194 392 441 ;
+C 180 ; WX 332.17 ; N tquoteright ; B 64 -11 462 704 ;
+C 181 ; WX 332.17 ; N tcedilla ; B 22 -194 347 626 ;
+C 182 ; WX 536.56 ; N uhungarumlaut ; B 55 -11 642 641 ;
+C 183 ; WX 536.56 ; N uring ; B 55 -11 538 661 ;
+C 184 ; WX 485.44 ; N ydieresis ; B 55 -205 505 638 ;
+C 185 ; WX 408.78 ; N zacute ; B 34 -11 461 641 ;
+C 186 ; WX 408.78 ; N zcaron ; B 34 -11 451 592 ;
+C 187 ; WX 408.78 ; N zdotaccent ; B 34 -11 439 670 ;
+C 188 ; WX 562.11 ; N ij ; B 55 -205 588 656 ;
+C 189 ; WX 306.61 ; N exclamdown ; B 31 -216 295 500 ;
+C 190 ; WX 511 ; N questiondown ; B 59 -216 416 500 ;
+C 191 ; WX 768.89 ; N sterling ; B 62 -11 672 709 ;
+C 192 ; WX 743.17 ; N Agrave ; B 18 0 653 893 ;
+C 193 ; WX 743.17 ; N Aacute ; B 18 0 677 893 ;
+C 194 ; WX 743.17 ; N Acircumflex ; B 18 0 653 891 ;
+C 195 ; WX 743.17 ; N Atilde ; B 18 0 704 891 ;
+C 196 ; WX 743.17 ; N Adieresis ; B 18 0 683 891 ;
+C 197 ; WX 743.17 ; N Aring ; B 18 0 653 872 ;
+C 198 ; WX 882.56 ; N AE ; B 18 0 909 683 ;
+C 199 ; WX 715.39 ; N Ccedilla ; B 124 -194 786 705 ;
+C 200 ; WX 678.17 ; N Egrave ; B 19 0 703 893 ;
+C 201 ; WX 678.17 ; N Eacute ; B 19 0 703 893 ;
+C 202 ; WX 678.17 ; N Ecircumflex ; B 19 0 703 891 ;
+C 203 ; WX 678.17 ; N Edieresis ; B 19 0 703 891 ;
+C 204 ; WX 385.44 ; N Igrave ; B 14 0 462 893 ;
+C 205 ; WX 385.44 ; N Iacute ; B 14 0 498 893 ;
+C 206 ; WX 385.44 ; N Icircumflex ; B 14 0 468 891 ;
+C 207 ; WX 385.44 ; N Idieresis ; B 14 0 504 891 ;
+C 208 ; WX 754.83 ; N Eth ; B 20 0 735 683 ;
+C 209 ; WX 743.17 ; N Ntilde ; B 19 0 814 891 ;
+C 210 ; WX 766.5 ; N Ograve ; B 122 -22 761 893 ;
+C 211 ; WX 766.5 ; N Oacute ; B 122 -22 761 893 ;
+C 212 ; WX 766.5 ; N Ocircumflex ; B 122 -22 761 891 ;
+C 213 ; WX 766.5 ; N Otilde ; B 122 -22 761 891 ;
+C 214 ; WX 766.5 ; N Odieresis ; B 122 -22 761 891 ;
+C 215 ; WX 984.78 ; N OE ; B 122 -22 1011 705 ;
+C 216 ; WX 766.5 ; N Oslash ; B 94 -62 791 745 ;
+C 217 ; WX 743.17 ; N Ugrave ; B 160 -22 814 893 ;
+C 218 ; WX 743.17 ; N Uacute ; B 160 -22 814 893 ;
+C 219 ; WX 743.17 ; N Ucircumflex ; B 160 -22 814 891 ;
+C 220 ; WX 743.17 ; N Udieresis ; B 160 -22 814 891 ;
+C 221 ; WX 743.17 ; N Yacute ; B 161 0 835 893 ;
+C 222 ; WX 627.06 ; N Thorn ; B 22 0 607 683 ;
+C 223 ; WX 1073.06 ; N Germandbls ; B 48 -22 1119 705 ;
+C 224 ; WX 511 ; N agrave ; B 81 -11 512 641 ;
+C 225 ; WX 511 ; N aacute ; B 81 -11 512 641 ;
+C 226 ; WX 511 ; N acircumflex ; B 81 -11 512 639 ;
+C 227 ; WX 511 ; N atilde ; B 81 -11 521 669 ;
+C 228 ; WX 511 ; N adieresis ; B 81 -11 518 638 ;
+C 229 ; WX 511 ; N aring ; B 81 -11 512 661 ;
+C 230 ; WX 715.39 ; N ae ; B 64 -11 693 441 ;
+C 231 ; WX 459.89 ; N ccedilla ; B 73 -194 444 441 ;
+C 232 ; WX 459.89 ; N egrave ; B 86 -11 442 641 ;
+C 233 ; WX 459.89 ; N eacute ; B 86 -11 442 641 ;
+C 234 ; WX 459.89 ; N ecircumflex ; B 86 -11 456 639 ;
+C 235 ; WX 459.89 ; N edieresis ; B 86 -11 493 638 ;
+C 236 ; WX 306.61 ; N igrave ; B 55 -11 308 641 ;
+C 237 ; WX 306.61 ; N iacute ; B 55 -11 410 641 ;
+C 238 ; WX 306.61 ; N icircumflex ; B 55 -11 348 639 ;
+C 239 ; WX 306.61 ; N idieresis ; B 55 -11 416 638 ;
+C 240 ; WX 511 ; N eth ; B 71 -11 534 694 ;
+C 241 ; WX 562.11 ; N ntilde ; B 55 -11 572 669 ;
+C 242 ; WX 511 ; N ograve ; B 82 -11 485 641 ;
+C 243 ; WX 511 ; N oacute ; B 82 -11 512 641 ;
+C 244 ; WX 511 ; N ocircumflex ; B 82 -11 485 639 ;
+C 245 ; WX 511 ; N otilde ; B 82 -11 547 669 ;
+C 246 ; WX 511 ; N odieresis ; B 82 -11 518 638 ;
+C 247 ; WX 715.39 ; N oe ; B 80 -15 693 445 ;
+C 248 ; WX 511 ; N oslash ; B 40 -109 527 540 ;
+C 249 ; WX 536.56 ; N ugrave ; B 55 -11 538 641 ;
+C 250 ; WX 536.56 ; N uacute ; B 55 -11 538 641 ;
+C 251 ; WX 536.56 ; N ucircumflex ; B 55 -11 538 639 ;
+C 252 ; WX 536.56 ; N udieresis ; B 55 -11 538 638 ;
+C 253 ; WX 485.44 ; N yacute ; B 55 -205 499 641 ;
+C 254 ; WX 511 ; N thorn ; B -34 -194 491 694 ;
+C 255 ; WX 536.56 ; N germandbls ; B -46 -205 552 705 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2061
+KPX A C -25.55
+KPX A Cacute -25.55
+KPX A Ccaron -25.55
+KPX A G -25.55
+KPX A Gbreve -25.55
+KPX A O -25.55
+KPX A Oacute -25.55
+KPX A Ocircumflex -25.55
+KPX A Odieresis -25.55
+KPX A Ograve -25.55
+KPX A Ohungarumlaut -25.55
+KPX A Oslash -25.55
+KPX A Otilde -25.55
+KPX A Q -25.55
+KPX A T -76.65
+KPX A Tcaron -76.65
+KPX A Tcedilla -76.65
+KPX A U -25.55
+KPX A Uacute -25.55
+KPX A Ucircumflex -25.55
+KPX A Udieresis -25.55
+KPX A Ugrave -25.55
+KPX A Uhungarumlaut -25.55
+KPX A Uring -25.55
+KPX A V -102.2
+KPX A W -102.2
+KPX A Y -76.65
+KPX A Ydieresis -76.65
+KPX A a -51.1
+KPX A aacute -51.1
+KPX A acircumflex -51.1
+KPX A acircumflex -51.1
+KPX A adieresis -51.1
+KPX A ae -51.1
+KPX A agrave -51.1
+KPX A aogonek -51.1
+KPX A aring -51.1
+KPX A atilde -51.1
+KPX A b -25.55
+KPX A c -51.1
+KPX A cacute -51.1
+KPX A cacute -51.1
+KPX A ccaron -51.1
+KPX A ccedilla -51.1
+KPX A d -51.1
+KPX A dbar -51.1
+KPX A e -51.1
+KPX A eacute -51.1
+KPX A ecaron -51.1
+KPX A ecircumflex -51.1
+KPX A edieresis -51.1
+KPX A egrave -51.1
+KPX A eogonek -51.1
+KPX A g -51.1
+KPX A gbreve -51.1
+KPX A h -25.55
+KPX A i -25.55
+KPX A iacute -25.55
+KPX A k -25.55
+KPX A l -25.55
+KPX A lacute -25.55
+KPX A lquoteright -25.55
+KPX A m -25.55
+KPX A n -25.55
+KPX A o -51.1
+KPX A oacute -51.1
+KPX A ocircumflex -51.1
+KPX A odieresis -51.1
+KPX A oe -51.1
+KPX A ograve -51.1
+KPX A ohungarumlaut -51.1
+KPX A oslash -51.1
+KPX A otilde -51.1
+KPX A q -51.1
+KPX A r -25.55
+KPX A t -25.55
+KPX A tcedilla -25.55
+KPX A tquoteright -25.55
+KPX A u -25.55
+KPX A uacute -25.55
+KPX A ucircumflex -25.55
+KPX A udieresis -25.55
+KPX A ugrave -25.55
+KPX A uhungarumlaut -25.55
+KPX A uring -25.55
+KPX A v -25.55
+KPX A w -25.55
+KPX Aacute C -25.55
+KPX Aacute Cacute -25.55
+KPX Aacute Ccaron -25.55
+KPX Aacute G -25.55
+KPX Aacute Gbreve -25.55
+KPX Aacute O -25.55
+KPX Aacute Oacute -25.55
+KPX Aacute Ocircumflex -25.55
+KPX Aacute Odieresis -25.55
+KPX Aacute Ograve -25.55
+KPX Aacute Ohungarumlaut -25.55
+KPX Aacute Oslash -25.55
+KPX Aacute Otilde -25.55
+KPX Aacute Q -25.55
+KPX Aacute T -76.65
+KPX Aacute Tcaron -76.65
+KPX Aacute Tcedilla -76.65
+KPX Aacute U -25.55
+KPX Aacute Uacute -25.55
+KPX Aacute Ucircumflex -25.55
+KPX Aacute Udieresis -25.55
+KPX Aacute Ugrave -25.55
+KPX Aacute Uhungarumlaut -25.55
+KPX Aacute Uring -25.55
+KPX Aacute V -102.2
+KPX Aacute W -102.2
+KPX Aacute Y -76.65
+KPX Aacute Ydieresis -76.65
+KPX Aacute a -51.1
+KPX Aacute aacute -51.1
+KPX Aacute acircumflex -51.1
+KPX Aacute acircumflex -51.1
+KPX Aacute adieresis -51.1
+KPX Aacute ae -51.1
+KPX Aacute agrave -51.1
+KPX Aacute aogonek -51.1
+KPX Aacute aring -51.1
+KPX Aacute atilde -51.1
+KPX Aacute b -25.55
+KPX Aacute c -51.1
+KPX Aacute cacute -51.1
+KPX Aacute cacute -51.1
+KPX Aacute ccaron -51.1
+KPX Aacute ccedilla -51.1
+KPX Aacute d -51.1
+KPX Aacute dbar -51.1
+KPX Aacute e -51.1
+KPX Aacute eacute -51.1
+KPX Aacute ecaron -51.1
+KPX Aacute ecircumflex -51.1
+KPX Aacute edieresis -51.1
+KPX Aacute egrave -51.1
+KPX Aacute eogonek -51.1
+KPX Aacute g -51.1
+KPX Aacute gbreve -51.1
+KPX Aacute h -25.55
+KPX Aacute i -25.55
+KPX Aacute iacute -25.55
+KPX Aacute k -25.55
+KPX Aacute l -25.55
+KPX Aacute lacute -25.55
+KPX Aacute lquoteright -25.55
+KPX Aacute m -25.55
+KPX Aacute n -25.55
+KPX Aacute o -51.1
+KPX Aacute oacute -51.1
+KPX Aacute ocircumflex -51.1
+KPX Aacute odieresis -51.1
+KPX Aacute oe -51.1
+KPX Aacute ograve -51.1
+KPX Aacute ohungarumlaut -51.1
+KPX Aacute oslash -51.1
+KPX Aacute otilde -51.1
+KPX Aacute q -51.1
+KPX Aacute r -25.55
+KPX Aacute t -25.55
+KPX Aacute tcedilla -25.55
+KPX Aacute tquoteright -25.55
+KPX Aacute u -25.55
+KPX Aacute uacute -25.55
+KPX Aacute ucircumflex -25.55
+KPX Aacute udieresis -25.55
+KPX Aacute ugrave -25.55
+KPX Aacute uhungarumlaut -25.55
+KPX Aacute uring -25.55
+KPX Aacute v -25.55
+KPX Aacute w -25.55
+KPX Abreve C -25.55
+KPX Abreve Cacute -25.55
+KPX Abreve Ccaron -25.55
+KPX Abreve G -25.55
+KPX Abreve Gbreve -25.55
+KPX Abreve O -25.55
+KPX Abreve Oacute -25.55
+KPX Abreve Ocircumflex -25.55
+KPX Abreve Odieresis -25.55
+KPX Abreve Ograve -25.55
+KPX Abreve Ohungarumlaut -25.55
+KPX Abreve Oslash -25.55
+KPX Abreve Otilde -25.55
+KPX Abreve Q -25.55
+KPX Abreve T -76.65
+KPX Abreve Tcaron -76.65
+KPX Abreve Tcedilla -76.65
+KPX Abreve U -25.55
+KPX Abreve Uacute -25.55
+KPX Abreve Ucircumflex -25.55
+KPX Abreve Udieresis -25.55
+KPX Abreve Ugrave -25.55
+KPX Abreve Uhungarumlaut -25.55
+KPX Abreve Uring -25.55
+KPX Abreve V -102.2
+KPX Abreve W -102.2
+KPX Abreve Y -76.65
+KPX Abreve Ydieresis -76.65
+KPX Abreve a -51.1
+KPX Abreve aacute -51.1
+KPX Abreve acircumflex -51.1
+KPX Abreve acircumflex -51.1
+KPX Abreve adieresis -51.1
+KPX Abreve ae -51.1
+KPX Abreve agrave -51.1
+KPX Abreve aogonek -51.1
+KPX Abreve aring -51.1
+KPX Abreve atilde -51.1
+KPX Abreve b -25.55
+KPX Abreve c -51.1
+KPX Abreve cacute -51.1
+KPX Abreve cacute -51.1
+KPX Abreve ccaron -51.1
+KPX Abreve ccedilla -51.1
+KPX Abreve d -51.1
+KPX Abreve dbar -51.1
+KPX Abreve e -51.1
+KPX Abreve eacute -51.1
+KPX Abreve ecaron -51.1
+KPX Abreve ecircumflex -51.1
+KPX Abreve edieresis -51.1
+KPX Abreve egrave -51.1
+KPX Abreve eogonek -51.1
+KPX Abreve g -51.1
+KPX Abreve gbreve -51.1
+KPX Abreve h -25.55
+KPX Abreve i -25.55
+KPX Abreve iacute -25.55
+KPX Abreve k -25.55
+KPX Abreve l -25.55
+KPX Abreve lacute -25.55
+KPX Abreve lquoteright -25.55
+KPX Abreve m -25.55
+KPX Abreve n -25.55
+KPX Abreve o -51.1
+KPX Abreve oacute -51.1
+KPX Abreve ocircumflex -51.1
+KPX Abreve odieresis -51.1
+KPX Abreve oe -51.1
+KPX Abreve ograve -51.1
+KPX Abreve ohungarumlaut -51.1
+KPX Abreve oslash -51.1
+KPX Abreve otilde -51.1
+KPX Abreve q -51.1
+KPX Abreve r -25.55
+KPX Abreve t -25.55
+KPX Abreve tcedilla -25.55
+KPX Abreve tquoteright -25.55
+KPX Abreve u -25.55
+KPX Abreve uacute -25.55
+KPX Abreve ucircumflex -25.55
+KPX Abreve udieresis -25.55
+KPX Abreve ugrave -25.55
+KPX Abreve uhungarumlaut -25.55
+KPX Abreve uring -25.55
+KPX Abreve v -25.55
+KPX Abreve w -25.55
+KPX Acircumflex C -25.55
+KPX Acircumflex Cacute -25.55
+KPX Acircumflex Ccaron -25.55
+KPX Acircumflex G -25.55
+KPX Acircumflex Gbreve -25.55
+KPX Acircumflex O -25.55
+KPX Acircumflex Oacute -25.55
+KPX Acircumflex Ocircumflex -25.55
+KPX Acircumflex Odieresis -25.55
+KPX Acircumflex Ograve -25.55
+KPX Acircumflex Ohungarumlaut -25.55
+KPX Acircumflex Oslash -25.55
+KPX Acircumflex Otilde -25.55
+KPX Acircumflex Q -25.55
+KPX Acircumflex T -76.65
+KPX Acircumflex Tcaron -76.65
+KPX Acircumflex Tcedilla -76.65
+KPX Acircumflex U -25.55
+KPX Acircumflex Uacute -25.55
+KPX Acircumflex Ucircumflex -25.55
+KPX Acircumflex Udieresis -25.55
+KPX Acircumflex Ugrave -25.55
+KPX Acircumflex Uhungarumlaut -25.55
+KPX Acircumflex Uring -25.55
+KPX Acircumflex V -102.2
+KPX Acircumflex W -102.2
+KPX Acircumflex Y -76.65
+KPX Acircumflex Ydieresis -76.65
+KPX Acircumflex a -51.1
+KPX Acircumflex aacute -51.1
+KPX Acircumflex acircumflex -51.1
+KPX Acircumflex acircumflex -51.1
+KPX Acircumflex adieresis -51.1
+KPX Acircumflex ae -51.1
+KPX Acircumflex agrave -51.1
+KPX Acircumflex aogonek -51.1
+KPX Acircumflex aring -51.1
+KPX Acircumflex atilde -51.1
+KPX Acircumflex b -25.55
+KPX Acircumflex c -51.1
+KPX Acircumflex cacute -51.1
+KPX Acircumflex cacute -51.1
+KPX Acircumflex ccaron -51.1
+KPX Acircumflex ccedilla -51.1
+KPX Acircumflex d -51.1
+KPX Acircumflex dbar -51.1
+KPX Acircumflex e -51.1
+KPX Acircumflex eacute -51.1
+KPX Acircumflex ecaron -51.1
+KPX Acircumflex ecircumflex -51.1
+KPX Acircumflex edieresis -51.1
+KPX Acircumflex egrave -51.1
+KPX Acircumflex eogonek -51.1
+KPX Acircumflex g -51.1
+KPX Acircumflex gbreve -51.1
+KPX Acircumflex h -25.55
+KPX Acircumflex i -25.55
+KPX Acircumflex iacute -25.55
+KPX Acircumflex k -25.55
+KPX Acircumflex l -25.55
+KPX Acircumflex lacute -25.55
+KPX Acircumflex lquoteright -25.55
+KPX Acircumflex m -25.55
+KPX Acircumflex n -25.55
+KPX Acircumflex o -51.1
+KPX Acircumflex oacute -51.1
+KPX Acircumflex ocircumflex -51.1
+KPX Acircumflex odieresis -51.1
+KPX Acircumflex oe -51.1
+KPX Acircumflex ograve -51.1
+KPX Acircumflex ohungarumlaut -51.1
+KPX Acircumflex oslash -51.1
+KPX Acircumflex otilde -51.1
+KPX Acircumflex q -51.1
+KPX Acircumflex r -25.55
+KPX Acircumflex t -25.55
+KPX Acircumflex tcedilla -25.55
+KPX Acircumflex tquoteright -25.55
+KPX Acircumflex u -25.55
+KPX Acircumflex uacute -25.55
+KPX Acircumflex ucircumflex -25.55
+KPX Acircumflex udieresis -25.55
+KPX Acircumflex ugrave -25.55
+KPX Acircumflex uhungarumlaut -25.55
+KPX Acircumflex uring -25.55
+KPX Acircumflex v -25.55
+KPX Acircumflex w -25.55
+KPX Adieresis C -25.55
+KPX Adieresis Cacute -25.55
+KPX Adieresis Ccaron -25.55
+KPX Adieresis G -25.55
+KPX Adieresis Gbreve -25.55
+KPX Adieresis O -25.55
+KPX Adieresis Oacute -25.55
+KPX Adieresis Ocircumflex -25.55
+KPX Adieresis Odieresis -25.55
+KPX Adieresis Ograve -25.55
+KPX Adieresis Ohungarumlaut -25.55
+KPX Adieresis Oslash -25.55
+KPX Adieresis Otilde -25.55
+KPX Adieresis Q -25.55
+KPX Adieresis T -76.65
+KPX Adieresis Tcaron -76.65
+KPX Adieresis Tcedilla -76.65
+KPX Adieresis U -25.55
+KPX Adieresis Uacute -25.55
+KPX Adieresis Ucircumflex -25.55
+KPX Adieresis Udieresis -25.55
+KPX Adieresis Ugrave -25.55
+KPX Adieresis Uhungarumlaut -25.55
+KPX Adieresis Uring -25.55
+KPX Adieresis V -102.2
+KPX Adieresis W -102.2
+KPX Adieresis Y -76.65
+KPX Adieresis Ydieresis -76.65
+KPX Adieresis a -51.1
+KPX Adieresis aacute -51.1
+KPX Adieresis acircumflex -51.1
+KPX Adieresis acircumflex -51.1
+KPX Adieresis adieresis -51.1
+KPX Adieresis ae -51.1
+KPX Adieresis agrave -51.1
+KPX Adieresis aogonek -51.1
+KPX Adieresis aring -51.1
+KPX Adieresis atilde -51.1
+KPX Adieresis b -25.55
+KPX Adieresis c -51.1
+KPX Adieresis cacute -51.1
+KPX Adieresis cacute -51.1
+KPX Adieresis ccaron -51.1
+KPX Adieresis ccedilla -51.1
+KPX Adieresis d -51.1
+KPX Adieresis dbar -51.1
+KPX Adieresis e -51.1
+KPX Adieresis eacute -51.1
+KPX Adieresis ecaron -51.1
+KPX Adieresis ecircumflex -51.1
+KPX Adieresis edieresis -51.1
+KPX Adieresis egrave -51.1
+KPX Adieresis eogonek -51.1
+KPX Adieresis g -51.1
+KPX Adieresis gbreve -51.1
+KPX Adieresis h -25.55
+KPX Adieresis i -25.55
+KPX Adieresis iacute -25.55
+KPX Adieresis k -25.55
+KPX Adieresis l -25.55
+KPX Adieresis lacute -25.55
+KPX Adieresis lquoteright -25.55
+KPX Adieresis m -25.55
+KPX Adieresis n -25.55
+KPX Adieresis o -51.1
+KPX Adieresis oacute -51.1
+KPX Adieresis ocircumflex -51.1
+KPX Adieresis odieresis -51.1
+KPX Adieresis oe -51.1
+KPX Adieresis ograve -51.1
+KPX Adieresis ohungarumlaut -51.1
+KPX Adieresis oslash -51.1
+KPX Adieresis otilde -51.1
+KPX Adieresis q -51.1
+KPX Adieresis r -25.55
+KPX Adieresis t -25.55
+KPX Adieresis tcedilla -25.55
+KPX Adieresis tquoteright -25.55
+KPX Adieresis u -25.55
+KPX Adieresis uacute -25.55
+KPX Adieresis ucircumflex -25.55
+KPX Adieresis udieresis -25.55
+KPX Adieresis ugrave -25.55
+KPX Adieresis uhungarumlaut -25.55
+KPX Adieresis uring -25.55
+KPX Adieresis v -25.55
+KPX Adieresis w -25.55
+KPX Agrave C -25.55
+KPX Agrave Cacute -25.55
+KPX Agrave Ccaron -25.55
+KPX Agrave G -25.55
+KPX Agrave Gbreve -25.55
+KPX Agrave O -25.55
+KPX Agrave Oacute -25.55
+KPX Agrave Ocircumflex -25.55
+KPX Agrave Odieresis -25.55
+KPX Agrave Ograve -25.55
+KPX Agrave Ohungarumlaut -25.55
+KPX Agrave Oslash -25.55
+KPX Agrave Otilde -25.55
+KPX Agrave Q -25.55
+KPX Agrave T -76.65
+KPX Agrave Tcaron -76.65
+KPX Agrave Tcedilla -76.65
+KPX Agrave U -25.55
+KPX Agrave Uacute -25.55
+KPX Agrave Ucircumflex -25.55
+KPX Agrave Udieresis -25.55
+KPX Agrave Ugrave -25.55
+KPX Agrave Uhungarumlaut -25.55
+KPX Agrave Uring -25.55
+KPX Agrave V -102.2
+KPX Agrave W -102.2
+KPX Agrave Y -76.65
+KPX Agrave Ydieresis -76.65
+KPX Agrave a -51.1
+KPX Agrave aacute -51.1
+KPX Agrave acircumflex -51.1
+KPX Agrave acircumflex -51.1
+KPX Agrave adieresis -51.1
+KPX Agrave ae -51.1
+KPX Agrave agrave -51.1
+KPX Agrave aogonek -51.1
+KPX Agrave aring -51.1
+KPX Agrave atilde -51.1
+KPX Agrave b -25.55
+KPX Agrave c -51.1
+KPX Agrave cacute -51.1
+KPX Agrave cacute -51.1
+KPX Agrave ccaron -51.1
+KPX Agrave ccedilla -51.1
+KPX Agrave d -51.1
+KPX Agrave dbar -51.1
+KPX Agrave e -51.1
+KPX Agrave eacute -51.1
+KPX Agrave ecaron -51.1
+KPX Agrave ecircumflex -51.1
+KPX Agrave edieresis -51.1
+KPX Agrave egrave -51.1
+KPX Agrave eogonek -51.1
+KPX Agrave g -51.1
+KPX Agrave gbreve -51.1
+KPX Agrave h -25.55
+KPX Agrave i -25.55
+KPX Agrave iacute -25.55
+KPX Agrave k -25.55
+KPX Agrave l -25.55
+KPX Agrave lacute -25.55
+KPX Agrave lquoteright -25.55
+KPX Agrave m -25.55
+KPX Agrave n -25.55
+KPX Agrave o -51.1
+KPX Agrave oacute -51.1
+KPX Agrave ocircumflex -51.1
+KPX Agrave odieresis -51.1
+KPX Agrave oe -51.1
+KPX Agrave ograve -51.1
+KPX Agrave ohungarumlaut -51.1
+KPX Agrave oslash -51.1
+KPX Agrave otilde -51.1
+KPX Agrave q -51.1
+KPX Agrave r -25.55
+KPX Agrave t -25.55
+KPX Agrave tcedilla -25.55
+KPX Agrave tquoteright -25.55
+KPX Agrave u -25.55
+KPX Agrave uacute -25.55
+KPX Agrave ucircumflex -25.55
+KPX Agrave udieresis -25.55
+KPX Agrave ugrave -25.55
+KPX Agrave uhungarumlaut -25.55
+KPX Agrave uring -25.55
+KPX Agrave v -25.55
+KPX Agrave w -25.55
+KPX Aogonek C -25.55
+KPX Aogonek Cacute -25.55
+KPX Aogonek Ccaron -25.55
+KPX Aogonek G -25.55
+KPX Aogonek Gbreve -25.55
+KPX Aogonek O -25.55
+KPX Aogonek Oacute -25.55
+KPX Aogonek Ocircumflex -25.55
+KPX Aogonek Odieresis -25.55
+KPX Aogonek Ograve -25.55
+KPX Aogonek Ohungarumlaut -25.55
+KPX Aogonek Oslash -25.55
+KPX Aogonek Otilde -25.55
+KPX Aogonek Q -25.55
+KPX Aogonek T -76.65
+KPX Aogonek Tcaron -76.65
+KPX Aogonek Tcedilla -76.65
+KPX Aogonek U -25.55
+KPX Aogonek Uacute -25.55
+KPX Aogonek Ucircumflex -25.55
+KPX Aogonek Udieresis -25.55
+KPX Aogonek Ugrave -25.55
+KPX Aogonek Uhungarumlaut -25.55
+KPX Aogonek Uring -25.55
+KPX Aogonek V -102.2
+KPX Aogonek W -102.2
+KPX Aogonek Y -76.65
+KPX Aogonek Ydieresis -76.65
+KPX Aogonek a -51.1
+KPX Aogonek aacute -51.1
+KPX Aogonek acircumflex -51.1
+KPX Aogonek acircumflex -51.1
+KPX Aogonek adieresis -51.1
+KPX Aogonek ae -51.1
+KPX Aogonek agrave -51.1
+KPX Aogonek aogonek -51.1
+KPX Aogonek aring -51.1
+KPX Aogonek atilde -51.1
+KPX Aogonek b -25.55
+KPX Aogonek c -51.1
+KPX Aogonek cacute -51.1
+KPX Aogonek cacute -51.1
+KPX Aogonek ccaron -51.1
+KPX Aogonek ccedilla -51.1
+KPX Aogonek d -51.1
+KPX Aogonek dbar -51.1
+KPX Aogonek e -51.1
+KPX Aogonek eacute -51.1
+KPX Aogonek ecaron -51.1
+KPX Aogonek ecircumflex -51.1
+KPX Aogonek edieresis -51.1
+KPX Aogonek egrave -51.1
+KPX Aogonek eogonek -51.1
+KPX Aogonek g -51.1
+KPX Aogonek gbreve -51.1
+KPX Aogonek h -25.55
+KPX Aogonek i -25.55
+KPX Aogonek iacute -25.55
+KPX Aogonek k -25.55
+KPX Aogonek l -25.55
+KPX Aogonek lacute -25.55
+KPX Aogonek lquoteright -25.55
+KPX Aogonek m -25.55
+KPX Aogonek n -25.55
+KPX Aogonek o -51.1
+KPX Aogonek oacute -51.1
+KPX Aogonek ocircumflex -51.1
+KPX Aogonek odieresis -51.1
+KPX Aogonek oe -51.1
+KPX Aogonek ograve -51.1
+KPX Aogonek ohungarumlaut -51.1
+KPX Aogonek oslash -51.1
+KPX Aogonek otilde -51.1
+KPX Aogonek q -51.1
+KPX Aogonek r -25.55
+KPX Aogonek t -25.55
+KPX Aogonek tcedilla -25.55
+KPX Aogonek tquoteright -25.55
+KPX Aogonek u -25.55
+KPX Aogonek uacute -25.55
+KPX Aogonek ucircumflex -25.55
+KPX Aogonek udieresis -25.55
+KPX Aogonek ugrave -25.55
+KPX Aogonek uhungarumlaut -25.55
+KPX Aogonek uring -25.55
+KPX Aogonek v -25.55
+KPX Aogonek w -25.55
+KPX Aring C -25.55
+KPX Aring Cacute -25.55
+KPX Aring Ccaron -25.55
+KPX Aring G -25.55
+KPX Aring Gbreve -25.55
+KPX Aring O -25.55
+KPX Aring Oacute -25.55
+KPX Aring Ocircumflex -25.55
+KPX Aring Odieresis -25.55
+KPX Aring Ograve -25.55
+KPX Aring Ohungarumlaut -25.55
+KPX Aring Oslash -25.55
+KPX Aring Otilde -25.55
+KPX Aring Q -25.55
+KPX Aring T -76.65
+KPX Aring Tcaron -76.65
+KPX Aring Tcedilla -76.65
+KPX Aring U -25.55
+KPX Aring Uacute -25.55
+KPX Aring Ucircumflex -25.55
+KPX Aring Udieresis -25.55
+KPX Aring Ugrave -25.55
+KPX Aring Uhungarumlaut -25.55
+KPX Aring Uring -25.55
+KPX Aring V -102.2
+KPX Aring W -102.2
+KPX Aring Y -76.65
+KPX Aring Ydieresis -76.65
+KPX Aring a -51.1
+KPX Aring aacute -51.1
+KPX Aring acircumflex -51.1
+KPX Aring acircumflex -51.1
+KPX Aring adieresis -51.1
+KPX Aring ae -51.1
+KPX Aring agrave -51.1
+KPX Aring aogonek -51.1
+KPX Aring aring -51.1
+KPX Aring atilde -51.1
+KPX Aring b -25.55
+KPX Aring c -51.1
+KPX Aring cacute -51.1
+KPX Aring cacute -51.1
+KPX Aring ccaron -51.1
+KPX Aring ccedilla -51.1
+KPX Aring d -51.1
+KPX Aring dbar -51.1
+KPX Aring e -51.1
+KPX Aring eacute -51.1
+KPX Aring ecaron -51.1
+KPX Aring ecircumflex -51.1
+KPX Aring edieresis -51.1
+KPX Aring egrave -51.1
+KPX Aring eogonek -51.1
+KPX Aring g -51.1
+KPX Aring gbreve -51.1
+KPX Aring h -25.55
+KPX Aring i -25.55
+KPX Aring iacute -25.55
+KPX Aring k -25.55
+KPX Aring l -25.55
+KPX Aring lacute -25.55
+KPX Aring lquoteright -25.55
+KPX Aring m -25.55
+KPX Aring n -25.55
+KPX Aring o -51.1
+KPX Aring oacute -51.1
+KPX Aring ocircumflex -51.1
+KPX Aring odieresis -51.1
+KPX Aring oe -51.1
+KPX Aring ograve -51.1
+KPX Aring ohungarumlaut -51.1
+KPX Aring oslash -51.1
+KPX Aring otilde -51.1
+KPX Aring q -51.1
+KPX Aring r -25.55
+KPX Aring t -25.55
+KPX Aring tcedilla -25.55
+KPX Aring tquoteright -25.55
+KPX Aring u -25.55
+KPX Aring uacute -25.55
+KPX Aring ucircumflex -25.55
+KPX Aring udieresis -25.55
+KPX Aring ugrave -25.55
+KPX Aring uhungarumlaut -25.55
+KPX Aring uring -25.55
+KPX Aring v -25.55
+KPX Aring w -25.55
+KPX Atilde C -25.55
+KPX Atilde Cacute -25.55
+KPX Atilde Ccaron -25.55
+KPX Atilde G -25.55
+KPX Atilde Gbreve -25.55
+KPX Atilde O -25.55
+KPX Atilde Oacute -25.55
+KPX Atilde Ocircumflex -25.55
+KPX Atilde Odieresis -25.55
+KPX Atilde Ograve -25.55
+KPX Atilde Ohungarumlaut -25.55
+KPX Atilde Oslash -25.55
+KPX Atilde Otilde -25.55
+KPX Atilde Q -25.55
+KPX Atilde T -76.65
+KPX Atilde Tcaron -76.65
+KPX Atilde Tcedilla -76.65
+KPX Atilde U -25.55
+KPX Atilde Uacute -25.55
+KPX Atilde Ucircumflex -25.55
+KPX Atilde Udieresis -25.55
+KPX Atilde Ugrave -25.55
+KPX Atilde Uhungarumlaut -25.55
+KPX Atilde Uring -25.55
+KPX Atilde V -102.2
+KPX Atilde W -102.2
+KPX Atilde Y -76.65
+KPX Atilde Ydieresis -76.65
+KPX Atilde a -51.1
+KPX Atilde aacute -51.1
+KPX Atilde acircumflex -51.1
+KPX Atilde acircumflex -51.1
+KPX Atilde adieresis -51.1
+KPX Atilde ae -51.1
+KPX Atilde agrave -51.1
+KPX Atilde aogonek -51.1
+KPX Atilde aring -51.1
+KPX Atilde atilde -51.1
+KPX Atilde b -25.55
+KPX Atilde c -51.1
+KPX Atilde cacute -51.1
+KPX Atilde cacute -51.1
+KPX Atilde ccaron -51.1
+KPX Atilde ccedilla -51.1
+KPX Atilde d -51.1
+KPX Atilde dbar -51.1
+KPX Atilde e -51.1
+KPX Atilde eacute -51.1
+KPX Atilde ecaron -51.1
+KPX Atilde ecircumflex -51.1
+KPX Atilde edieresis -51.1
+KPX Atilde egrave -51.1
+KPX Atilde eogonek -51.1
+KPX Atilde g -51.1
+KPX Atilde gbreve -51.1
+KPX Atilde h -25.55
+KPX Atilde i -25.55
+KPX Atilde iacute -25.55
+KPX Atilde k -25.55
+KPX Atilde l -25.55
+KPX Atilde lacute -25.55
+KPX Atilde lquoteright -25.55
+KPX Atilde m -25.55
+KPX Atilde n -25.55
+KPX Atilde o -51.1
+KPX Atilde oacute -51.1
+KPX Atilde ocircumflex -51.1
+KPX Atilde odieresis -51.1
+KPX Atilde oe -51.1
+KPX Atilde ograve -51.1
+KPX Atilde ohungarumlaut -51.1
+KPX Atilde oslash -51.1
+KPX Atilde otilde -51.1
+KPX Atilde q -51.1
+KPX Atilde r -25.55
+KPX Atilde t -25.55
+KPX Atilde tcedilla -25.55
+KPX Atilde tquoteright -25.55
+KPX Atilde u -25.55
+KPX Atilde uacute -25.55
+KPX Atilde ucircumflex -25.55
+KPX Atilde udieresis -25.55
+KPX Atilde ugrave -25.55
+KPX Atilde uhungarumlaut -25.55
+KPX Atilde uring -25.55
+KPX Atilde v -25.55
+KPX Atilde w -25.55
+KPX D A -25.55
+KPX D Aacute -25.55
+KPX D Abreve -25.55
+KPX D Acircumflex -25.55
+KPX D Adieresis -25.55
+KPX D Agrave -25.55
+KPX D Aogonek -25.55
+KPX D Aring -25.55
+KPX D Atilde -25.55
+KPX D V -25.55
+KPX D W -25.55
+KPX D X -25.55
+KPX D Y -25.55
+KPX D Yacute -25.55
+KPX Dcaron A -25.55
+KPX Dcaron Aacute -25.55
+KPX Dcaron Abreve -25.55
+KPX Dcaron Acircumflex -25.55
+KPX Dcaron Adieresis -25.55
+KPX Dcaron Agrave -25.55
+KPX Dcaron Aogonek -25.55
+KPX Dcaron Aring -25.55
+KPX Dcaron Atilde -25.55
+KPX Dcaron V -25.55
+KPX Dcaron W -25.55
+KPX Dcaron X -25.55
+KPX Dcaron Y -25.55
+KPX Dcaron Yacute -25.55
+KPX F A -102.2
+KPX F Aacute -102.2
+KPX F Abreve -102.2
+KPX F Acircumflex -102.2
+KPX F Adieresis -102.2
+KPX F Agrave -102.2
+KPX F Aogonek -102.2
+KPX F Aring -102.2
+KPX F Atilde -102.2
+KPX F C -25.55
+KPX F Cacute -25.55
+KPX F Ccaron -25.55
+KPX F G -25.55
+KPX F Gbreve -25.55
+KPX F O -25.55
+KPX F Oacute -25.55
+KPX F Ocircumflex -25.55
+KPX F Odieresis -25.55
+KPX F Ograve -25.55
+KPX F Ohungarumlaut -25.55
+KPX F Oslash -25.55
+KPX F Otilde -25.55
+KPX F Q -25.55
+KPX F a -76.65
+KPX F aogonek -76.65
+KPX F e -76.65
+KPX F eogonek -76.65
+KPX F o -76.65
+KPX F r -76.65
+KPX F u -76.65
+KPX K C -25.55
+KPX K Cacute -25.55
+KPX K Ccaron -25.55
+KPX K G -25.55
+KPX K Gbreve -25.55
+KPX K O -25.55
+KPX K Oacute -25.55
+KPX K Ocircumflex -25.55
+KPX K Odieresis -25.55
+KPX K Ograve -25.55
+KPX K Ohungarumlaut -25.55
+KPX K Oslash -25.55
+KPX K Otilde -25.55
+KPX K Q -25.55
+KPX L T -76.65
+KPX L Tcaron -76.65
+KPX L Tcedilla -76.65
+KPX L V -102.2
+KPX L W -102.2
+KPX L Y -76.65
+KPX L Ydieresis -76.65
+KPX L a -51.1
+KPX L aacute -51.1
+KPX L acircumflex -51.1
+KPX L acircumflex -51.1
+KPX L adieresis -51.1
+KPX L ae -51.1
+KPX L agrave -51.1
+KPX L aogonek -51.1
+KPX L aring -51.1
+KPX L atilde -51.1
+KPX L c -51.1
+KPX L cacute -51.1
+KPX L cacute -51.1
+KPX L ccaron -51.1
+KPX L ccedilla -51.1
+KPX L d -51.1
+KPX L dbar -51.1
+KPX L e -51.1
+KPX L eacute -51.1
+KPX L ecaron -51.1
+KPX L ecircumflex -51.1
+KPX L edieresis -51.1
+KPX L egrave -51.1
+KPX L eogonek -51.1
+KPX L g -51.1
+KPX L gbreve -51.1
+KPX L o -51.1
+KPX L oacute -51.1
+KPX L ocircumflex -51.1
+KPX L odieresis -51.1
+KPX L oe -51.1
+KPX L ograve -51.1
+KPX L ohungarumlaut -51.1
+KPX L oslash -51.1
+KPX L otilde -51.1
+KPX L q -51.1
+KPX O A -25.55
+KPX O Aacute -25.55
+KPX O Abreve -25.55
+KPX O Acircumflex -25.55
+KPX O Adieresis -25.55
+KPX O Agrave -25.55
+KPX O Aogonek -25.55
+KPX O Aring -25.55
+KPX O Atilde -25.55
+KPX O V -25.55
+KPX O W -25.55
+KPX O X -25.55
+KPX O Y -25.55
+KPX O Yacute -25.55
+KPX Oacute A -25.55
+KPX Oacute Aacute -25.55
+KPX Oacute Abreve -25.55
+KPX Oacute Acircumflex -25.55
+KPX Oacute Adieresis -25.55
+KPX Oacute Agrave -25.55
+KPX Oacute Aogonek -25.55
+KPX Oacute Aring -25.55
+KPX Oacute Atilde -25.55
+KPX Oacute V -25.55
+KPX Oacute W -25.55
+KPX Oacute X -25.55
+KPX Oacute Y -25.55
+KPX Oacute Yacute -25.55
+KPX Ocircumflex A -25.55
+KPX Ocircumflex Aacute -25.55
+KPX Ocircumflex Abreve -25.55
+KPX Ocircumflex Acircumflex -25.55
+KPX Ocircumflex Adieresis -25.55
+KPX Ocircumflex Agrave -25.55
+KPX Ocircumflex Aogonek -25.55
+KPX Ocircumflex Aring -25.55
+KPX Ocircumflex Atilde -25.55
+KPX Ocircumflex V -25.55
+KPX Ocircumflex W -25.55
+KPX Ocircumflex X -25.55
+KPX Ocircumflex Y -25.55
+KPX Ocircumflex Yacute -25.55
+KPX Odieresis A -25.55
+KPX Odieresis Aacute -25.55
+KPX Odieresis Abreve -25.55
+KPX Odieresis Acircumflex -25.55
+KPX Odieresis Adieresis -25.55
+KPX Odieresis Agrave -25.55
+KPX Odieresis Aogonek -25.55
+KPX Odieresis Aring -25.55
+KPX Odieresis Atilde -25.55
+KPX Odieresis V -25.55
+KPX Odieresis W -25.55
+KPX Odieresis X -25.55
+KPX Odieresis Y -25.55
+KPX Odieresis Yacute -25.55
+KPX Ograve A -25.55
+KPX Ograve Aacute -25.55
+KPX Ograve Abreve -25.55
+KPX Ograve Acircumflex -25.55
+KPX Ograve Adieresis -25.55
+KPX Ograve Agrave -25.55
+KPX Ograve Aogonek -25.55
+KPX Ograve Aring -25.55
+KPX Ograve Atilde -25.55
+KPX Ograve V -25.55
+KPX Ograve W -25.55
+KPX Ograve X -25.55
+KPX Ograve Y -25.55
+KPX Ograve Yacute -25.55
+KPX Ohungarumlaut A -25.55
+KPX Ohungarumlaut Aacute -25.55
+KPX Ohungarumlaut Abreve -25.55
+KPX Ohungarumlaut Acircumflex -25.55
+KPX Ohungarumlaut Adieresis -25.55
+KPX Ohungarumlaut Agrave -25.55
+KPX Ohungarumlaut Aogonek -25.55
+KPX Ohungarumlaut Aring -25.55
+KPX Ohungarumlaut Atilde -25.55
+KPX Ohungarumlaut V -25.55
+KPX Ohungarumlaut W -25.55
+KPX Ohungarumlaut X -25.55
+KPX Ohungarumlaut Y -25.55
+KPX Ohungarumlaut Yacute -25.55
+KPX Oslash A -25.55
+KPX Oslash Aacute -25.55
+KPX Oslash Abreve -25.55
+KPX Oslash Acircumflex -25.55
+KPX Oslash Adieresis -25.55
+KPX Oslash Agrave -25.55
+KPX Oslash Aogonek -25.55
+KPX Oslash Aring -25.55
+KPX Oslash Atilde -25.55
+KPX Oslash V -25.55
+KPX Oslash W -25.55
+KPX Oslash X -25.55
+KPX Oslash Y -25.55
+KPX Oslash Yacute -25.55
+KPX Otilde A -25.55
+KPX Otilde Aacute -25.55
+KPX Otilde Abreve -25.55
+KPX Otilde Acircumflex -25.55
+KPX Otilde Adieresis -25.55
+KPX Otilde Agrave -25.55
+KPX Otilde Aogonek -25.55
+KPX Otilde Aring -25.55
+KPX Otilde Atilde -25.55
+KPX Otilde V -25.55
+KPX Otilde W -25.55
+KPX Otilde X -25.55
+KPX Otilde Y -25.55
+KPX Otilde Yacute -25.55
+KPX P A -76.65
+KPX P Aacute -76.65
+KPX P Abreve -76.65
+KPX P Acircumflex -76.65
+KPX P Adieresis -76.65
+KPX P Agrave -76.65
+KPX P Aogonek -76.65
+KPX P Aring -76.65
+KPX P Atilde -76.65
+KPX R C -25.55
+KPX R Cacute -25.55
+KPX R Ccaron -25.55
+KPX R G -25.55
+KPX R Gbreve -25.55
+KPX R O -25.55
+KPX R Oacute -25.55
+KPX R Ocircumflex -25.55
+KPX R Odieresis -25.55
+KPX R Ograve -25.55
+KPX R Ohungarumlaut -25.55
+KPX R Oslash -25.55
+KPX R Otilde -25.55
+KPX R Q -25.55
+KPX R T -76.65
+KPX R Tcaron -76.65
+KPX R Tcedilla -76.65
+KPX R U -25.55
+KPX R Uacute -25.55
+KPX R Ucircumflex -25.55
+KPX R Udieresis -25.55
+KPX R Ugrave -25.55
+KPX R Uhungarumlaut -25.55
+KPX R Uring -25.55
+KPX R V -102.2
+KPX R W -102.2
+KPX R Y -76.65
+KPX R Ydieresis -76.65
+KPX R a -51.1
+KPX R aacute -51.1
+KPX R acircumflex -51.1
+KPX R acircumflex -51.1
+KPX R adieresis -51.1
+KPX R ae -51.1
+KPX R agrave -51.1
+KPX R aogonek -51.1
+KPX R aring -51.1
+KPX R atilde -51.1
+KPX R b -25.55
+KPX R c -51.1
+KPX R cacute -51.1
+KPX R cacute -51.1
+KPX R ccaron -51.1
+KPX R ccedilla -51.1
+KPX R d -51.1
+KPX R dbar -51.1
+KPX R e -51.1
+KPX R eacute -51.1
+KPX R ecaron -51.1
+KPX R ecircumflex -51.1
+KPX R edieresis -51.1
+KPX R egrave -51.1
+KPX R eogonek -51.1
+KPX R g -51.1
+KPX R gbreve -51.1
+KPX R h -25.55
+KPX R i -25.55
+KPX R iacute -25.55
+KPX R k -25.55
+KPX R l -25.55
+KPX R lacute -25.55
+KPX R lquoteright -25.55
+KPX R m -25.55
+KPX R n -25.55
+KPX R o -51.1
+KPX R oacute -51.1
+KPX R ocircumflex -51.1
+KPX R odieresis -51.1
+KPX R oe -51.1
+KPX R ograve -51.1
+KPX R ohungarumlaut -51.1
+KPX R oslash -51.1
+KPX R otilde -51.1
+KPX R q -51.1
+KPX R r -25.55
+KPX R t -25.55
+KPX R tcedilla -25.55
+KPX R tquoteright -25.55
+KPX R u -25.55
+KPX R uacute -25.55
+KPX R ucircumflex -25.55
+KPX R udieresis -25.55
+KPX R ugrave -25.55
+KPX R uhungarumlaut -25.55
+KPX R uring -25.55
+KPX R v -25.55
+KPX R w -25.55
+KPX Racute C -25.55
+KPX Racute Cacute -25.55
+KPX Racute Ccaron -25.55
+KPX Racute G -25.55
+KPX Racute Gbreve -25.55
+KPX Racute O -25.55
+KPX Racute Oacute -25.55
+KPX Racute Ocircumflex -25.55
+KPX Racute Odieresis -25.55
+KPX Racute Ograve -25.55
+KPX Racute Ohungarumlaut -25.55
+KPX Racute Oslash -25.55
+KPX Racute Otilde -25.55
+KPX Racute Q -25.55
+KPX Racute T -76.65
+KPX Racute Tcaron -76.65
+KPX Racute Tcedilla -76.65
+KPX Racute U -25.55
+KPX Racute Uacute -25.55
+KPX Racute Ucircumflex -25.55
+KPX Racute Udieresis -25.55
+KPX Racute Ugrave -25.55
+KPX Racute Uhungarumlaut -25.55
+KPX Racute Uring -25.55
+KPX Racute V -102.2
+KPX Racute W -102.2
+KPX Racute Y -76.65
+KPX Racute Ydieresis -76.65
+KPX Racute a -51.1
+KPX Racute aacute -51.1
+KPX Racute acircumflex -51.1
+KPX Racute acircumflex -51.1
+KPX Racute adieresis -51.1
+KPX Racute ae -51.1
+KPX Racute agrave -51.1
+KPX Racute aogonek -51.1
+KPX Racute aring -51.1
+KPX Racute atilde -51.1
+KPX Racute b -25.55
+KPX Racute c -51.1
+KPX Racute cacute -51.1
+KPX Racute cacute -51.1
+KPX Racute ccaron -51.1
+KPX Racute ccedilla -51.1
+KPX Racute d -51.1
+KPX Racute dbar -51.1
+KPX Racute e -51.1
+KPX Racute eacute -51.1
+KPX Racute ecaron -51.1
+KPX Racute ecircumflex -51.1
+KPX Racute edieresis -51.1
+KPX Racute egrave -51.1
+KPX Racute eogonek -51.1
+KPX Racute g -51.1
+KPX Racute gbreve -51.1
+KPX Racute h -25.55
+KPX Racute i -25.55
+KPX Racute iacute -25.55
+KPX Racute k -25.55
+KPX Racute l -25.55
+KPX Racute lacute -25.55
+KPX Racute lquoteright -25.55
+KPX Racute m -25.55
+KPX Racute n -25.55
+KPX Racute o -51.1
+KPX Racute oacute -51.1
+KPX Racute ocircumflex -51.1
+KPX Racute odieresis -51.1
+KPX Racute oe -51.1
+KPX Racute ograve -51.1
+KPX Racute ohungarumlaut -51.1
+KPX Racute oslash -51.1
+KPX Racute otilde -51.1
+KPX Racute q -51.1
+KPX Racute r -25.55
+KPX Racute t -25.55
+KPX Racute tcedilla -25.55
+KPX Racute tquoteright -25.55
+KPX Racute u -25.55
+KPX Racute uacute -25.55
+KPX Racute ucircumflex -25.55
+KPX Racute udieresis -25.55
+KPX Racute ugrave -25.55
+KPX Racute uhungarumlaut -25.55
+KPX Racute uring -25.55
+KPX Racute v -25.55
+KPX Racute w -25.55
+KPX T A -76.65
+KPX T Aacute -76.65
+KPX T Abreve -76.65
+KPX T Acircumflex -76.65
+KPX T Adieresis -76.65
+KPX T Agrave -76.65
+KPX T Aogonek -76.65
+KPX T Aring -76.65
+KPX T Atilde -76.65
+KPX T a -76.65
+KPX T e -76.65
+KPX T o -76.65
+KPX T r -76.65
+KPX T u -76.65
+KPX T y -76.65
+KPX Tcaron A -76.65
+KPX Tcaron Aacute -76.65
+KPX Tcaron Abreve -76.65
+KPX Tcaron Acircumflex -76.65
+KPX Tcaron Adieresis -76.65
+KPX Tcaron Agrave -76.65
+KPX Tcaron Aogonek -76.65
+KPX Tcaron Aring -76.65
+KPX Tcaron Atilde -76.65
+KPX Tcaron a -76.65
+KPX Tcaron e -76.65
+KPX Tcaron o -76.65
+KPX Tcaron r -76.65
+KPX Tcaron u -76.65
+KPX Tcaron y -76.65
+KPX Tcedilla A -76.65
+KPX Tcedilla Aacute -76.65
+KPX Tcedilla Abreve -76.65
+KPX Tcedilla Acircumflex -76.65
+KPX Tcedilla Adieresis -76.65
+KPX Tcedilla Agrave -76.65
+KPX Tcedilla Aogonek -76.65
+KPX Tcedilla Aring -76.65
+KPX Tcedilla Atilde -76.65
+KPX Tcedilla a -76.65
+KPX Tcedilla e -76.65
+KPX Tcedilla o -76.65
+KPX Tcedilla r -76.65
+KPX Tcedilla u -76.65
+KPX Tcedilla y -76.65
+KPX V A -102.2
+KPX V Aacute -102.2
+KPX V Abreve -102.2
+KPX V Acircumflex -102.2
+KPX V Adieresis -102.2
+KPX V Agrave -102.2
+KPX V Aogonek -102.2
+KPX V Aring -102.2
+KPX V Atilde -102.2
+KPX V C -25.55
+KPX V Cacute -25.55
+KPX V Ccaron -25.55
+KPX V G -25.55
+KPX V Gbreve -25.55
+KPX V O -25.55
+KPX V Oacute -25.55
+KPX V Ocircumflex -25.55
+KPX V Odieresis -25.55
+KPX V Ograve -25.55
+KPX V Ohungarumlaut -25.55
+KPX V Oslash -25.55
+KPX V Otilde -25.55
+KPX V Q -25.55
+KPX V a -76.65
+KPX V aogonek -76.65
+KPX V e -76.65
+KPX V eogonek -76.65
+KPX V o -76.65
+KPX V r -76.65
+KPX V u -76.65
+KPX W A -76.65
+KPX W Aacute -76.65
+KPX W Abreve -76.65
+KPX W Acircumflex -76.65
+KPX W Adieresis -76.65
+KPX W Agrave -76.65
+KPX W Aogonek -76.65
+KPX W Aring -76.65
+KPX W Atilde -76.65
+KPX X C -25.55
+KPX X Cacute -25.55
+KPX X Ccaron -25.55
+KPX X G -25.55
+KPX X Gbreve -25.55
+KPX X O -25.55
+KPX X Oacute -25.55
+KPX X Ocircumflex -25.55
+KPX X Odieresis -25.55
+KPX X Ograve -25.55
+KPX X Ohungarumlaut -25.55
+KPX X Oslash -25.55
+KPX X Otilde -25.55
+KPX X Q -25.55
+KPX Y A -76.65
+KPX Y Aacute -76.65
+KPX Y Abreve -76.65
+KPX Y Acircumflex -76.65
+KPX Y Adieresis -76.65
+KPX Y Agrave -76.65
+KPX Y Aogonek -76.65
+KPX Y Aring -76.65
+KPX Y Atilde -76.65
+KPX Y a -76.65
+KPX Y e -76.65
+KPX Y o -76.65
+KPX Y r -76.65
+KPX Y u -76.65
+KPX Yacute A -76.65
+KPX Yacute Aacute -76.65
+KPX Yacute Abreve -76.65
+KPX Yacute Acircumflex -76.65
+KPX Yacute Adieresis -76.65
+KPX Yacute Agrave -76.65
+KPX Yacute Aogonek -76.65
+KPX Yacute Aring -76.65
+KPX Yacute Atilde -76.65
+KPX Yacute a -76.65
+KPX Yacute e -76.65
+KPX Yacute o -76.65
+KPX Yacute r -76.65
+KPX Yacute u -76.65
+KPX b a -51.1
+KPX b aacute -51.1
+KPX b acircumflex -51.1
+KPX b acircumflex -51.1
+KPX b adieresis -51.1
+KPX b ae -51.1
+KPX b agrave -51.1
+KPX b aogonek -51.1
+KPX b aring -51.1
+KPX b atilde -51.1
+KPX b c -51.1
+KPX b cacute -51.1
+KPX b cacute -51.1
+KPX b ccaron -51.1
+KPX b ccedilla -51.1
+KPX b d -51.1
+KPX b dbar -51.1
+KPX b e -51.1
+KPX b eacute -51.1
+KPX b ecaron -51.1
+KPX b ecircumflex -51.1
+KPX b edieresis -51.1
+KPX b egrave -51.1
+KPX b eogonek -51.1
+KPX b g -51.1
+KPX b gbreve -51.1
+KPX b o -51.1
+KPX b oacute -51.1
+KPX b ocircumflex -51.1
+KPX b odieresis -51.1
+KPX b oe -51.1
+KPX b ograve -51.1
+KPX b ohungarumlaut -51.1
+KPX b oslash -51.1
+KPX b otilde -51.1
+KPX b q -51.1
+KPX c a -51.1
+KPX c aacute -51.1
+KPX c acircumflex -51.1
+KPX c acircumflex -51.1
+KPX c adieresis -51.1
+KPX c ae -51.1
+KPX c agrave -51.1
+KPX c aogonek -51.1
+KPX c aring -51.1
+KPX c atilde -51.1
+KPX c c -51.1
+KPX c cacute -51.1
+KPX c cacute -51.1
+KPX c ccaron -51.1
+KPX c ccedilla -51.1
+KPX c d -51.1
+KPX c dbar -51.1
+KPX c e -51.1
+KPX c eacute -51.1
+KPX c ecaron -51.1
+KPX c ecircumflex -51.1
+KPX c edieresis -51.1
+KPX c egrave -51.1
+KPX c eogonek -51.1
+KPX c g -51.1
+KPX c gbreve -51.1
+KPX c o -51.1
+KPX c oacute -51.1
+KPX c ocircumflex -51.1
+KPX c odieresis -51.1
+KPX c oe -51.1
+KPX c ograve -51.1
+KPX c ohungarumlaut -51.1
+KPX c oslash -51.1
+KPX c otilde -51.1
+KPX c q -51.1
+KPX cacute a -51.1
+KPX cacute aacute -51.1
+KPX cacute acircumflex -51.1
+KPX cacute acircumflex -51.1
+KPX cacute adieresis -51.1
+KPX cacute ae -51.1
+KPX cacute agrave -51.1
+KPX cacute aogonek -51.1
+KPX cacute aring -51.1
+KPX cacute atilde -51.1
+KPX cacute c -51.1
+KPX cacute cacute -51.1
+KPX cacute cacute -51.1
+KPX cacute ccaron -51.1
+KPX cacute ccedilla -51.1
+KPX cacute d -51.1
+KPX cacute dbar -51.1
+KPX cacute e -51.1
+KPX cacute eacute -51.1
+KPX cacute ecaron -51.1
+KPX cacute ecircumflex -51.1
+KPX cacute edieresis -51.1
+KPX cacute egrave -51.1
+KPX cacute eogonek -51.1
+KPX cacute g -51.1
+KPX cacute gbreve -51.1
+KPX cacute o -51.1
+KPX cacute oacute -51.1
+KPX cacute ocircumflex -51.1
+KPX cacute odieresis -51.1
+KPX cacute oe -51.1
+KPX cacute ograve -51.1
+KPX cacute ohungarumlaut -51.1
+KPX cacute oslash -51.1
+KPX cacute otilde -51.1
+KPX cacute q -51.1
+KPX ccaron a -51.1
+KPX ccaron aacute -51.1
+KPX ccaron acircumflex -51.1
+KPX ccaron acircumflex -51.1
+KPX ccaron adieresis -51.1
+KPX ccaron ae -51.1
+KPX ccaron agrave -51.1
+KPX ccaron aogonek -51.1
+KPX ccaron aring -51.1
+KPX ccaron atilde -51.1
+KPX ccaron c -51.1
+KPX ccaron cacute -51.1
+KPX ccaron cacute -51.1
+KPX ccaron ccaron -51.1
+KPX ccaron ccedilla -51.1
+KPX ccaron d -51.1
+KPX ccaron dbar -51.1
+KPX ccaron e -51.1
+KPX ccaron eacute -51.1
+KPX ccaron ecaron -51.1
+KPX ccaron ecircumflex -51.1
+KPX ccaron edieresis -51.1
+KPX ccaron egrave -51.1
+KPX ccaron eogonek -51.1
+KPX ccaron g -51.1
+KPX ccaron gbreve -51.1
+KPX ccaron o -51.1
+KPX ccaron oacute -51.1
+KPX ccaron ocircumflex -51.1
+KPX ccaron odieresis -51.1
+KPX ccaron oe -51.1
+KPX ccaron ograve -51.1
+KPX ccaron ohungarumlaut -51.1
+KPX ccaron oslash -51.1
+KPX ccaron otilde -51.1
+KPX ccaron q -51.1
+KPX d l 51.1
+KPX d lacute 51.1
+KPX d lquoteright 51.1
+KPX e a -51.1
+KPX e aacute -51.1
+KPX e acircumflex -51.1
+KPX e acircumflex -51.1
+KPX e adieresis -51.1
+KPX e ae -51.1
+KPX e agrave -51.1
+KPX e aogonek -51.1
+KPX e aring -51.1
+KPX e atilde -51.1
+KPX e c -51.1
+KPX e cacute -51.1
+KPX e cacute -51.1
+KPX e ccaron -51.1
+KPX e ccedilla -51.1
+KPX e d -51.1
+KPX e dbar -51.1
+KPX e e -51.1
+KPX e eacute -51.1
+KPX e ecaron -51.1
+KPX e ecircumflex -51.1
+KPX e edieresis -51.1
+KPX e egrave -51.1
+KPX e eogonek -51.1
+KPX e g -51.1
+KPX e gbreve -51.1
+KPX e o -51.1
+KPX e oacute -51.1
+KPX e ocircumflex -51.1
+KPX e odieresis -51.1
+KPX e oe -51.1
+KPX e ograve -51.1
+KPX e ohungarumlaut -51.1
+KPX e oslash -51.1
+KPX e otilde -51.1
+KPX e q -51.1
+KPX eacute a -51.1
+KPX eacute aacute -51.1
+KPX eacute acircumflex -51.1
+KPX eacute acircumflex -51.1
+KPX eacute adieresis -51.1
+KPX eacute ae -51.1
+KPX eacute agrave -51.1
+KPX eacute aogonek -51.1
+KPX eacute aring -51.1
+KPX eacute atilde -51.1
+KPX eacute c -51.1
+KPX eacute cacute -51.1
+KPX eacute cacute -51.1
+KPX eacute ccaron -51.1
+KPX eacute ccedilla -51.1
+KPX eacute d -51.1
+KPX eacute dbar -51.1
+KPX eacute e -51.1
+KPX eacute eacute -51.1
+KPX eacute ecaron -51.1
+KPX eacute ecircumflex -51.1
+KPX eacute edieresis -51.1
+KPX eacute egrave -51.1
+KPX eacute eogonek -51.1
+KPX eacute g -51.1
+KPX eacute gbreve -51.1
+KPX eacute o -51.1
+KPX eacute oacute -51.1
+KPX eacute ocircumflex -51.1
+KPX eacute odieresis -51.1
+KPX eacute oe -51.1
+KPX eacute ograve -51.1
+KPX eacute ohungarumlaut -51.1
+KPX eacute oslash -51.1
+KPX eacute otilde -51.1
+KPX eacute q -51.1
+KPX ecaron a -51.1
+KPX ecaron aacute -51.1
+KPX ecaron acircumflex -51.1
+KPX ecaron acircumflex -51.1
+KPX ecaron adieresis -51.1
+KPX ecaron ae -51.1
+KPX ecaron agrave -51.1
+KPX ecaron aogonek -51.1
+KPX ecaron aring -51.1
+KPX ecaron atilde -51.1
+KPX ecaron c -51.1
+KPX ecaron cacute -51.1
+KPX ecaron cacute -51.1
+KPX ecaron ccaron -51.1
+KPX ecaron ccedilla -51.1
+KPX ecaron d -51.1
+KPX ecaron dbar -51.1
+KPX ecaron e -51.1
+KPX ecaron eacute -51.1
+KPX ecaron ecaron -51.1
+KPX ecaron ecircumflex -51.1
+KPX ecaron edieresis -51.1
+KPX ecaron egrave -51.1
+KPX ecaron eogonek -51.1
+KPX ecaron g -51.1
+KPX ecaron gbreve -51.1
+KPX ecaron o -51.1
+KPX ecaron oacute -51.1
+KPX ecaron ocircumflex -51.1
+KPX ecaron odieresis -51.1
+KPX ecaron oe -51.1
+KPX ecaron ograve -51.1
+KPX ecaron ohungarumlaut -51.1
+KPX ecaron oslash -51.1
+KPX ecaron otilde -51.1
+KPX ecaron q -51.1
+KPX ecircumflex a -51.1
+KPX ecircumflex aacute -51.1
+KPX ecircumflex acircumflex -51.1
+KPX ecircumflex acircumflex -51.1
+KPX ecircumflex adieresis -51.1
+KPX ecircumflex ae -51.1
+KPX ecircumflex agrave -51.1
+KPX ecircumflex aogonek -51.1
+KPX ecircumflex aring -51.1
+KPX ecircumflex atilde -51.1
+KPX ecircumflex c -51.1
+KPX ecircumflex cacute -51.1
+KPX ecircumflex cacute -51.1
+KPX ecircumflex ccaron -51.1
+KPX ecircumflex ccedilla -51.1
+KPX ecircumflex d -51.1
+KPX ecircumflex dbar -51.1
+KPX ecircumflex e -51.1
+KPX ecircumflex eacute -51.1
+KPX ecircumflex ecaron -51.1
+KPX ecircumflex ecircumflex -51.1
+KPX ecircumflex edieresis -51.1
+KPX ecircumflex egrave -51.1
+KPX ecircumflex eogonek -51.1
+KPX ecircumflex g -51.1
+KPX ecircumflex gbreve -51.1
+KPX ecircumflex o -51.1
+KPX ecircumflex oacute -51.1
+KPX ecircumflex ocircumflex -51.1
+KPX ecircumflex odieresis -51.1
+KPX ecircumflex oe -51.1
+KPX ecircumflex ograve -51.1
+KPX ecircumflex ohungarumlaut -51.1
+KPX ecircumflex oslash -51.1
+KPX ecircumflex otilde -51.1
+KPX ecircumflex q -51.1
+KPX edieresis a -51.1
+KPX edieresis aacute -51.1
+KPX edieresis acircumflex -51.1
+KPX edieresis acircumflex -51.1
+KPX edieresis adieresis -51.1
+KPX edieresis ae -51.1
+KPX edieresis agrave -51.1
+KPX edieresis aogonek -51.1
+KPX edieresis aring -51.1
+KPX edieresis atilde -51.1
+KPX edieresis c -51.1
+KPX edieresis cacute -51.1
+KPX edieresis cacute -51.1
+KPX edieresis ccaron -51.1
+KPX edieresis ccedilla -51.1
+KPX edieresis d -51.1
+KPX edieresis dbar -51.1
+KPX edieresis e -51.1
+KPX edieresis eacute -51.1
+KPX edieresis ecaron -51.1
+KPX edieresis ecircumflex -51.1
+KPX edieresis edieresis -51.1
+KPX edieresis egrave -51.1
+KPX edieresis eogonek -51.1
+KPX edieresis g -51.1
+KPX edieresis gbreve -51.1
+KPX edieresis o -51.1
+KPX edieresis oacute -51.1
+KPX edieresis ocircumflex -51.1
+KPX edieresis odieresis -51.1
+KPX edieresis oe -51.1
+KPX edieresis ograve -51.1
+KPX edieresis ohungarumlaut -51.1
+KPX edieresis oslash -51.1
+KPX edieresis otilde -51.1
+KPX edieresis q -51.1
+KPX egrave a -51.1
+KPX egrave aacute -51.1
+KPX egrave acircumflex -51.1
+KPX egrave acircumflex -51.1
+KPX egrave adieresis -51.1
+KPX egrave ae -51.1
+KPX egrave agrave -51.1
+KPX egrave aogonek -51.1
+KPX egrave aring -51.1
+KPX egrave atilde -51.1
+KPX egrave c -51.1
+KPX egrave cacute -51.1
+KPX egrave cacute -51.1
+KPX egrave ccaron -51.1
+KPX egrave ccedilla -51.1
+KPX egrave d -51.1
+KPX egrave dbar -51.1
+KPX egrave e -51.1
+KPX egrave eacute -51.1
+KPX egrave ecaron -51.1
+KPX egrave ecircumflex -51.1
+KPX egrave edieresis -51.1
+KPX egrave egrave -51.1
+KPX egrave eogonek -51.1
+KPX egrave g -51.1
+KPX egrave gbreve -51.1
+KPX egrave o -51.1
+KPX egrave oacute -51.1
+KPX egrave ocircumflex -51.1
+KPX egrave odieresis -51.1
+KPX egrave oe -51.1
+KPX egrave ograve -51.1
+KPX egrave ohungarumlaut -51.1
+KPX egrave oslash -51.1
+KPX egrave otilde -51.1
+KPX egrave q -51.1
+KPX eogonek a -51.1
+KPX eogonek aacute -51.1
+KPX eogonek acircumflex -51.1
+KPX eogonek acircumflex -51.1
+KPX eogonek adieresis -51.1
+KPX eogonek ae -51.1
+KPX eogonek agrave -51.1
+KPX eogonek aogonek -51.1
+KPX eogonek aring -51.1
+KPX eogonek atilde -51.1
+KPX eogonek c -51.1
+KPX eogonek cacute -51.1
+KPX eogonek cacute -51.1
+KPX eogonek ccaron -51.1
+KPX eogonek ccedilla -51.1
+KPX eogonek d -51.1
+KPX eogonek dbar -51.1
+KPX eogonek e -51.1
+KPX eogonek eacute -51.1
+KPX eogonek ecaron -51.1
+KPX eogonek ecircumflex -51.1
+KPX eogonek edieresis -51.1
+KPX eogonek egrave -51.1
+KPX eogonek eogonek -51.1
+KPX eogonek g -51.1
+KPX eogonek gbreve -51.1
+KPX eogonek o -51.1
+KPX eogonek oacute -51.1
+KPX eogonek ocircumflex -51.1
+KPX eogonek odieresis -51.1
+KPX eogonek oe -51.1
+KPX eogonek ograve -51.1
+KPX eogonek ohungarumlaut -51.1
+KPX eogonek oslash -51.1
+KPX eogonek otilde -51.1
+KPX eogonek q -51.1
+KPX f bracketright 104.28
+KPX f exclam 104.28
+KPX f parenright 104.28
+KPX f question 104.28
+KPX f quoteright 104.28
+KPX ff bracketright 104.28
+KPX ff exclam 104.28
+KPX ff parenright 104.28
+KPX ff question 104.28
+KPX ff quoteright 104.28
+KPX l l 51.1
+KPX l lacute 51.1
+KPX l lquoteright 51.1
+KPX n quoteright -102.2
+KPX o a -51.1
+KPX o aacute -51.1
+KPX o acircumflex -51.1
+KPX o acircumflex -51.1
+KPX o adieresis -51.1
+KPX o ae -51.1
+KPX o agrave -51.1
+KPX o aogonek -51.1
+KPX o aring -51.1
+KPX o atilde -51.1
+KPX o c -51.1
+KPX o cacute -51.1
+KPX o cacute -51.1
+KPX o ccaron -51.1
+KPX o ccedilla -51.1
+KPX o d -51.1
+KPX o dbar -51.1
+KPX o e -51.1
+KPX o eacute -51.1
+KPX o ecaron -51.1
+KPX o ecircumflex -51.1
+KPX o edieresis -51.1
+KPX o egrave -51.1
+KPX o eogonek -51.1
+KPX o g -51.1
+KPX o gbreve -51.1
+KPX o o -51.1
+KPX o oacute -51.1
+KPX o ocircumflex -51.1
+KPX o odieresis -51.1
+KPX o oe -51.1
+KPX o ograve -51.1
+KPX o ohungarumlaut -51.1
+KPX o oslash -51.1
+KPX o otilde -51.1
+KPX o q -51.1
+KPX oacute a -51.1
+KPX oacute aacute -51.1
+KPX oacute acircumflex -51.1
+KPX oacute acircumflex -51.1
+KPX oacute adieresis -51.1
+KPX oacute ae -51.1
+KPX oacute agrave -51.1
+KPX oacute aogonek -51.1
+KPX oacute aring -51.1
+KPX oacute atilde -51.1
+KPX oacute c -51.1
+KPX oacute cacute -51.1
+KPX oacute cacute -51.1
+KPX oacute ccaron -51.1
+KPX oacute ccedilla -51.1
+KPX oacute d -51.1
+KPX oacute dbar -51.1
+KPX oacute e -51.1
+KPX oacute eacute -51.1
+KPX oacute ecaron -51.1
+KPX oacute ecircumflex -51.1
+KPX oacute edieresis -51.1
+KPX oacute egrave -51.1
+KPX oacute eogonek -51.1
+KPX oacute g -51.1
+KPX oacute gbreve -51.1
+KPX oacute o -51.1
+KPX oacute oacute -51.1
+KPX oacute ocircumflex -51.1
+KPX oacute odieresis -51.1
+KPX oacute oe -51.1
+KPX oacute ograve -51.1
+KPX oacute ohungarumlaut -51.1
+KPX oacute oslash -51.1
+KPX oacute otilde -51.1
+KPX oacute q -51.1
+KPX ocircumflex a -51.1
+KPX ocircumflex aacute -51.1
+KPX ocircumflex acircumflex -51.1
+KPX ocircumflex acircumflex -51.1
+KPX ocircumflex adieresis -51.1
+KPX ocircumflex ae -51.1
+KPX ocircumflex agrave -51.1
+KPX ocircumflex aogonek -51.1
+KPX ocircumflex aring -51.1
+KPX ocircumflex atilde -51.1
+KPX ocircumflex c -51.1
+KPX ocircumflex cacute -51.1
+KPX ocircumflex cacute -51.1
+KPX ocircumflex ccaron -51.1
+KPX ocircumflex ccedilla -51.1
+KPX ocircumflex d -51.1
+KPX ocircumflex dbar -51.1
+KPX ocircumflex e -51.1
+KPX ocircumflex eacute -51.1
+KPX ocircumflex ecaron -51.1
+KPX ocircumflex ecircumflex -51.1
+KPX ocircumflex edieresis -51.1
+KPX ocircumflex egrave -51.1
+KPX ocircumflex eogonek -51.1
+KPX ocircumflex g -51.1
+KPX ocircumflex gbreve -51.1
+KPX ocircumflex o -51.1
+KPX ocircumflex oacute -51.1
+KPX ocircumflex ocircumflex -51.1
+KPX ocircumflex odieresis -51.1
+KPX ocircumflex oe -51.1
+KPX ocircumflex ograve -51.1
+KPX ocircumflex ohungarumlaut -51.1
+KPX ocircumflex oslash -51.1
+KPX ocircumflex otilde -51.1
+KPX ocircumflex q -51.1
+KPX odieresis a -51.1
+KPX odieresis aacute -51.1
+KPX odieresis acircumflex -51.1
+KPX odieresis acircumflex -51.1
+KPX odieresis adieresis -51.1
+KPX odieresis ae -51.1
+KPX odieresis agrave -51.1
+KPX odieresis aogonek -51.1
+KPX odieresis aring -51.1
+KPX odieresis atilde -51.1
+KPX odieresis c -51.1
+KPX odieresis cacute -51.1
+KPX odieresis cacute -51.1
+KPX odieresis ccaron -51.1
+KPX odieresis ccedilla -51.1
+KPX odieresis d -51.1
+KPX odieresis dbar -51.1
+KPX odieresis e -51.1
+KPX odieresis eacute -51.1
+KPX odieresis ecaron -51.1
+KPX odieresis ecircumflex -51.1
+KPX odieresis edieresis -51.1
+KPX odieresis egrave -51.1
+KPX odieresis eogonek -51.1
+KPX odieresis g -51.1
+KPX odieresis gbreve -51.1
+KPX odieresis o -51.1
+KPX odieresis oacute -51.1
+KPX odieresis ocircumflex -51.1
+KPX odieresis odieresis -51.1
+KPX odieresis oe -51.1
+KPX odieresis ograve -51.1
+KPX odieresis ohungarumlaut -51.1
+KPX odieresis oslash -51.1
+KPX odieresis otilde -51.1
+KPX odieresis q -51.1
+KPX ograve a -51.1
+KPX ograve aacute -51.1
+KPX ograve acircumflex -51.1
+KPX ograve acircumflex -51.1
+KPX ograve adieresis -51.1
+KPX ograve ae -51.1
+KPX ograve agrave -51.1
+KPX ograve aogonek -51.1
+KPX ograve aring -51.1
+KPX ograve atilde -51.1
+KPX ograve c -51.1
+KPX ograve cacute -51.1
+KPX ograve cacute -51.1
+KPX ograve ccaron -51.1
+KPX ograve ccedilla -51.1
+KPX ograve d -51.1
+KPX ograve dbar -51.1
+KPX ograve e -51.1
+KPX ograve eacute -51.1
+KPX ograve ecaron -51.1
+KPX ograve ecircumflex -51.1
+KPX ograve edieresis -51.1
+KPX ograve egrave -51.1
+KPX ograve eogonek -51.1
+KPX ograve g -51.1
+KPX ograve gbreve -51.1
+KPX ograve o -51.1
+KPX ograve oacute -51.1
+KPX ograve ocircumflex -51.1
+KPX ograve odieresis -51.1
+KPX ograve oe -51.1
+KPX ograve ograve -51.1
+KPX ograve ohungarumlaut -51.1
+KPX ograve oslash -51.1
+KPX ograve otilde -51.1
+KPX ograve q -51.1
+KPX otilde a -51.1
+KPX otilde aacute -51.1
+KPX otilde acircumflex -51.1
+KPX otilde acircumflex -51.1
+KPX otilde adieresis -51.1
+KPX otilde ae -51.1
+KPX otilde agrave -51.1
+KPX otilde aogonek -51.1
+KPX otilde aring -51.1
+KPX otilde atilde -51.1
+KPX otilde c -51.1
+KPX otilde cacute -51.1
+KPX otilde cacute -51.1
+KPX otilde ccaron -51.1
+KPX otilde ccedilla -51.1
+KPX otilde d -51.1
+KPX otilde dbar -51.1
+KPX otilde e -51.1
+KPX otilde eacute -51.1
+KPX otilde ecaron -51.1
+KPX otilde ecircumflex -51.1
+KPX otilde edieresis -51.1
+KPX otilde egrave -51.1
+KPX otilde eogonek -51.1
+KPX otilde g -51.1
+KPX otilde gbreve -51.1
+KPX otilde o -51.1
+KPX otilde oacute -51.1
+KPX otilde ocircumflex -51.1
+KPX otilde odieresis -51.1
+KPX otilde oe -51.1
+KPX otilde ograve -51.1
+KPX otilde ohungarumlaut -51.1
+KPX otilde oslash -51.1
+KPX otilde otilde -51.1
+KPX otilde q -51.1
+KPX p a -51.1
+KPX p aacute -51.1
+KPX p acircumflex -51.1
+KPX p acircumflex -51.1
+KPX p adieresis -51.1
+KPX p ae -51.1
+KPX p agrave -51.1
+KPX p aogonek -51.1
+KPX p aring -51.1
+KPX p atilde -51.1
+KPX p c -51.1
+KPX p cacute -51.1
+KPX p cacute -51.1
+KPX p ccaron -51.1
+KPX p ccedilla -51.1
+KPX p d -51.1
+KPX p dbar -51.1
+KPX p e -51.1
+KPX p eacute -51.1
+KPX p ecaron -51.1
+KPX p ecircumflex -51.1
+KPX p edieresis -51.1
+KPX p egrave -51.1
+KPX p eogonek -51.1
+KPX p g -51.1
+KPX p gbreve -51.1
+KPX p o -51.1
+KPX p oacute -51.1
+KPX p ocircumflex -51.1
+KPX p odieresis -51.1
+KPX p oe -51.1
+KPX p ograve -51.1
+KPX p ohungarumlaut -51.1
+KPX p oslash -51.1
+KPX p otilde -51.1
+KPX p q -51.1
+KPX quoteright exclam 102.2
+KPX quoteright question 102.2
+KPX r a -51.1
+KPX r aacute -51.1
+KPX r acircumflex -51.1
+KPX r acircumflex -51.1
+KPX r adieresis -51.1
+KPX r ae -51.1
+KPX r agrave -51.1
+KPX r aogonek -51.1
+KPX r aring -51.1
+KPX r atilde -51.1
+KPX r c -51.1
+KPX r cacute -51.1
+KPX r cacute -51.1
+KPX r ccaron -51.1
+KPX r ccedilla -51.1
+KPX r d -51.1
+KPX r dbar -51.1
+KPX r e -51.1
+KPX r eacute -51.1
+KPX r ecaron -51.1
+KPX r ecircumflex -51.1
+KPX r edieresis -51.1
+KPX r egrave -51.1
+KPX r eogonek -51.1
+KPX r g -51.1
+KPX r gbreve -51.1
+KPX r o -51.1
+KPX r oacute -51.1
+KPX r ocircumflex -51.1
+KPX r odieresis -51.1
+KPX r oe -51.1
+KPX r ograve -51.1
+KPX r ohungarumlaut -51.1
+KPX r oslash -51.1
+KPX r otilde -51.1
+KPX r q -51.1
+KPX thorn a -51.1
+KPX thorn aacute -51.1
+KPX thorn acircumflex -51.1
+KPX thorn acircumflex -51.1
+KPX thorn adieresis -51.1
+KPX thorn ae -51.1
+KPX thorn agrave -51.1
+KPX thorn aogonek -51.1
+KPX thorn aring -51.1
+KPX thorn atilde -51.1
+KPX thorn c -51.1
+KPX thorn cacute -51.1
+KPX thorn cacute -51.1
+KPX thorn ccaron -51.1
+KPX thorn ccedilla -51.1
+KPX thorn d -51.1
+KPX thorn dbar -51.1
+KPX thorn e -51.1
+KPX thorn eacute -51.1
+KPX thorn ecaron -51.1
+KPX thorn ecircumflex -51.1
+KPX thorn edieresis -51.1
+KPX thorn egrave -51.1
+KPX thorn eogonek -51.1
+KPX thorn g -51.1
+KPX thorn gbreve -51.1
+KPX thorn o -51.1
+KPX thorn oacute -51.1
+KPX thorn ocircumflex -51.1
+KPX thorn odieresis -51.1
+KPX thorn oe -51.1
+KPX thorn ograve -51.1
+KPX thorn ohungarumlaut -51.1
+KPX thorn oslash -51.1
+KPX thorn otilde -51.1
+KPX thorn q -51.1
+KPX w l 51.1
+KPX w lacute 51.1
+KPX w lquoteright 51.1
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/eufm10.afm b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/eufm10.afm
new file mode 100644
index 00000000000..a6c2b1cf13e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/afm/eufm10.afm
@@ -0,0 +1,114 @@
+StartFontMetrics 2.0
+FontName eufm10
+FullName eufm10
+FamilyName eufm10
+Weight Medium
+ItalicAngle 0.000000
+IsFixedPitch false
+UnderlinePosition -133
+UnderlineThickness 20
+Version 1.2/19-Jan-95
+FontBBox -26, -224, 1054, 740
+Notice Copyright \(C\) 1994, 1995, Basil K. Malyshev. All Rights Reserved.\nBaKoMa Fonts Collection, Level-C.
+EncodingScheme FontSpecific
+CapHeight 666
+XHeight 472
+Descender -212
+Ascender 610
+StartCharMetrics 94
+C 0 ; WX 497.5 ; N dadv ; B 75 -33 430 683 ;
+C 1 ; WX 498.28 ; N dalt ; B 35 -30 432 616 ;
+C 2 ; WX 333.28 ; N fnos ; B 29 -216 339 680 ;
+C 3 ; WX 329.22 ; N falt ; B 28 -224 318 679 ;
+C 4 ; WX 503.44 ; N galt ; B 51 -214 449 471 ;
+C 5 ; WX 333 ; N kalt ; B 25 -20 315 687 ;
+C 6 ; WX 334.11 ; N talt ; B 29 -21 347 578 ;
+C 7 ; WX 500.72 ; N ualt ; B 10 -22 515 475 ;
+C 18 ; WX 214.72 ; N quoteleft ; B 45 410 159 708 ;
+C 19 ; WX 214.72 ; N quoteright ; B 49 394 163 692 ;
+C 33 ; WX 295.72 ; N exclam ; B 90 -12 203 690 ;
+C 38 ; WX 737.83 ; N ampersand ; B 49 -12 734 698 ;
+C 39 ; WX 212 ; N quotesingle ; B 68 436 134 695 ;
+C 40 ; WX 388.67 ; N parenleft ; B 113 -186 293 737 ;
+C 41 ; WX 388.67 ; N parenright ; B 89 -187 276 735 ;
+C 42 ; WX 277.67 ; N asterisk ; B 33 449 234 692 ;
+C 43 ; WX 756.22 ; N plus ; B 47 -83 709 598 ;
+C 44 ; WX 277.67 ; N comma ; B 100 -192 215 107 ;
+C 45 ; WX 756.22 ; N minus ; B 46 236 706 275 ;
+C 46 ; WX 277.67 ; N period ; B 88 -15 201 102 ;
+C 47 ; WX 501.83 ; N slash ; B 34 -182 466 722 ;
+C 48 ; WX 501.83 ; N zero ; B 41 -13 456 493 ;
+C 49 ; WX 501.83 ; N one ; B 47 -2 460 468 ;
+C 50 ; WX 501.83 ; N two ; B 59 1 485 474 ;
+C 51 ; WX 501.83 ; N three ; B 38 -182 430 474 ;
+C 52 ; WX 501.83 ; N four ; B 10 -191 482 476 ;
+C 53 ; WX 501.83 ; N five ; B 47 -184 440 458 ;
+C 54 ; WX 501.83 ; N six ; B 45 -13 471 700 ;
+C 55 ; WX 501.83 ; N seven ; B 37 -181 498 468 ;
+C 56 ; WX 501.83 ; N eight ; B 40 -10 461 705 ;
+C 57 ; WX 501.83 ; N nine ; B 27 -182 467 469 ;
+C 58 ; WX 216.06 ; N colon ; B 49 -12 168 457 ;
+C 59 ; WX 216.06 ; N semicolon ; B 47 -190 179 458 ;
+C 61 ; WX 756.22 ; N equal ; B 54 132 725 368 ;
+C 63 ; WX 362.44 ; N question ; B 46 -11 358 693 ;
+C 65 ; WX 717.61 ; N A ; B 22 -27 708 697 ;
+C 66 ; WX 884 ; N B ; B 48 -27 820 691 ;
+C 67 ; WX 612.56 ; N C ; B 59 -24 607 685 ;
+C 68 ; WX 831.56 ; N D ; B 27 -27 745 686 ;
+C 69 ; WX 662.78 ; N E ; B 86 -24 634 685 ;
+C 70 ; WX 611.17 ; N F ; B 11 -154 612 686 ;
+C 71 ; WX 785.39 ; N G ; B 65 -27 710 691 ;
+C 72 ; WX 720.28 ; N H ; B 1 -133 644 666 ;
+C 73 ; WX 554.5 ; N I ; B 30 -27 533 686 ;
+C 74 ; WX 552.33 ; N J ; B -10 -139 522 686 ;
+C 75 ; WX 668.44 ; N K ; B 16 -27 682 681 ;
+C 76 ; WX 666 ; N L ; B 32 -26 644 686 ;
+C 77 ; WX 1049.56 ; N M ; B 27 -27 1048 692 ;
+C 78 ; WX 832.11 ; N N ; B 27 -25 825 686 ;
+C 79 ; WX 827 ; N O ; B 11 -27 745 729 ;
+C 80 ; WX 827.5 ; N P ; B 27 -219 804 692 ;
+C 81 ; WX 827 ; N Q ; B 11 -69 782 729 ;
+C 82 ; WX 828.06 ; N R ; B 27 -27 824 686 ;
+C 83 ; WX 828.61 ; N S ; B 66 -27 756 692 ;
+C 84 ; WX 669 ; N T ; B 33 -27 676 702 ;
+C 85 ; WX 645.78 ; N U ; B -26 -27 665 697 ;
+C 86 ; WX 831.33 ; N V ; B 27 -27 825 686 ;
+C 87 ; WX 1046 ; N W ; B 32 -28 1054 686 ;
+C 88 ; WX 719.22 ; N X ; B 27 -27 709 688 ;
+C 89 ; WX 832.94 ; N Y ; B 27 -218 740 686 ;
+C 90 ; WX 602 ; N Z ; B 11 -139 532 729 ;
+C 91 ; WX 277.67 ; N bracketleft ; B 117 -130 278 740 ;
+C 93 ; WX 277.67 ; N bracketright ; B -3 -132 161 738 ;
+C 94 ; WX 499.67 ; N asciicircum ; B 0 452 495 734 ;
+C 97 ; WX 500.44 ; N a ; B 65 -36 497 471 ;
+C 98 ; WX 513.17 ; N b ; B 87 -31 442 685 ;
+C 99 ; WX 389.44 ; N c ; B 72 -29 359 466 ;
+C 100 ; WX 498.56 ; N d ; B 13 -33 428 610 ;
+C 101 ; WX 400.56 ; N e ; B 70 -31 364 467 ;
+C 102 ; WX 326.28 ; N f ; B 30 -220 324 681 ;
+C 103 ; WX 503.72 ; N g ; B 16 -209 455 470 ;
+C 104 ; WX 521.28 ; N h ; B 76 -206 434 689 ;
+C 105 ; WX 279 ; N i ; B 14 -21 268 674 ;
+C 106 ; WX 280.89 ; N j ; B -9 -208 196 673 ;
+C 107 ; WX 389.44 ; N k ; B 24 -26 362 689 ;
+C 108 ; WX 279.56 ; N l ; B 98 -20 277 685 ;
+C 109 ; WX 766.78 ; N m ; B 7 -26 752 475 ;
+C 110 ; WX 526.67 ; N n ; B 17 -23 513 475 ;
+C 111 ; WX 488.83 ; N o ; B 67 -28 412 481 ;
+C 112 ; WX 500.44 ; N p ; B 12 -212 430 542 ;
+C 113 ; WX 489.11 ; N q ; B 59 -219 418 479 ;
+C 114 ; WX 389.17 ; N r ; B 15 -21 387 474 ;
+C 115 ; WX 442.67 ; N s ; B -18 -30 407 478 ;
+C 116 ; WX 333 ; N t ; B 26 -21 349 640 ;
+C 117 ; WX 517.22 ; N u ; B 8 -23 513 474 ;
+C 118 ; WX 511.78 ; N v ; B 55 -28 434 530 ;
+C 119 ; WX 773.5 ; N w ; B 45 -28 688 532 ;
+C 120 ; WX 388.67 ; N x ; B 10 -188 363 472 ;
+C 121 ; WX 498.83 ; N y ; B 45 -219 431 528 ;
+C 122 ; WX 390.56 ; N z ; B -7 -214 314 471 ;
+C 125 ; WX 214.72 ; N quotedbl ; B 8 432 196 695 ;
+C 127 ; WX 378.11 ; N onealt ; B 54 -10 254 703 ;
+C -1 ; WX 333.33 ; N hardspace ; B 333 0 334 0 ;
+C -1 ; WX 333.33 ; N space ; B 333 0 334 0 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin1.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin1.enc
new file mode 100644
index 00000000000..e7ee7860fd0
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin1.enc
@@ -0,0 +1,283 @@
+%
+% t1lib-encodingfile
+%
+% This file is intended to be read by the function T1_LoadEncoding(), which is
+% part of t1lib. The syntactic format is really simple. The file contents is
+% scanned according to the following priciple:
+%
+% 1) There appears a "Encoding=[scheme]" at the beginning of a line.
+%
+% 2) Then exacly 256 lines of text must follow. These lines have to
+% start with a valid charactername, followed by at least one white
+% space character. The remaining of the line is ignored and may be
+% used for comments, e.g., for numbering of characters.
+%
+% 3) After these 256 lines all following data is ignored.
+%
+% Notice: This encoding contains what *I* believe is the ISOLatin1Encoding.
+% It differs slightly from what the PostScript interpreter believes.
+% Please note that there is no unique definition for the
+% charactername appearing at 45 (dec) in ISO 8859-1.
+%
+% (1999-11-16, RMz)
+%
+%--------------------------------------------------------------------------
+
+Encoding=ISOLatin1Encoding /* The name of the encoding scheme */
+.notdef /* '000 000 "00 */
+.notdef /* '001 001 "01 */
+.notdef /* '002 002 "02 */
+.notdef /* '003 003 "03 */
+.notdef /* '004 004 "04 */
+.notdef /* '005 005 "05 */
+.notdef /* '006 006 "06 */
+.notdef /* '007 007 "07 */
+.notdef /* '010 008 "08 */
+.notdef /* '011 009 "09 */
+.notdef /* '012 010 "0A */
+.notdef /* '013 011 "0B */
+.notdef /* '014 012 "0C */
+.notdef /* '015 013 "0D */
+.notdef /* '016 014 "0E */
+.notdef /* '017 015 "0F */
+.notdef /* '020 016 "10 */
+.notdef /* '021 017 "11 */
+.notdef /* '022 018 "12 */
+.notdef /* '023 019 "13 */
+.notdef /* '024 020 "14 */
+.notdef /* '025 021 "15 */
+.notdef /* '026 022 "16 */
+.notdef /* '027 023 "17 */
+.notdef /* '030 024 "18 */
+.notdef /* '031 025 "19 */
+.notdef /* '032 026 "1A */
+.notdef /* '033 027 "1B */
+.notdef /* '034 028 "1C */
+.notdef /* '035 029 "1D */
+.notdef /* '036 030 "1E */
+.notdef /* '037 031 "1F */
+space /* '040 032 "20 */
+exclam /* '041 033 "21 */
+quotedbl /* '042 034 "22 */
+numbersign /* '043 035 "23 */
+dollar /* '044 036 "24 */
+percent /* '045 037 "25 */
+ampersand /* '046 038 "26 */
+quoteright /* '047 039 "27 */
+parenleft /* '050 040 "28 */
+parenright /* '051 041 "29 */
+asterisk /* '052 042 "2A */
+plus /* '053 043 "2B */
+comma /* '054 044 "2C */
+hyphen /* '055 045 "2D */
+period /* '056 046 "2E */
+slash /* '057 047 "2F */
+zero /* '060 048 "30 */
+one /* '061 049 "31 */
+two /* '062 050 "32 */
+three /* '063 051 "33 */
+four /* '064 052 "34 */
+five /* '065 053 "35 */
+six /* '066 054 "36 */
+seven /* '067 055 "37 */
+eight /* '070 056 "38 */
+nine /* '071 057 "39 */
+colon /* '072 058 "3A */
+semicolon /* '073 059 "3B */
+less /* '074 060 "3C */
+equal /* '075 061 "3D */
+greater /* '076 062 "3E */
+question /* '077 063 "3F */
+at /* '100 064 "40 */
+A /* '101 065 "41 */
+B /* '102 066 "42 */
+C /* '103 067 "43 */
+D /* '104 068 "44 */
+E /* '105 069 "45 */
+F /* '106 070 "46 */
+G /* '107 071 "47 */
+H /* '110 072 "48 */
+I /* '111 073 "49 */
+J /* '112 074 "4A */
+K /* '113 075 "4B */
+L /* '114 076 "4C */
+M /* '115 077 "4D */
+N /* '116 078 "4E */
+O /* '117 079 "4F */
+P /* '120 080 "50 */
+Q /* '121 081 "51 */
+R /* '122 082 "52 */
+S /* '123 083 "53 */
+T /* '124 084 "54 */
+U /* '125 085 "55 */
+V /* '126 086 "56 */
+W /* '127 087 "57 */
+X /* '130 088 "58 */
+Y /* '131 089 "59 */
+Z /* '132 090 "5A */
+bracketleft /* '133 091 "5B */
+backslash /* '134 092 "5C */
+bracketright /* '135 093 "5D */
+asciicircum /* '136 094 "5E */
+underscore /* '137 095 "5F */
+grave /* '140 096 "60 */
+a /* '141 097 "61 */
+b /* '142 098 "62 */
+c /* '143 099 "63 */
+d /* '144 100 "64 */
+e /* '145 101 "65 */
+f /* '146 102 "66 */
+g /* '147 103 "67 */
+h /* '150 104 "68 */
+i /* '151 105 "69 */
+j /* '152 106 "6A */
+k /* '153 107 "6B */
+l /* '154 108 "6C */
+m /* '155 109 "6D */
+n /* '156 110 "6E */
+o /* '157 111 "6F */
+p /* '160 112 "70 */
+q /* '161 113 "71 */
+r /* '162 114 "72 */
+s /* '163 115 "73 */
+t /* '164 116 "74 */
+u /* '165 117 "75 */
+v /* '166 118 "76 */
+w /* '167 119 "77 */
+x /* '170 120 "78 */
+y /* '171 121 "79 */
+z /* '172 122 "7A */
+braceleft /* '173 123 "7B */
+bar /* '174 124 "7C */
+braceright /* '175 125 "7D */
+asciitilde /* '176 126 "7E */
+.notdef /* '177 127 "7F */
+.notdef /* '200 128 "80 */
+.notdef /* '201 129 "81 */
+.notdef /* '202 130 "82 */
+.notdef /* '203 131 "83 */
+.notdef /* '204 132 "84 */
+.notdef /* '205 133 "85 */
+.notdef /* '206 134 "86 */
+.notdef /* '207 135 "87 */
+.notdef /* '210 136 "88 */
+.notdef /* '211 137 "89 */
+.notdef /* '212 138 "8A */
+.notdef /* '213 139 "8B */
+.notdef /* '214 140 "8C */
+.notdef /* '215 141 "8D */
+.notdef /* '216 142 "8E */
+.notdef /* '217 143 "8F */
+dotlessi /* '220 144 "90 */
+grave /* '221 145 "91 */
+acute /* '222 146 "92 */
+circumflex /* '223 147 "93 */
+tilde /* '224 148 "94 */
+macron /* '225 149 "95 */
+breve /* '226 150 "96 */
+dotaccent /* '227 151 "97 */
+dieresis /* '230 152 "98 */
+.notdef /* '231 153 "99 */
+ring /* '232 154 "9A */
+cedilla /* '233 155 "9B */
+.notdef /* '234 156 "9C */
+hungarumlaut /* '235 157 "9D */
+ogonek /* '236 158 "9E */
+caron /* '237 159 "9F */
+space /* '240 160 "A0 */
+exclamdown /* '241 161 "A1 */
+cent /* '242 162 "A2 */
+sterling /* '243 163 "A3 */
+currency /* '244 164 "A4 */
+yen /* '245 165 "A5 */
+brokenbar /* '246 166 "A6 */
+section /* '247 167 "A7 */
+dieresis /* '250 168 "A8 */
+copyright /* '251 169 "A9 */
+ordfeminine /* '252 170 "AA */
+guillemotleft /* '253 171 "AB */
+logicalnot /* '254 172 "AC */
+hyphen /* '255 173 "AD */
+registered /* '256 174 "AE */
+macron /* '257 175 "AF */
+degree /* '260 176 "B0 */
+plusminus /* '261 177 "B1 */
+twosuperior /* '262 178 "B2 */
+threesuperior /* '263 179 "B3 */
+acute /* '264 180 "B4 */
+mu /* '265 181 "B5 */
+paragraph /* '266 182 "B6 */
+periodcentered /* '267 183 "B7 */
+cedilla /* '270 184 "B8 */
+onesuperior /* '271 185 "B9 */
+ordmasculine /* '272 186 "BA */
+guillemotright /* '273 187 "BB */
+onequarter /* '274 188 "BC */
+onehalf /* '275 189 "BD */
+threequarters /* '276 190 "BE */
+questiondown /* '277 191 "BF */
+Agrave /* '300 192 "C0 */
+Aacute /* '301 193 "C1 */
+Acircumflex /* '302 194 "C2 */
+Atilde /* '303 195 "C3 */
+Adieresis /* '304 196 "C4 */
+Aring /* '305 197 "C5 */
+AE /* '306 198 "C6 */
+Ccedilla /* '307 199 "C7 */
+Egrave /* '310 200 "C8 */
+Eacute /* '311 201 "C9 */
+Ecircumflex /* '312 202 "CA */
+Edieresis /* '313 203 "CB */
+Igrave /* '314 204 "CC */
+Iacute /* '315 205 "CD */
+Icircumflex /* '316 206 "CE */
+Idieresis /* '317 207 "CF */
+Eth /* '320 208 "D0 */
+Ntilde /* '321 209 "D1 */
+Ograve /* '322 210 "D2 */
+Oacute /* '323 211 "D3 */
+Ocircumflex /* '324 212 "D4 */
+Otilde /* '325 213 "D5 */
+Odieresis /* '326 214 "D6 */
+multiply /* '327 215 "D7 */
+Oslash /* '330 216 "D8 */
+Ugrave /* '331 217 "D9 */
+Uacute /* '332 218 "DA */
+Ucircumflex /* '333 219 "DB */
+Udieresis /* '334 220 "DC */
+Yacute /* '335 221 "DD */
+Thorn /* '336 222 "DE */
+germandbls /* '337 223 "DF */
+agrave /* '340 224 "E0 */
+aacute /* '341 225 "E1 */
+acircumflex /* '342 226 "E2 */
+atilde /* '343 227 "E3 */
+adieresis /* '344 228 "E4 */
+aring /* '345 229 "E5 */
+ae /* '346 230 "E6 */
+ccedilla /* '347 231 "E7 */
+egrave /* '350 232 "E8 */
+eacute /* '351 233 "E9 */
+ecircumflex /* '352 234 "EA */
+edieresis /* '353 235 "EB */
+igrave /* '354 236 "EC */
+iacute /* '355 237 "ED */
+icircumflex /* '356 238 "EE */
+idieresis /* '357 239 "EF */
+eth /* '360 240 "F0 */
+ntilde /* '361 241 "F1 */
+ograve /* '362 242 "F2 */
+oacute /* '363 243 "F3 */
+ocircumflex /* '364 244 "F4 */
+otilde /* '365 245 "F5 */
+odieresis /* '366 246 "F6 */
+divide /* '367 247 "F7 */
+oslash /* '370 248 "F8 */
+ugrave /* '371 249 "F9 */
+uacute /* '372 250 "FA */
+ucircumflex /* '373 251 "FB */
+udieresis /* '374 252 "FC */
+yacute /* '375 253 "FD */
+thorn /* '376 254 "FE */
+ydieresis /* '377 255 "FF */
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin2.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin2.enc
new file mode 100644
index 00000000000..1867a955d4e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin2.enc
@@ -0,0 +1,265 @@
+--------------------------------------------------------------
+I hope this is correct representation of ISO-8859-2
+encoding, which is used in most Center European languages.
+
+Drop me a mail at <jirap@bajt.cz>, if you find a bug here.
+----------------------------------------------------------
+
+Encoding=ISOLatin2Encoding
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+space
+exclam
+quotedbl
+numbersign
+dollar
+percent
+ampersand
+quoteright
+parenleft
+parenright
+asterisk
+plus
+comma
+minus
+period
+slash
+zero
+one
+two
+three
+four
+five
+six
+seven
+eight
+nine
+colon
+semicolon
+less
+equal
+greater
+question
+at
+A
+B
+C
+D
+E
+F
+G
+H
+I
+J
+K
+L
+M
+N
+O
+P
+Q
+R
+S
+T
+U
+V
+W
+X
+Y
+Z
+bracketleft
+backslash
+bracketright
+asciicircum
+underscore
+quoteleft
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+braceleft
+bar
+braceright
+asciitilde
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+dotlessi
+grave
+acute
+circumflex
+tilde
+.notdef
+breve
+.notdef
+.notdef
+.notdef
+ring
+.notdef
+.notdef
+hungarumlaut
+ogonek
+caron
+.notdef
+Aogonek
+breve
+Lslash
+currency
+Lcaron
+Sacute
+section
+dieresis
+Scaron
+Scedilla
+Tcaron
+Zacute
+hyphen
+Zcaron
+Zdotaccent
+degree
+aogonek
+ogonek
+lslash
+acute
+lcaron
+sacute
+circumflex
+cedilla
+scaron
+scedilla
+tcaron
+zacute
+hungarumlaut
+zcaron
+zdotaccent
+Racute
+Aacute
+Acircumflex
+Abreve
+Adieresis
+Lacute
+Cacute
+Ccedilla
+Ccaron
+Eacute
+Eogonek
+Edieresis
+Ecaron
+Iacute
+Icircumflex
+Dcaron
+Eth
+Nacute
+Ncaron
+Oacute
+Ocircumflex
+Ohungarumlaut
+Odieresis
+multiply
+Rcaron
+Uring
+Uacute
+Uhungarumlaut
+Udieresis
+Yacute
+Tcedilla
+germandbls
+racute
+aacute
+acircumflex
+abreve
+adieresis
+lacute
+cacute
+ccedilla
+ccaron
+eacute
+eogonek
+edieresis
+ecaron
+iacute
+icircumflex
+dcaron
+eth
+nacute
+ncaron
+oacute
+ocircumflex
+ohungarumlaut
+odieresis
+divide
+rcaron
+uring
+uacute
+uhungarumlaut
+udieresis
+yacute
+tcedilla
+dotaccent
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin9.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin9.enc
new file mode 100644
index 00000000000..498cf312325
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/IsoLatin9.enc
@@ -0,0 +1,259 @@
+
+Encoding=ISOLatin9Encoding
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+space
+exclam
+quotedbl
+numbersign
+dollar
+percent
+ampersand
+quoteright
+parenleft
+parenright
+asterisk
+plus
+comma
+minus
+period
+slash
+zero
+one
+two
+three
+four
+five
+six
+seven
+eight
+nine
+colon
+semicolon
+less
+equal
+greater
+question
+at
+A
+B
+C
+D
+E
+F
+G
+H
+I
+J
+K
+L
+M
+N
+O
+P
+Q
+R
+S
+T
+U
+V
+W
+X
+Y
+Z
+bracketleft
+backslash
+bracketright
+asciicircum
+underscore
+quoteleft
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+braceleft
+bar
+braceright
+asciitilde
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+.notdef
+space
+exclamdown
+cent
+sterling
+Euro
+yen
+Scaron
+section
+scaron
+copyright
+ordfeminine
+guillemotleft
+logicalnot
+hyphen
+registered
+macron
+degree
+plusminus
+twosuperior
+threesuperior
+Zcaron
+mu
+paragraph
+bullet
+zcaron
+onesuperior
+ordmasculine
+guillemotright
+OE
+oe
+Ydieresis
+questiondown
+Agrave
+Aacute
+Acircumflex
+Atilde
+Adieresis
+Aring
+AE
+Ccedilla
+Egrave
+Eacute
+Ecircumflex
+Edieresis
+Igrave
+Iacute
+Icircumflex
+Idieresis
+Eth
+Ntilde
+Ograve
+Oacute
+Ocircumflex
+Otilde
+Odieresis
+multiply
+Oslash
+Ugrave
+Uacute
+Ucircumflex
+Udieresis
+Yacute
+Thorn
+germandbls
+agrave
+aacute
+acircumflex
+atilde
+adieresis
+aring
+ae
+ccedilla
+egrave
+eacute
+ecircumflex
+edieresis
+igrave
+iacute
+icircumflex
+idieresis
+eth
+ntilde
+ograve
+oacute
+ocircumflex
+otilde
+odieresis
+divide
+oslash
+ugrave
+uacute
+ucircumflex
+udieresis
+yacute
+thorn
+ydieresis
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/PSLatin1.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/PSLatin1.enc
new file mode 100644
index 00000000000..10ec12de80e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/PSLatin1.enc
@@ -0,0 +1,282 @@
+
+ t1lib-encodingfile
+
+This file is intended to be read by the function T1_LoadEncoding(), which is
+part of t1lib. The syntactic format is really simple. The file contents is
+scanned according to the following priciple:
+
+1) There appears a "Encoding=[scheme]" at the beginning of a line.
+
+2) Then exacly 256 lines of text must follow. These lines have to
+ start with a valid charactername, followed by at least one white
+ space character. The remaining of the line is ignored and may be
+ used for comments, e.g., for numbering of characters.
+
+3) After these 256 lines all following data is ignored.
+
+Notice: This file contains ISOLatin1Encoding as defined in the PostScript
+ language (Level 2 and above). It differs slightly from what is
+ specified in ISO 8859-1.
+
+ (1999-11-16, RMz)
+
+--------------------------------------------------------------------------
+
+Encoding=PSLatin1Encoding /* The name of the encoding scheme */
+.notdef /* '000 000 "00 */
+.notdef /* '001 001 "01 */
+.notdef /* '002 002 "02 */
+.notdef /* '003 003 "03 */
+.notdef /* '004 004 "04 */
+.notdef /* '005 005 "05 */
+.notdef /* '006 006 "06 */
+.notdef /* '007 007 "07 */
+.notdef /* '010 008 "08 */
+.notdef /* '011 009 "09 */
+.notdef /* '012 010 "0A */
+.notdef /* '013 011 "0B */
+.notdef /* '014 012 "0C */
+.notdef /* '015 013 "0D */
+.notdef /* '016 014 "0E */
+.notdef /* '017 015 "0F */
+.notdef /* '020 016 "10 */
+.notdef /* '021 017 "11 */
+.notdef /* '022 018 "12 */
+.notdef /* '023 019 "13 */
+.notdef /* '024 020 "14 */
+.notdef /* '025 021 "15 */
+.notdef /* '026 022 "16 */
+.notdef /* '027 023 "17 */
+.notdef /* '030 024 "18 */
+.notdef /* '031 025 "19 */
+.notdef /* '032 026 "1A */
+.notdef /* '033 027 "1B */
+.notdef /* '034 028 "1C */
+.notdef /* '035 029 "1D */
+.notdef /* '036 030 "1E */
+.notdef /* '037 031 "1F */
+space /* '040 032 "20 */
+exclam /* '041 033 "21 */
+quotedbl /* '042 034 "22 */
+numbersign /* '043 035 "23 */
+dollar /* '044 036 "24 */
+percent /* '045 037 "25 */
+ampersand /* '046 038 "26 */
+quoteright /* '047 039 "27 */
+parenleft /* '050 040 "28 */
+parenright /* '051 041 "29 */
+asterisk /* '052 042 "2A */
+plus /* '053 043 "2B */
+comma /* '054 044 "2C */
+minus /* '055 045 "2D */
+period /* '056 046 "2E */
+slash /* '057 047 "2F */
+zero /* '060 048 "30 */
+one /* '061 049 "31 */
+two /* '062 050 "32 */
+three /* '063 051 "33 */
+four /* '064 052 "34 */
+five /* '065 053 "35 */
+six /* '066 054 "36 */
+seven /* '067 055 "37 */
+eight /* '070 056 "38 */
+nine /* '071 057 "39 */
+colon /* '072 058 "3A */
+semicolon /* '073 059 "3B */
+less /* '074 060 "3C */
+equal /* '075 061 "3D */
+greater /* '076 062 "3E */
+question /* '077 063 "3F */
+at /* '100 064 "40 */
+A /* '101 065 "41 */
+B /* '102 066 "42 */
+C /* '103 067 "43 */
+D /* '104 068 "44 */
+E /* '105 069 "45 */
+F /* '106 070 "46 */
+G /* '107 071 "47 */
+H /* '110 072 "48 */
+I /* '111 073 "49 */
+J /* '112 074 "4A */
+K /* '113 075 "4B */
+L /* '114 076 "4C */
+M /* '115 077 "4D */
+N /* '116 078 "4E */
+O /* '117 079 "4F */
+P /* '120 080 "50 */
+Q /* '121 081 "51 */
+R /* '122 082 "52 */
+S /* '123 083 "53 */
+T /* '124 084 "54 */
+U /* '125 085 "55 */
+V /* '126 086 "56 */
+W /* '127 087 "57 */
+X /* '130 088 "58 */
+Y /* '131 089 "59 */
+Z /* '132 090 "5A */
+bracketleft /* '133 091 "5B */
+backslash /* '134 092 "5C */
+bracketright /* '135 093 "5D */
+asciicircum /* '136 094 "5E */
+underscore /* '137 095 "5F */
+quoteleft /* '140 096 "60 */
+a /* '141 097 "61 */
+b /* '142 098 "62 */
+c /* '143 099 "63 */
+d /* '144 100 "64 */
+e /* '145 101 "65 */
+f /* '146 102 "66 */
+g /* '147 103 "67 */
+h /* '150 104 "68 */
+i /* '151 105 "69 */
+j /* '152 106 "6A */
+k /* '153 107 "6B */
+l /* '154 108 "6C */
+m /* '155 109 "6D */
+n /* '156 110 "6E */
+o /* '157 111 "6F */
+p /* '160 112 "70 */
+q /* '161 113 "71 */
+r /* '162 114 "72 */
+s /* '163 115 "73 */
+t /* '164 116 "74 */
+u /* '165 117 "75 */
+v /* '166 118 "76 */
+w /* '167 119 "77 */
+x /* '170 120 "78 */
+y /* '171 121 "79 */
+z /* '172 122 "7A */
+braceleft /* '173 123 "7B */
+bar /* '174 124 "7C */
+braceright /* '175 125 "7D */
+asciitilde /* '176 126 "7E */
+.notdef /* '177 127 "7F */
+.notdef /* '200 128 "80 */
+.notdef /* '201 129 "81 */
+.notdef /* '202 130 "82 */
+.notdef /* '203 131 "83 */
+.notdef /* '204 132 "84 */
+.notdef /* '205 133 "85 */
+.notdef /* '206 134 "86 */
+.notdef /* '207 135 "87 */
+.notdef /* '210 136 "88 */
+.notdef /* '211 137 "89 */
+.notdef /* '212 138 "8A */
+.notdef /* '213 139 "8B */
+.notdef /* '214 140 "8C */
+.notdef /* '215 141 "8D */
+.notdef /* '216 142 "8E */
+.notdef /* '217 143 "8F */
+dotlessi /* '220 144 "90 */
+grave /* '221 145 "91 */
+acute /* '222 146 "92 */
+circumflex /* '223 147 "93 */
+tilde /* '224 148 "94 */
+macron /* '225 149 "95 */
+breve /* '226 150 "96 */
+dotaccent /* '227 151 "97 */
+dieresis /* '230 152 "98 */
+.notdef /* '231 153 "99 */
+ring /* '232 154 "9A */
+cedilla /* '233 155 "9B */
+.notdef /* '234 156 "9C */
+hungarumlaut /* '235 157 "9D */
+ogonek /* '236 158 "9E */
+caron /* '237 159 "9F */
+space /* '240 160 "A0 */
+exclamdown /* '241 161 "A1 */
+cent /* '242 162 "A2 */
+sterling /* '243 163 "A3 */
+currency /* '244 164 "A4 */
+yen /* '245 165 "A5 */
+brokenbar /* '246 166 "A6 */
+section /* '247 167 "A7 */
+dieresis /* '250 168 "A8 */
+copyright /* '251 169 "A9 */
+ordfeminine /* '252 170 "AA */
+guillemotleft /* '253 171 "AB */
+logicalnot /* '254 172 "AC */
+hyphen /* '255 173 "AD */
+registered /* '256 174 "AE */
+macron /* '257 175 "AF */
+degree /* '260 176 "B0 */
+plusminus /* '261 177 "B1 */
+twosuperior /* '262 178 "B2 */
+threesuperior /* '263 179 "B3 */
+acute /* '264 180 "B4 */
+mu /* '265 181 "B5 */
+paragraph /* '266 182 "B6 */
+periodcentered /* '267 183 "B7 */
+cedilla /* '270 184 "B8 */
+onesuperior /* '271 185 "B9 */
+ordmasculine /* '272 186 "BA */
+guillemotright /* '273 187 "BB */
+onequarter /* '274 188 "BC */
+onehalf /* '275 189 "BD */
+threequarters /* '276 190 "BE */
+questiondown /* '277 191 "BF */
+Agrave /* '300 192 "C0 */
+Aacute /* '301 193 "C1 */
+Acircumflex /* '302 194 "C2 */
+Atilde /* '303 195 "C3 */
+Adieresis /* '304 196 "C4 */
+Aring /* '305 197 "C5 */
+AE /* '306 198 "C6 */
+Ccedilla /* '307 199 "C7 */
+Egrave /* '310 200 "C8 */
+Eacute /* '311 201 "C9 */
+Ecircumflex /* '312 202 "CA */
+Edieresis /* '313 203 "CB */
+Igrave /* '314 204 "CC */
+Iacute /* '315 205 "CD */
+Icircumflex /* '316 206 "CE */
+Idieresis /* '317 207 "CF */
+Eth /* '320 208 "D0 */
+Ntilde /* '321 209 "D1 */
+Ograve /* '322 210 "D2 */
+Oacute /* '323 211 "D3 */
+Ocircumflex /* '324 212 "D4 */
+Otilde /* '325 213 "D5 */
+Odieresis /* '326 214 "D6 */
+multiply /* '327 215 "D7 */
+Oslash /* '330 216 "D8 */
+Ugrave /* '331 217 "D9 */
+Uacute /* '332 218 "DA */
+Ucircumflex /* '333 219 "DB */
+Udieresis /* '334 220 "DC */
+Yacute /* '335 221 "DD */
+Thorn /* '336 222 "DE */
+germandbls /* '337 223 "DF */
+agrave /* '340 224 "E0 */
+aacute /* '341 225 "E1 */
+acircumflex /* '342 226 "E2 */
+atilde /* '343 227 "E3 */
+adieresis /* '344 228 "E4 */
+aring /* '345 229 "E5 */
+ae /* '346 230 "E6 */
+ccedilla /* '347 231 "E7 */
+egrave /* '350 232 "E8 */
+eacute /* '351 233 "E9 */
+ecircumflex /* '352 234 "EA */
+edieresis /* '353 235 "EB */
+igrave /* '354 236 "EC */
+iacute /* '355 237 "ED */
+icircumflex /* '356 238 "EE */
+idieresis /* '357 239 "EF */
+eth /* '360 240 "F0 */
+ntilde /* '361 241 "F1 */
+ograve /* '362 242 "F2 */
+oacute /* '363 243 "F3 */
+ocircumflex /* '364 244 "F4 */
+otilde /* '365 245 "F5 */
+odieresis /* '366 246 "F6 */
+divide /* '367 247 "F7 */
+oslash /* '370 248 "F8 */
+ugrave /* '371 249 "F9 */
+uacute /* '372 250 "FA */
+ucircumflex /* '373 251 "FB */
+udieresis /* '374 252 "FC */
+yacute /* '375 253 "FD */
+thorn /* '376 254 "FE */
+ydieresis /* '377 255 "FF */
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dc.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dc.enc
new file mode 100644
index 00000000000..a641af9553d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dc.enc
@@ -0,0 +1,78 @@
+% This is an old version of the Cork encoding, with no value but historical.
+%
+% These are the ligs and kerns in addition to those found in the
+% AFM file. (The only ligs in the Times-Roman.afm file are the
+% fi and fl ligatures.)
+%
+% LIGKERN space l =: lslash ; space L =: Lslash ;
+% LIGKERN question quoteleft =: questiondown ; exclam quoteleft =: exclamdown ;
+% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;
+% LIGKERN quoteleft quoteleft =: quotedblleft ;
+% LIGKERN quoteright quoteright =: quotedblright ;
+%
+% We blow away kerns to and from spaces (TeX doesn't have a
+% space) and also remove any kerns from the numbers (although
+% the only kern pair that mentions a number in Times-Roman.afm
+% is one one.)
+%
+% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;
+% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;
+% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;
+% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;
+% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;
+% LIGKERN nine {} * ; * {} nine ;
+% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ;
+% LIGKERN greater greater =: guillemotright ;
+%
+/DCEncoding[/test/test2 % now 256 chars follow
+% 0x00
+ /grave /acute /circumflex /tilde /dieresis /hungarumlaut %/ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+% 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /.notdef
+ /zeroinferior /dotlessi /dotlessj /ff /fi /fl /ffi /ffl
+% 0x20
+ /.notdef /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde /hyphen
+% 0x80
+ /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute /Ncaron /Ng /Ohungarumlaut /Racute
+% 0x90
+ /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcedilla /Uhungarumlaut /Uring
+ /Ldot /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dbar /section
+% 0xA0
+ /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute /ncaron /ng /ohungarumlaut /racute
+% 0xB0
+ /rcaron /sacute /scaron /scedilla /tcaron /tcedilla /uhungarumlaut /uring
+ /ldot /zacute /zcaron /zdotaccent /ij /exclamdown /questiondown /sterling
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /SS
+% 0xE0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+% /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe
+ /oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/germandbls ] def \ No newline at end of file
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dvips.enc b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dvips.enc
new file mode 100644
index 00000000000..ea451ff106b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/enc/dvips.enc
@@ -0,0 +1,75 @@
+% @@psencodingfile@{
+% author = "T. Rokicki, K. Berry",
+% version = "2.0",
+% date = "22 June 1996",
+% filename = "dvips.enc",
+% email = "kb@@mail.tug.org",
+% address = "135 Center Hill Rd. // Plymouth, MA 02360",
+% codetable = "ISO/ASCII",
+% checksum = "75 515 3715",
+% docstring = "An encoding for PostScript fonts to be used with TeX."
+% @}
+%
+% This is almost the default encoding produced by the afm2tfm program
+% that comes with the dvips distribution, when it is applied to a
+% StandardEncoding PostScript font. The positions of the accented
+% characters (which afm2tfm assigned more or less randomly in the
+% previous set of fonts) have been held fixed.
+%
+% It is almost upward-compatible with TeX text. (The primary exceptions
+% are dotaccent and hungarumlaut.) Some of the ligatures are also in
+% different positions, but this is not important, since ligature
+% positions are defined in the TFM file, not by macros.
+%
+% The character positions were assigned in this order:
+% 1) non-composite characters in the afm2tfm encoding (except dotlessj
+% was included in its plain TeX position);
+% 2) available characters in the Cork (EC) encoding;
+% 3) remaining composite characters in the base encoding (starting at
+% position 130 decimal). We don't include all the other base
+% characters because that changes the height/depth/width tables in
+% the TFM files (because more characters mean more distinct values).
+%
+% We leave the initial positions open for the Greek letters in Times-Roman.
+%
+/DvipsEncoding [
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef
+ /.notdef /quotesingle /exclamdown /questiondown
+ /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+ /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /tilde /dieresis
+ /asciicircum /asciitilde /Ccedilla /Iacute
+ /Icircumflex /atilde /edieresis /egrave
+ /scaron /zcaron /Eth /ff /ffi /ffl /.notdef /.notdef
+ /.notdef /.notdef /Scaron /.notdef /.notdef /.notdef /.notdef /.notdef
+ /Ydieresis /.notdef /Zcaron /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /cent /sterling /fraction /yen /florin /section
+ /currency /copyright /quotedblleft /guillemotleft
+ /guilsinglleft /guilsinglright /fi /fl
+ /degree /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet
+ /quotesinglbase /quotedblbase /quotedblright /guillemotright
+ /ellipsis /perthousand /.notdef /.notdef
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /dotaccent
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /hungarumlaut /ogonek /Idieresis
+ /emdash /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /.notdef
+ /.notdef /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef
+ /agrave /aacute /acircumflex /ordfeminine
+ /adieresis /aring /.notdef /ccedilla
+ /Lslash /eacute /ecircumflex /ordmasculine
+ /igrave /iacute /icircumflex /idieresis
+ /.notdef /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /.notdef
+ /lslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/README b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/README
new file mode 100644
index 00000000000..48f3f23f911
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/README
@@ -0,0 +1,21 @@
+This is a copy of the Charter fonts which Bitstream contributed to the X
+consortium, arranged for use with TeX. Here is the copyright notice:
+
+ (c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
+
+ You are hereby granted permission under all Bitstream propriety rights
+ to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
+ Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
+ for any purpose and without restriction; provided, that this notice is
+ left intact on all copies of such fonts and that Bitstream's trademark
+ is acknowledged as shown below on all unmodified copies of the 4 Charter
+ Type 1 fonts.
+
+ BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
+
+I used the `afm2tfm' program which comes with Tom Rokicki's dvips to
+convert the AFM files to TFM and VF files. You can get dvips from
+labrea.stanford.edu.
+
+karl@cs.umb.edu
+Member of the League for Programming Freedom---write to lpf@uunet.uu.net.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchb.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchb.pfb
new file mode 100644
index 00000000000..07011728968
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchb.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchbi.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchbi.pfb
new file mode 100644
index 00000000000..d68f639bb01
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchbi.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchr.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchr.pfb
new file mode 100644
index 00000000000..72a1606b4b4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchr.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchri.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchri.pfb
new file mode 100644
index 00000000000..b5d4ded6b26
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/bchri.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbx10.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbx10.pfb
new file mode 100644
index 00000000000..597d6199ffe
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbx10.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbxti10.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbxti10.pfb
new file mode 100644
index 00000000000..f8c7de984ae
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcbxti10.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcr10.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcr10.pfb
new file mode 100644
index 00000000000..34cb0eaa8f5
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcr10.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcti10.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcti10.pfb
new file mode 100644
index 00000000000..54663d628f0
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/dcti10.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/eufm10.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/eufm10.pfb
new file mode 100644
index 00000000000..47b19889dbd
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Fonts/type1/eufm10.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/LGPL b/Build/source/libs/t1lib/t1lib-5.1.2/LGPL
new file mode 100644
index 00000000000..92b8903ff3f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/LGPL
@@ -0,0 +1,481 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/LICENSE b/Build/source/libs/t1lib/t1lib-5.1.2/LICENSE
new file mode 100644
index 00000000000..a43ea2126fb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/Makefile.in
new file mode 100644
index 00000000000..29c3468f970
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/Makefile.in
@@ -0,0 +1,166 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# without_doc
+# clean
+# distclean
+# t1python-all
+# t1python-clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 04/06/1997
+# Last modified: 2005-05-01
+#
+
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS) $(X_CFLAGS)
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+t1lib_version = @T1LIB_VERSION@
+t1lib_revision = @T1LIB_REVISION@
+t1lib_patchlevel = @T1LIB_PATCHLEVEL@
+
+# Main target to build
+
+MAIN_TARGET = @MAIN_TARGET@
+COMMONSUBDIRS = lib \
+ type1afm \
+ examples
+DOCSUBDIRS = doc
+
+
+
+# Drop xglyph from targets if we do not have X11
+XSUBDIRS = @XSUBDIRS@
+
+
+ALLSUBDIRS = $(COMMONSUBDIRS) $(XSUBDIRS)
+
+DUMMYSUBDIRS = XXXX
+
+all: $(DUMMYSUBDIRS) $(DOCSUBDIRS)
+
+
+without_doc: $(DUMMYSUBDIRS)
+
+
+# warning the following target does only work with gcc and is no
+# official target. It generates .dependencies files and changes
+# the suffixes from .o to .lo.
+dependencies: dummy
+ for i in $(ALLSUBDIRS); do \
+ (cd $$i; make dependencies ) || exit 1; \
+ done
+
+
+
+$(DOCSUBDIRS): dummy
+ for i in $(DOCSUBDIRS); do \
+ (cd $$i; $(SUBMAKE) ) || exit 1; \
+ done
+
+
+$(DUMMYSUBDIRS): dummy
+ for i in $(ALLSUBDIRS); do \
+ (cd $$i; $(SUBMAKE) ) || exit 1; \
+ done
+
+
+install: dummy
+ for i in $(ALLSUBDIRS) $(DOCSUBDIRS); do \
+ (cd $$i; $(MAKE) install) || exit 1; \
+ done
+
+
+uninstall: dummy
+ for i in $(ALLSUBDIRS) $(DOCSUBDIRS); do \
+ (cd $$i; $(MAKE) uninstall) || exit 1; \
+ done
+ $(RM) -Rf $(datadir)/t1lib-$(t1lib_version).$(t1lib_revision)
+
+
+.PHONY: uninstall
+
+
+.PHONY: install
+
+
+.PHONY: clean
+
+
+clean: dummy
+ for i in $(ALLSUBDIRS); do \
+ (cd $$i; $(MAKE) clean) || exit 1; \
+ done
+ for i in $(DOCSUBDIRS); do \
+ (cd $$i; $(MAKE) clean) || exit 1; \
+ done
+
+
+# In order not to delete the t1python Makefile, we have to remove the
+# Makefile's one at a time:
+distclean: clean
+ $(RM) *~
+ $(RM) config.cache config.log config.status
+ $(RM) Makefile
+ $(RM) lib/Makefile
+ $(RM) lib/type1/Makefile
+ $(RM) lib/t1lib/Makefile
+ $(RM) lib/t1lib/sysconf.h
+ $(RM) type1afm/Makefile
+ $(RM) examples/Makefile
+ $(RM) xglyph/Makefile
+ $(RM) doc/Makefile
+ $(RM) libtool
+
+
+# The following two targets are for building and cleaning the python-
+# interface contributed by Fred L. Drake, Jr. They are completely
+# independent from the other t1lib-targets.
+t1python-all:
+ (cd t1python; $(MAKE); $(MAKE))
+
+
+t1python-clean:
+ (cd t1python; $(MAKE) clean)
+
+
+dummy:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/README.t1lib-5.1.2 b/Build/source/libs/t1lib/t1lib-5.1.2/README.t1lib-5.1.2
new file mode 100644
index 00000000000..55828319b09
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/README.t1lib-5.1.2
@@ -0,0 +1,223 @@
+
+ --------------------------------------------------------------------------
+ --------------------------- t1lib-README ---------------------------------
+ --------------------------------------------------------------------------
+
+/*--------------------------------------------------------------------------
+ ----- File: REAMDE.t1lib-5.1.2
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2007-12-23
+ ----- Description: This is file README.t1lib of the t1lib-package. It
+ contains an overview and brief installation
+ instructions for the t1-library.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library License. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+
+About t1lib:
+------------
+
+t1lib is a library distributed under the GNU General Public Library
+License for generating character- and string-glyphs from Adobe Type 1
+fonts under UNIX. t1lib uses most of the code of the X11 rasterizer
+donated by IBM to the X11-project. But some disadvantages of the
+rasterizer being included in X11 have been eliminated. Here are some
+of the features:
+
+- t1lib is completely independent of X11 (although the program
+ provided for testing the library needs X11)
+
+- fonts are made known to library by means of a font database file at
+ runtime
+
+- searchpaths for all types of input files are configured by means
+ of a configuration file at runtime
+
+- characters are rastered as they are needed
+
+- characters and complete strings may be rastered by a simple function
+ call
+
+- when rastering strings, pairwise kerning information from .afm-files
+ may optionally be taken into account
+
+- an interface to ligature-information of afm-files is provided
+
+- a program to generate afm-files from Type 1 font files is included
+
+- rotation and arbitrary transformations are supported
+
+- there's support for extending and slanting fonts
+
+- underlining, overlining and overstriking is supported
+
+- new encoding vectors may be loaded at runtime and fonts may be
+ reencoded using these encoding vectors
+
+- antialiasing is implemented
+
+- Right-To-Left typesetting is supported
+
+- Font subsetting is easily possible
+
+- support of composite character information
+
+- stroking of character outlines with variable strokewidths
+
+- An interactive test program called "xglyph" is included in the
+ distribution. This program allows to test all of the features of the
+ library. It requires X11.
+
+
+
+Changes and New Features:
+-------------------------
+
+- See the file Changes in the T1Lib top-directory for information on new
+ features.
+
+
+
+Installation:
+-------------
+
+-----------------------------------------------------------------------------
+Note: VMS-users should examine configure.com in the toplevel directory, which
+ is a configure-script for VMS, kindly contributed by John Hasstedt
+ and now maintained by Martin Zinser.
+ This file contains notes on how to compile t1lib on VMS.
+-----------------------------------------------------------------------------
+
+
+After unpacking the archive (what you obviously did already), change
+to subdirectory t1lib-..../ and type:
+
+ ./configure
+
+This will create the Makefiles. Then type
+
+ make
+
+
+In order to use the testprogram xglyph, X11 needs to be installed on your
+system.
+
+If you have difficulties during configuring and building t1lib, cd to
+directory t1lib-.../doc and execute
+
+ $ latex t1lib_doc.tex
+ $ makeindex t1lib_doc
+ $ latex t1lib_doc.tex
+ $ latex t1lib_doc.tex
+
+This will generate the docs which contain a more detailed description
+of the build-process. LaTeX2e is required. Alternatively, you can scan the
+preformatted pdf-documentation.
+
+
+Before installing the libraries, you should test whether all things
+work correct:
+
+1) Change to subdirectory xglyph
+
+2) Start the program xglyph
+
+3) Ensure that the output-window is not hidden behind another window.
+
+4) Before doing anything other, click on button "String". The
+ string "Test" should now be rastered and displayed in the
+ output-window, using font BitstreamCharterBTRoman at 100bp without
+ kerning. If that works, most probably all works for you.
+
+5) Have a look at t1lib_doc.dvi in the doc-subdirectory of the package
+ and read the chapter on xglyph. However, most of this program is
+ self-explaining, so that you might want to omit this step.
+
+6) Play with the program and enjoy.
+
+7) If you do not have X11, you can still check whether t1lib works for
+ you. Copy one of the pfb-files from t1lib-.../Fonts/type1, say,
+ bchr.pfb, to the type1afm-subdirectory, and run
+
+ type1afm bchr.pfb
+
+ If the afm-file bchr.afm is generated, t1lib will most probably
+ work on your system.
+
+
+
+Documentation:
+--------------
+
+As mentioned above, documentation is provided in LaTeX2e-format
+subdirectory T1Lib/doc. It should have been built during the build.
+The section on runtime setup is really important,
+because programs may fail due to an invalid or incomplete runtime
+setup, although the programs itself may be correct!
+A preformatted Version is also available in pdf.
+
+
+
+How to get it:
+--------------
+
+t1lib is available at
+
+ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-x.y[.z].tar.gz
+
+where x.y[.z] is the version identification.
+
+
+
+Closing:
+--------
+
+You are allowed to send the author lots of money and dozents of gifts,
+but you needn't :-)
+If you have any comments to this library, feedback is wanted. Send
+eMail to:
+
+Rainer.Menzner@web.de
+
+
+
+Future:
+-------
+
+Within the past years, my time has constantly and increasingly become spare so
+that I hardly found time to further develop t1lib. And developing free
+software is undoubtedly related to a certain amount of fun, which in turn only
+can come up if you are relaxed with respect to time ...
+
+Since t1lib now has reached a reasonably stable state, I intend to more or
+less freeze the development of new features at this point. Of course, bug
+fixes etc. should be possible further.
+
+If there is somebody out there willing to further develop t1lib, he or she is
+welcome to contact me ...
+
+
+
+Have fun,
+
+ -Rainer
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/README.t1python b/Build/source/libs/t1lib/t1lib-5.1.2/README.t1python
new file mode 100644
index 00000000000..fc87f9d5278
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/README.t1python
@@ -0,0 +1,18 @@
+
+ About t1python
+ --------------
+
+t1python is a wrapper in the Python language, written by Fred L. Drake, Jr
+(fdrake@acm.org), which makes most functionality of t1lib available from
+within Python script programs. Further information about this package is
+available at
+
+http://www.python.org/sigs/image-sig/t1lib/
+
+As opposed to some earlier versions t1python is not included in the current
+version of t1lib. This is due to time constraints of Fred and myself. Users
+interested in t1python should watch the URL above for getting information
+about newer versions of t1python.
+
+
+-Rainer
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/README.win32 b/Build/source/libs/t1lib/t1lib-5.1.2/README.win32
new file mode 100644
index 00000000000..63986330dcb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/README.win32
@@ -0,0 +1,6 @@
+The directory win32 contains some files for compiling t1lib under MS Visual
+C++ 6.0. They are contributed by Nakano Hideo (hideo@mb.infoeddy.ne.jp).
+
+I can't tell anything about this and add it to the sources for convenience.
+
+ (RMz, 2000-03-20)
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.guess b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.guess
new file mode 100755
index 00000000000..7d0185e019e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.guess
@@ -0,0 +1,1447 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+timestamp='2004-09-07'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit 0 ;;
+ amd64:OpenBSD:*:*)
+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ luna88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sgi:OpenBSD:*:*)
+ echo mips64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit 0 ;;
+ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c \
+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ # avoid double evaluation of $set_cc_for_build
+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ x86:Interix*:[34]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit 0 ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit 0 ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit 0 ;;
+ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit 0 ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ *86) UNAME_PROCESSOR=i686 ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms && exit 0 ;;
+ I*) echo ia64-dec-vms && exit 0 ;;
+ V*) echo vax-dec-vms && exit 0 ;;
+ esac
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.sub b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.sub
new file mode 100755
index 00000000000..edb6b663ca2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/config.sub
@@ -0,0 +1,1555 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+timestamp='2004-08-29'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit 0;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | msp430 \
+ | ns16k | ns32k \
+ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | msp430-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ or32 | or32-*)
+ basic_machine=or32-unknown
+ os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ice_find_athena.m4 b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ice_find_athena.m4
new file mode 100644
index 00000000000..c63a9506b26
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ice_find_athena.m4
@@ -0,0 +1,185 @@
+dnl
+dnl ice_find_athena.m4
+dnl
+dnl -----------------------------------------------------------
+dnl
+dnl * To: autoconf-collection@peti.gmd.de
+dnl * Subject: ice_find_athena.m4
+dnl * From: Andreas Zeller <zeller@ips.cs.tu-bs.de>
+dnl * Date: Sat, 29 Nov 1997 17:14:09 +0100 (MET)
+dnl * Sender: autoconf-collection-owner@peti.gmd.de
+dnl
+dnl -----------------------------------------------------------
+dnl
+dnl ICE_FIND_ATHENA
+dnl ---------------
+dnl
+dnl Find Athena libraries and headers.
+dnl Put Athena include directory in athena_includes,
+dnl put Athena library directory in athena_libraries,
+dnl and add appropriate flags to X_CFLAGS and X_LIBS.
+dnl
+dnl
+AC_DEFUN(ICE_FIND_ATHENA,
+[
+AC_REQUIRE([AC_PATH_XTRA])
+athena_includes=
+athena_libraries=
+AC_ARG_WITH(athena,
+[ --without-athena do not use Athena widgets])
+dnl Treat --without-athena like
+dnl --without-athena-includes --without-athena-libraries.
+if test "$with_athena" = "no"
+then
+athena_includes=no
+athena_libraries=no
+fi
+AC_ARG_WITH(athena-includes,
+[ --with-athena-includes=DIR Athena include files are in DIR],
+athena_includes="$withval")
+AC_ARG_WITH(athena-libraries,
+[ --with-athena-libraries=DIR Athena libraries are in DIR],
+athena_libraries="$withval")
+AC_MSG_CHECKING(for Athena)
+#
+#
+# Search the include files.
+#
+if test "$athena_includes" = ""; then
+AC_CACHE_VAL(ice_cv_athena_includes,
+[
+ice_athena_save_LIBS="$LIBS"
+ice_athena_save_CFLAGS="$CFLAGS"
+ice_athena_save_CPPFLAGS="$CPPFLAGS"
+ice_athena_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXaw -lXmu -lXext -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+AC_TRY_COMPILE([
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Text.h>
+],[int a;],
+[
+# X11/Xaw/Text.h is in the standard search path.
+ice_cv_athena_includes=
+],
+[
+# X11/Xaw/Text.h is not in the standard search path.
+# Locate it and put its directory in `athena_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+ /usr/include/Motif2.0 /usr/include/Motif1.2 /usr/include/Motif1.1 \
+ /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 \
+ /usr/dt/include /usr/openwin/include \
+ /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+ "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+ "${prefix}"/include/* /usr/include/* /usr/local/include/*; do
+if test -f "$dir/X11/Xaw/Text.h"; then
+ice_cv_athena_includes="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ice_athena_save_LIBS"
+CFLAGS="$ice_athena_save_CFLAGS"
+CPPFLAGS="$ice_athena_save_CPPFLAGS"
+LDFLAGS="$ice_athena_save_LDFLAGS"
+])
+athena_includes="$ice_cv_athena_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$athena_libraries" = ""; then
+AC_CACHE_VAL(ice_cv_athena_libraries,
+[
+ice_athena_save_LIBS="$LIBS"
+ice_athena_save_CFLAGS="$CFLAGS"
+ice_athena_save_CPPFLAGS="$CPPFLAGS"
+ice_athena_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXaw -lXmu -lXext -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+AC_TRY_LINK([
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Text.h>
+],[XtToolkitInitialize();],
+[
+# libXaw.a is in the standard search path.
+ice_cv_athena_libraries=
+],
+[
+# libXaw.a is not in the standard search path.
+# Locate it and put its directory in `athena_libraries'
+#
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+ /usr/lib/Motif2.0 /usr/lib/Motif1.2 /usr/lib/Motif1.1 \
+ /usr/lib/X11R6 /usr/lib/X11R5 /usr/lib/X11R4 /usr/lib/X11 \
+ /usr/dt/lib /usr/openwin/lib \
+ /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+ "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+ "${prefix}"/lib/* /usr/lib/* /usr/local/lib/*; do
+if test -d "$dir" && test "`ls $dir/libXaw.* 2> /dev/null`" != ""; then
+ice_cv_athena_libraries="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ice_athena_save_LIBS"
+CFLAGS="$ice_athena_save_CFLAGS"
+CPPFLAGS="$ice_athena_save_CPPFLAGS"
+LDFLAGS="$ice_athena_save_LDFLAGS"
+])
+#
+athena_libraries="$ice_cv_athena_libraries"
+fi
+# Add Athena definitions to X flags
+#
+if test "$athena_includes" != "" && test "$athena_includes" != "$x_includes" && test "$athena_includes" != "no"
+then
+X_CFLAGS="-I$athena_includes $X_CFLAGS"
+fi
+if test "$athena_libraries" != "" && test "$athena_libraries" != "$x_libraries" && test "$athena_libraries" != "no"
+then
+case "$X_LIBS" in
+ *-R\ *) X_LIBS="-L$athena_libraries -R $athena_libraries $X_LIBS";;
+ *-R*) X_LIBS="-L$athena_libraries -R$athena_libraries $X_LIBS";;
+ *) X_LIBS="-L$athena_libraries $X_LIBS";;
+esac
+fi
+#
+#
+athena_libraries_result="$athena_libraries"
+athena_includes_result="$athena_includes"
+test "$athena_libraries_result" = "" &&
+ athena_libraries_result="in default path"
+test "$athena_includes_result" = "" &&
+ athena_includes_result="in default path"
+test "$athena_libraries_result" = "no" &&
+ athena_libraries_result="(none)"
+test "$athena_includes_result" = "no" &&
+ athena_includes_result="(none)"
+AC_MSG_RESULT(
+ [libraries $athena_libraries_result, headers $athena_includes_result])
+])dnl
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/install-sh b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/install-sh
new file mode 100755
index 00000000000..b777f1244cd
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/install-sh
@@ -0,0 +1,322 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-07-05.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
+
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
+done
+
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ltmain.sh b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ltmain.sh
new file mode 100644
index 00000000000..761e1fd509a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/ltmain.sh
@@ -0,0 +1,6402 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.10
+TIMESTAMP=" (1.1220.2.130 2004/09/19 12:13:49)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+ SP2NL="tr '\100' '\n'"
+ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+ *) # Assume ASCII based system
+ SP2NL="tr '\040' '\012'"
+ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS="
+"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid () {
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+ if test "X$win32_nmres" = "Ximport" ; then
+ win32_libid_type="x86 archive import"
+ else
+ win32_libid_type="x86 archive static"
+ fi
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag () {
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives () {
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xdir="$my_gentop/$my_xlib"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename $darwin_archive`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ # Remove the table of contents from the thin files.
+ $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF 2>/dev/null || true
+ $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF\ SORTED 2>/dev/null || true
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $AR -xo "${darwin_base_archive}"
+ rm "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ done # $darwin_arches
+ ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ rm -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ (cd $my_xdir && $AR x $my_xabs) || exit $?
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ # We will extract separately just the conflicting names and we will
+ # no longer touch any unique names. It is faster to leave these
+ # extract automatically by $AR in one run.
+ $show "(cd $my_xdir && $AR x $my_xabs)"
+ $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $?
+ if ($AR t "$my_xabs" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+ $AR t "$my_xabs" | sort | uniq -cd | while read -r count name
+ do
+ i=1
+ while test "$i" -le "$count"
+ do
+ # Put our $i before any first dot (extension)
+ # Never overwrite any file
+ name_to="$name"
+ while test "X$name_to" = "X$name" || test -f "$my_xdir/$name_to"
+ do
+ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+ done
+ $show "(cd $my_xdir && $AR xN $i $my_xabs '$name' && $mv '$name' '$name_to')"
+ $run eval "(cd \$my_xdir && $AR xN $i \$my_xabs '$name' && $mv '$name' '$name_to')" || exit $?
+ i=`expr $i + 1`
+ done
+ done
+ fi
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2003 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $EXIT_SUCCESS
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $EXIT_SUCCESS
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --features)
+ $echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $echo "enable shared libraries"
+ else
+ $echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $echo "enable static libraries"
+ else
+ $echo "disable static libraries"
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+
+ for arg
+ do
+ case "$arg_mode" in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ * )
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo $srcfile > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $srcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ status=$?
+ if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $srcfile"
+ else
+ command="$base_compile $srcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt $@"
+ compile_command="$nonopt"
+ finalize_command="$nonopt"
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
+ prefer_static_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-mingw* | *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # gcc -m* arguments should be passed to the linker via $compiler_flags
+ # in order to pass architecture information to the linker
+ # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
+ # but this is not reliable with gcc because gcc may use -mfoo to
+ # select a different linker, different libraries, etc, while
+ # -Wl,-mfoo simply passes -mfoo to the linker.
+ -m*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ if test "$with_gcc" = "yes" ; then
+ compiler_flags="$compiler_flags $arg"
+ fi
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ esac
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ if eval $echo \"$deplib\" 2>/dev/null \
+ | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because the file extensions .$libext of this argument makes me believe"
+ $echo "*** that it is just a static archive that I should not used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+
+ # Read the .la file
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if test "$shouldnotlink" = yes && test "$pass" = link ; then
+ $echo
+ if test "$linkmode" = prog; then
+ $echo "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $echo "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $echo "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+ libname=`eval \\$echo \"$libname_spec\"`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+ $echo "** And there doesn't seem to be a static archive available"
+ $echo "** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $echo
+ $echo "*** Warning: This system can not link to static lib archive $lib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $echo "*** But as you try to build a module library, libtool will still create "
+ $echo "*** a static module, that should work as long as the dlopening application"
+ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ convenience="$convenience $dir/$old_library"
+ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$deplibs $path" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$echo "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+ deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+ done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null \
+ | grep " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval $echo \"$potent_lib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $echo
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $echo
+ $echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $echo "*** dependencies of module $libname. Therefore, libtool will create"
+ $echo "*** a static module, that should work as long as the dlopening"
+ $echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $echo "*** The inter-library dependencies that have been dropped here will be"
+ $echo "*** automatically added whenever a program is linked with this library"
+ $echo "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $echo
+ $echo "*** Since this library must not contain undefined symbols,"
+ $echo "*** because either the platform does not support them or"
+ $echo "*** it was explicitly requested with -no-undefined,"
+ $echo "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$save_output-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$save_output-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$save_output-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadale object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $run $rm $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $run eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ esac
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$output.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ else
+ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $mv "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if grep -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ grep -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ cwrappersource=`$echo ${objdir}/lt-${output}.c`
+ cwrapper=`$echo ${output}.exe`
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = "$SHELL";
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = fnqualify(argv[0]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+EOF
+
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha (name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+ size_t size;
+ char *p;
+ char tmp[LT_PATHMAX + 1];
+
+ assert(path != NULL);
+
+ /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha (path[0]) && path[1] == ':')
+ return xstrdup (path);
+#endif
+ if (IS_DIR_SEPARATOR (path[0]))
+ return xstrdup (path);
+
+ /* prepend the current directory */
+ /* doesn't handle '~' */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+ p = XMALLOC(char, size);
+ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+ return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert(str != NULL);
+ assert(pat != NULL);
+
+ len = strlen(str);
+ patlen = strlen(pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variable:
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$echo are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" || \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $mkdir \"\$progdir\"
+ else
+ $rm \"\$progdir/\$file\"
+ fi"
+
+ $echo >> $output "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $echo \"\$relink_command_output\" >&2
+ $rm \"\$progdir/\$file\"
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \$progdir/\$program \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ fi
+ else
+ # The program doesn't exist.
+ \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+ # encoded into archives. This makes 'ar r' malfunction in
+ # this piecewise linking case whenever conflicting object
+ # names appear in distinct ar calls; check, warn and compensate.
+ if (for obj in $save_oldobjs
+ do
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+ $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+ AR_FLAGS=cq
+ fi
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg="$nonopt"
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest="$arg"
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f) prev="-f" ;;
+ -g) prev="-g" ;;
+ -m) prev="-m" ;;
+ -o) prev="-o" ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*) ;;
+
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest="$arg"
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # To insure that "foo" is sourced, and not "foo.exe",
+ # finese the cygwin/MSYS system by explicitly sourcing "foo."
+ # which disallows the automatic-append-.exe behavior.
+ case $build in
+ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+ *) wrapperdot=${wrapper} ;;
+ esac
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . ${wrapperdot} ;;
+ *) . ./${wrapperdot} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # To insure that "foo" is sourced, and not "foo.exe",
+ # finese the cygwin/MSYS system by explicitly sourcing "foo."
+ # which disallows the automatic-append-.exe behavior.
+ case $build in
+ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+ *) wrapperdot=${wrapper} ;;
+ esac
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . ${wrapperdot} ;;
+ *) . ./${wrapperdot} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir="/tmp"
+ test -n "$TMPDIR" && tmpdir="$TMPDIR"
+ tmpdir="$tmpdir/libtool-$$"
+ save_umask=`umask`
+ umask 0077
+ if $mkdir "$tmpdir"; then
+ umask $save_umask
+ else
+ umask $save_umask
+ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+ continue
+ fi
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyways
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "----------------------------------------------------------------------"
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+ done
+ $echo
+ $echo "If you ever happen to want to link against installed libraries"
+ $echo "in a given directory, LIBDIR, you must either use libtool, and"
+ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ $echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $echo " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $echo " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "----------------------------------------------------------------------"
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+ $echo "export $shlibpath_var"
+ fi
+ $echo "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ rm="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if (test -L "$file") >/dev/null 2>&1 \
+ || (test -h "$file") >/dev/null 2>&1 \
+ || test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+ test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+ if test "$mode" = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+-n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+compile)
+ $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+execute)
+ $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+finish)
+ $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+install)
+ $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+uninstall)
+ $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $EXIT_SUCCESS
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/mkinstalldirs b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/mkinstalldirs
new file mode 100755
index 00000000000..4f58503ea4e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/ac-tools/mkinstalldirs
@@ -0,0 +1,40 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
+
+errstatus=0
+
+for file
+do
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+
+ pathcomp=
+ for d
+ do
+ pathcomp="$pathcomp$d"
+ case "$pathcomp" in
+ -* ) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ fi
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/configure b/Build/source/libs/t1lib/t1lib-5.1.2/configure
new file mode 100755
index 00000000000..0a99ce128aa
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/configure
@@ -0,0 +1,26274 @@
+#! /bin/sh
+# From configure.in configure.in 1.00.
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="lib/t1lib/t1base.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LDLIBS PROGEXT CFLAGS LDFLAGS T1LIB_LT_CURRENT T1LIB_LT_REVISION T1LIB_LT_AGE T1LIB_DATA_DIR T1LIB_IDENTIFIER MAIN_TARGET MAIN_HEADER OPTIONS no_x CC T1_AA_TYPE16 T1_AA_TYPE32 T1_AA_TYPE64 T1_INT16 T1_INT32 XSUBDIRS T1LIBX_OBJS T1LIBX_SRCS T1LIBX_HEADERS XOBJS T1LIB_VERSION T1LIB_REVISION T1LIB_PATCHLEVEL T1LIB_VERSIONSTRING SET_MAKE CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+
+X features:
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-shared[=PKGS]
+ build shared libraries [default=yes]
+ --enable-static[=PKGS]
+ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-x use the X Window System
+ --without-athena do not use Athena widgets
+ --with-athena-includes=DIR Athena include files are in DIR
+ --with-athena-libraries=DIR Athena libraries are in DIR
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_headers="$ac_config_headers lib/t1lib/sysconf.h:lib/t1lib/sysconf.h.in"
+
+ac_aux_dir=
+for ac_dir in ac-tools $srcdir/ac-tools; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ac-tools $srcdir/ac-tools" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in ac-tools $srcdir/ac-tools" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+T1LIB_LT_CURRENT=6
+T1LIB_LT_REVISION=2
+T1LIB_LT_AGE=1
+T1LIB_IDENTIFIER="5.1.2"
+
+T1LIB_VERSION=5
+T1LIB_REVISION=1
+T1LIB_PATCHLEVEL=2
+T1LIB_VERSIONSTRING=\""5.1.2"\"
+
+
+
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!). If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ---------------
+# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+ # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+
+
+
+# old names
+
+
+
+
+
+
+
+
+# This is just to silence aclocal about the macro not being used
+
+
+
+
+
+
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+
+
+
+test -z "$LDLIBS" && LDLIBS=-lm
+test -z "$PROGEXT" && PROGEXT=""
+test -z "$CFLAGS"
+test -z "$LDFLAGS"
+
+T1LIB_DATA_DIR="${datadir}/t1lib"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+echo "$as_me:$LINENO: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6
+
+
+# Check whether --with-x or --without-x was given.
+if test "${with_x+set}" = set; then
+ withval="$with_x"
+
+fi;
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+ # The user explicitly disabled X.
+ have_x=disabled
+else
+ if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
+ # Both variables are already set.
+ have_x=yes
+ else
+ if test "${ac_cv_have_x+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -fr conftest.dir
+if mkdir conftest.dir; then
+ cd conftest.dir
+ # Make sure to not put "make" in the Imakefile rules, since we grep it out.
+ cat >Imakefile <<'_ACEOF'
+acfindx:
+ @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
+_ACEOF
+ if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+ eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+ for ac_extension in a so sl; do
+ if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
+ test -f $ac_im_libdir/libX11.$ac_extension; then
+ ac_im_usrlibdir=$ac_im_libdir; break
+ fi
+ done
+ # Screen out bogus values from the imake configuration. They are
+ # bogus both because they are the default anyway, and because
+ # using them would break gcc on systems where it needs fixed includes.
+ case $ac_im_incroot in
+ /usr/include) ;;
+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+ esac
+ case $ac_im_usrlibdir in
+ /usr/lib | /lib) ;;
+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+ esac
+ fi
+ cd ..
+ rm -fr conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+ # Guess where to find include files, by looking for Intrinsic.h.
+ # First, try using that file with no special directory specified.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <X11/Intrinsic.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ for ac_dir in $ac_x_header_dirs; do
+ if test -r "$ac_dir/X11/Intrinsic.h"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+done
+fi
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+ # Check for the libraries.
+ # See if we find them without any special options.
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS=$LIBS
+ LIBS="-lXt $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <X11/Intrinsic.h>
+int
+main ()
+{
+XtMalloc (0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+LIBS=$ac_save_LIBS
+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+ # Don't even attempt the hair of trying to link an X program!
+ for ac_extension in a so sl; do
+ if test -r $ac_dir/libXt.$ac_extension; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
+ # Didn't find X anywhere. Cache the known absence of X.
+ ac_cv_have_x="have_x=no"
+else
+ # Record where we found X for the cache.
+ ac_cv_have_x="have_x=yes \
+ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
+fi
+fi
+
+ fi
+ eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+ echo "$as_me:$LINENO: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6
+ no_x=yes
+else
+ # If each of the values was on the command line, it overrides each guess.
+ test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+ # Update the cache value to reflect the command line values.
+ ac_cv_have_x="have_x=yes \
+ ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
+ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
+fi
+
+if test "$no_x" = yes; then
+ # Not all programs may use this symbol, but it does not hurt to define it.
+
+cat >>confdefs.h <<\_ACEOF
+#define X_DISPLAY_MISSING 1
+_ACEOF
+
+ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+ if test -n "$x_includes"; then
+ X_CFLAGS="$X_CFLAGS -I$x_includes"
+ fi
+
+ # It would also be nice to do this for all -L options, not just this one.
+ if test -n "$x_libraries"; then
+ X_LIBS="$X_LIBS -L$x_libraries"
+ # For Solaris; some versions of Sun CC require a space after -R and
+ # others require no space. Words are not sufficient . . . .
+ case `(uname -sr) 2>/dev/null` in
+ "SunOS 5"*)
+ echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
+echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
+ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_R_nospace=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_R_nospace=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $ac_R_nospace = yes; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ X_LIBS="$X_LIBS -R$x_libraries"
+ else
+ LIBS="$ac_xsave_LIBS -R $x_libraries"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_R_space=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_R_space=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $ac_R_space = yes; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ X_LIBS="$X_LIBS -R $x_libraries"
+ else
+ echo "$as_me:$LINENO: result: neither works" >&5
+echo "${ECHO_T}neither works" >&6
+ fi
+ fi
+ LIBS=$ac_xsave_LIBS
+ esac
+ fi
+
+ # Check for system-dependent libraries X programs must link with.
+ # Do this before checking for the system-independent R6 libraries
+ # (-lICE), since we may need -lsocket or whatever for X linking.
+
+ if test "$ISC" = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+ else
+ # Martyn Johnson says this is needed for Ultrix, if the X
+ # libraries were built with DECnet support. And Karl Berry says
+ # the Alpha needs dnet_stub (dnet does not exist).
+ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char XOpenDisplay ();
+int
+main ()
+{
+XOpenDisplay ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dnet_ntoa ();
+int
+main ()
+{
+dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dnet_dnet_ntoa=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dnet_ntoa ();
+int
+main ()
+{
+dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+ fi
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$ac_xsave_LIBS"
+
+ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+ # to get the SysV transport functions.
+ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+ # needs -lnsl.
+ # The nsl library prevents programs from opening the X display
+ # on Irix 5.2, according to T.E. Dickey.
+ # The functions gethostbyname, getservbyname, and inet_addr are
+ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+ echo "$as_me:$LINENO: checking for gethostbyname" >&5
+echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
+if test "${ac_cv_func_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gethostbyname innocuous_gethostbyname
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char gethostbyname (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gethostbyname
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
+choke me
+#else
+char (*f) () = gethostbyname;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != gethostbyname;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
+
+ if test $ac_cv_func_gethostbyname = no; then
+ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+int
+main ()
+{
+gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_nsl_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
+if test $ac_cv_lib_nsl_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+ if test $ac_cv_lib_nsl_gethostbyname = no; then
+ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+int
+main ()
+{
+gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_bsd_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
+if test $ac_cv_lib_bsd_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+ fi
+ fi
+
+ # lieder@skyler.mavd.honeywell.com says without -lsocket,
+ # socket/setsockopt and other routines are undefined under SCO ODT
+ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary
+ # on later versions), says Simon Leinen: it contains gethostby*
+ # variants that don't use the name server (or something). -lsocket
+ # must be given before -lnsl if both are needed. We assume that
+ # if connect needs -lnsl, so does gethostbyname.
+ echo "$as_me:$LINENO: checking for connect" >&5
+echo $ECHO_N "checking for connect... $ECHO_C" >&6
+if test "${ac_cv_func_connect+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char connect (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char connect ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_connect) || defined (__stub___connect)
+choke me
+#else
+char (*f) () = connect;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != connect;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_connect=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_connect=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+echo "${ECHO_T}$ac_cv_func_connect" >&6
+
+ if test $ac_cv_func_connect = no; then
+ echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
+if test "${ac_cv_lib_socket_connect+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char connect ();
+int
+main ()
+{
+connect ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_socket_connect=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_socket_connect=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
+if test $ac_cv_lib_socket_connect = yes; then
+ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+ fi
+
+ # Guillermo Gomez says -lposix is necessary on A/UX.
+ echo "$as_me:$LINENO: checking for remove" >&5
+echo $ECHO_N "checking for remove... $ECHO_C" >&6
+if test "${ac_cv_func_remove+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define remove innocuous_remove
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char remove (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef remove
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char remove ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_remove) || defined (__stub___remove)
+choke me
+#else
+char (*f) () = remove;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != remove;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_remove=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_remove=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+echo "${ECHO_T}$ac_cv_func_remove" >&6
+
+ if test $ac_cv_func_remove = no; then
+ echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
+if test "${ac_cv_lib_posix_remove+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char remove ();
+int
+main ()
+{
+remove ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_posix_remove=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_posix_remove=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
+if test $ac_cv_lib_posix_remove = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+ fi
+
+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+ echo "$as_me:$LINENO: checking for shmat" >&5
+echo $ECHO_N "checking for shmat... $ECHO_C" >&6
+if test "${ac_cv_func_shmat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shmat innocuous_shmat
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shmat (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shmat
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shmat ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shmat) || defined (__stub___shmat)
+choke me
+#else
+char (*f) () = shmat;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shmat;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shmat=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shmat=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+echo "${ECHO_T}$ac_cv_func_shmat" >&6
+
+ if test $ac_cv_func_shmat = no; then
+ echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shmat ();
+int
+main ()
+{
+shmat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ipc_shmat=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ipc_shmat=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
+if test $ac_cv_lib_ipc_shmat = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+ fi
+ fi
+
+ # Check for libraries that X11R6 Xt/Xaw programs need.
+ ac_save_LDFLAGS=$LDFLAGS
+ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+ # check for ICE first), but we must link in the order -lSM -lICE or
+ # we get undefined symbols. So assume we have SM if we have ICE.
+ # These have to be linked with before -lX11, unlike the other
+ # libraries we check for below, so use a different variable.
+ # John Interrante, Karl Berry
+ echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char IceConnectionNumber ();
+int
+main ()
+{
+IceConnectionNumber ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+ LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+
+athena_includes=
+athena_libraries=
+
+# Check whether --with-athena or --without-athena was given.
+if test "${with_athena+set}" = set; then
+ withval="$with_athena"
+
+fi;
+if test "$with_athena" = "no"
+then
+athena_includes=no
+athena_libraries=no
+fi
+
+# Check whether --with-athena-includes or --without-athena-includes was given.
+if test "${with_athena_includes+set}" = set; then
+ withval="$with_athena_includes"
+ athena_includes="$withval"
+fi;
+
+# Check whether --with-athena-libraries or --without-athena-libraries was given.
+if test "${with_athena_libraries+set}" = set; then
+ withval="$with_athena_libraries"
+ athena_libraries="$withval"
+fi;
+echo "$as_me:$LINENO: checking for Athena" >&5
+echo $ECHO_N "checking for Athena... $ECHO_C" >&6
+#
+#
+# Search the include files.
+#
+if test "$athena_includes" = ""; then
+if test "${ice_cv_athena_includes+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ice_athena_save_LIBS="$LIBS"
+ice_athena_save_CFLAGS="$CFLAGS"
+ice_athena_save_CPPFLAGS="$CPPFLAGS"
+ice_athena_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXaw -lXmu -lXext -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Text.h>
+
+int
+main ()
+{
+int a;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+# X11/Xaw/Text.h is in the standard search path.
+ice_cv_athena_includes=
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+# X11/Xaw/Text.h is not in the standard search path.
+# Locate it and put its directory in `athena_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+ /usr/include/Motif2.0 /usr/include/Motif1.2 /usr/include/Motif1.1 \
+ /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 \
+ /usr/dt/include /usr/openwin/include \
+ /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+ "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+ "${prefix}"/include/* /usr/include/* /usr/local/include/*; do
+if test -f "$dir/X11/Xaw/Text.h"; then
+ice_cv_athena_includes="$dir"
+break
+fi
+done
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+#
+LIBS="$ice_athena_save_LIBS"
+CFLAGS="$ice_athena_save_CFLAGS"
+CPPFLAGS="$ice_athena_save_CPPFLAGS"
+LDFLAGS="$ice_athena_save_LDFLAGS"
+
+fi
+
+athena_includes="$ice_cv_athena_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$athena_libraries" = ""; then
+if test "${ice_cv_athena_libraries+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ice_athena_save_LIBS="$LIBS"
+ice_athena_save_CFLAGS="$CFLAGS"
+ice_athena_save_CPPFLAGS="$CPPFLAGS"
+ice_athena_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXaw -lXmu -lXext -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Text.h>
+
+int
+main ()
+{
+XtToolkitInitialize();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+# libXaw.a is in the standard search path.
+ice_cv_athena_libraries=
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+# libXaw.a is not in the standard search path.
+# Locate it and put its directory in `athena_libraries'
+#
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+ /usr/lib/Motif2.0 /usr/lib/Motif1.2 /usr/lib/Motif1.1 \
+ /usr/lib/X11R6 /usr/lib/X11R5 /usr/lib/X11R4 /usr/lib/X11 \
+ /usr/dt/lib /usr/openwin/lib \
+ /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+ "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+ "${prefix}"/lib/* /usr/lib/* /usr/local/lib/*; do
+if test -d "$dir" && test "`ls $dir/libXaw.* 2> /dev/null`" != ""; then
+ice_cv_athena_libraries="$dir"
+break
+fi
+done
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+#
+LIBS="$ice_athena_save_LIBS"
+CFLAGS="$ice_athena_save_CFLAGS"
+CPPFLAGS="$ice_athena_save_CPPFLAGS"
+LDFLAGS="$ice_athena_save_LDFLAGS"
+
+fi
+
+#
+athena_libraries="$ice_cv_athena_libraries"
+fi
+# Add Athena definitions to X flags
+#
+if test "$athena_includes" != "" && test "$athena_includes" != "$x_includes" && test "$athena_includes" != "no"
+then
+X_CFLAGS="-I$athena_includes $X_CFLAGS"
+fi
+if test "$athena_libraries" != "" && test "$athena_libraries" != "$x_libraries" && test "$athena_libraries" != "no"
+then
+case "$X_LIBS" in
+ *-R\ *) X_LIBS="-L$athena_libraries -R $athena_libraries $X_LIBS";;
+ *-R*) X_LIBS="-L$athena_libraries -R$athena_libraries $X_LIBS";;
+ *) X_LIBS="-L$athena_libraries $X_LIBS";;
+esac
+fi
+#
+#
+athena_libraries_result="$athena_libraries"
+athena_includes_result="$athena_includes"
+test "$athena_libraries_result" = "" &&
+ athena_libraries_result="in default path"
+test "$athena_includes_result" = "" &&
+ athena_includes_result="in default path"
+test "$athena_libraries_result" = "no" &&
+ athena_libraries_result="(none)"
+test "$athena_includes_result" = "no" &&
+ athena_includes_result="(none)"
+echo "$as_me:$LINENO: result: libraries $athena_libraries_result, headers $athena_includes_result" >&5
+echo "${ECHO_T}libraries $athena_libraries_result, headers $athena_includes_result" >&6
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval="$enable_fast_install"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi;
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 5500 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:6735:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* )
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ ;;
+
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ lt_prog_cc_shlib='-belf'
+ ;;
+ esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
+ else
+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+ lt_cv_prog_cc_can_build_shared=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7796: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7800: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic='-Kpic'
+ lt_prog_compiler_static='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8039: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:8043: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8099: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:8103: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = yes; then
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 10284 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 10382 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd12*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC)
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ ia64*|hppa*64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ cxx)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sco*)
+ archive_cmds_need_lc_CXX=no
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.0-5 | solaris2.0-5.*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12579: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:12583: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12639: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12643: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 14000 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 14098 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ test "$enable_shared" = yes && enable_static=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_F77='-Kpic'
+ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:14935: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:14939: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:14995: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:14999: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_F77="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds_F77="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = yes; then
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_F77=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77=' '
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_F77=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_F77=
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17034: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17038: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case "$cc_basename" in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_GCJ='-Kpic'
+ lt_prog_compiler_static_GCJ='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17277: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17281: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17337: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:17341: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_GCJ="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = yes; then
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_GCJ=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ=' '
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_GCJ=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 19522 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 19620 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+
+
+echo "$as_me:$LINENO: checking whether char is unsigned" >&5
+echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6
+if test "${ac_cv_c_char_unsigned+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((char) -1) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_char_unsigned=no
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_char_unsigned=yes
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5
+echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
+if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define __CHAR_UNSIGNED__ 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for char" >&5
+echo $ECHO_N "checking for char... $ECHO_C" >&6
+if test "${ac_cv_type_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((char *) 0)
+ return 0;
+if (sizeof (char))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_char=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_char=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
+echo "${ECHO_T}$ac_cv_type_char" >&6
+
+echo "$as_me:$LINENO: checking size of char" >&5
+echo $ECHO_N "checking size of char... $ECHO_C" >&6
+if test "${ac_cv_sizeof_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_char" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_char=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (char)); }
+unsigned long ulongval () { return (long) (sizeof (char)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (char))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (char))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (char))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_char=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_char=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
+echo "${ECHO_T}$ac_cv_sizeof_char" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR $ac_cv_sizeof_char
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for long long" >&5
+echo $ECHO_N "checking for long long... $ECHO_C" >&6
+if test "${ac_cv_type_long_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long long *) 0)
+ return 0;
+if (sizeof (long long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
+echo "${ECHO_T}$ac_cv_type_long_long" >&6
+
+echo "$as_me:$LINENO: checking size of long long" >&5
+echo $ECHO_N "checking size of long long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long long)); }
+unsigned long ulongval () { return (long) (sizeof (long long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for float" >&5
+echo $ECHO_N "checking for float... $ECHO_C" >&6
+if test "${ac_cv_type_float+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((float *) 0)
+ return 0;
+if (sizeof (float))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_float=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_float=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5
+echo "${ECHO_T}$ac_cv_type_float" >&6
+
+echo "$as_me:$LINENO: checking size of float" >&5
+echo $ECHO_N "checking size of float... $ECHO_C" >&6
+if test "${ac_cv_sizeof_float+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_float" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_float=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (float)); }
+unsigned long ulongval () { return (long) (sizeof (float)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (float))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (float))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (float))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_float=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_float=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5
+echo "${ECHO_T}$ac_cv_sizeof_float" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_FLOAT $ac_cv_sizeof_float
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for double" >&5
+echo $ECHO_N "checking for double... $ECHO_C" >&6
+if test "${ac_cv_type_double+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((double *) 0)
+ return 0;
+if (sizeof (double))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_double=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_double=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5
+echo "${ECHO_T}$ac_cv_type_double" >&6
+
+echo "$as_me:$LINENO: checking size of double" >&5
+echo $ECHO_N "checking size of double... $ECHO_C" >&6
+if test "${ac_cv_sizeof_double+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_double" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_double=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (double)); }
+unsigned long ulongval () { return (long) (sizeof (double)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (double))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (double))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (double))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_double=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_double=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
+echo "${ECHO_T}$ac_cv_sizeof_double" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for long double" >&5
+echo $ECHO_N "checking for long double... $ECHO_C" >&6
+if test "${ac_cv_type_long_double+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long double *) 0)
+ return 0;
+if (sizeof (long double))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long_double=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long_double=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
+echo "${ECHO_T}$ac_cv_type_long_double" >&6
+
+echo "$as_me:$LINENO: checking size of long double" >&5
+echo $ECHO_N "checking size of long double... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long_double+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long_double" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_double=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long double)); }
+unsigned long ulongval () { return (long) (sizeof (long double)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long double))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long double))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long double))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long_double=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long_double=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for void *" >&5
+echo $ECHO_N "checking for void *... $ECHO_C" >&6
+if test "${ac_cv_type_void_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((void * *) 0)
+ return 0;
+if (sizeof (void *))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_void_p=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_void_p=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_void_p" >&5
+echo "${ECHO_T}$ac_cv_type_void_p" >&6
+
+echo "$as_me:$LINENO: checking size of void *" >&5
+echo $ECHO_N "checking size of void *... $ECHO_C" >&6
+if test "${ac_cv_sizeof_void_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_void_p" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (void *))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_void_p=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (void *), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (void *)); }
+unsigned long ulongval () { return (long) (sizeof (void *)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (void *))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (void *))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (void *))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_void_p=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (void *), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_void_p=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
+echo "${ECHO_T}$ac_cv_sizeof_void_p" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+
+
+
+if test "x${GCC}" = "xyes"
+then
+ CFLAGS="$CFLAGS"
+ echo "$as_me:$LINENO: checking \"for gcc strength-reduce bug\"" >&5
+echo $ECHO_N "checking \"for gcc strength-reduce bug\"... $ECHO_C" >&6
+if test "${ac_cv_c_gcc_strength_bug+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_c_gcc_strength_bug="yes"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int main(void) {
+ static int Array[3];
+ unsigned int B = 3;
+ int i;
+ for(i=0; i<B; i++) Array[i] = i - 3;
+ exit( Array[1] != -2 );
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_gcc_strength_bug="no"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_gcc_strength_bug="yes"
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_gcc_strength_bug" >&5
+echo "${ECHO_T}$ac_cv_c_gcc_strength_bug" >&6
+ if test "$ac_cv_c_gcc_strength_bug" = "yes"
+ then
+ CFLAGS="$CFLAGS -fno-strength-reduce"
+ fi
+fi
+
+
+echo "$as_me:$LINENO: checking \"whether external symbols need an underscore prefix\"" >&5
+echo $ECHO_N "checking \"whether external symbols need an underscore prefix\"... $ECHO_C" >&6
+if test "${ac_cv_c_extern_prefix+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ saved_libs=$LIBS
+LIBS="conftest_asm.s $LIBS"
+cat > conftest_asm.s <<EOF
+ .globl _ac_test
+_ac_test:
+ .long 0
+EOF
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+extern int ac_test;
+int
+main ()
+{
+if (ac_test) return 1
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_extern_prefix="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_extern_prefix="no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$saved_libs
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_extern_prefix" >&5
+echo "${ECHO_T}$ac_cv_c_extern_prefix" >&6
+if test "$ac_cv_c_extern_prefix" = "yes"
+then
+ cat >>confdefs.h <<\_ACEOF
+#define NEED_UNDERSCORE_PREFIX 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking \"which ANSI integer type is 16 bit\"" >&5
+echo $ECHO_N "checking \"which ANSI integer type is 16 bit\"... $ECHO_C" >&6
+if test "${ac_16bit_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_16bit_type=
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int main(void) {
+ if (sizeof(short)==2)
+ return(0);
+ else if (sizeof(int)==2)
+ return(1);
+ else
+ return(2);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_16bit_type="short"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_16bit_type="int"
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_16bit_type" >&5
+echo "${ECHO_T}$ac_16bit_type" >&6
+if test "$ac_16bit_type" = "short"
+then
+ T1_AA_TYPE16="-DT1_AA_TYPE16=short"
+ T1_INT16="short"
+else
+ T1_AA_TYPE16="-DT1_AA_TYPE16=int"
+ T1_INT16="int"
+fi
+
+
+
+echo "$as_me:$LINENO: checking \"which ANSI integer type is 32 bit\"" >&5
+echo $ECHO_N "checking \"which ANSI integer type is 32 bit\"... $ECHO_C" >&6
+if test "${ac_32bit_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_32bit_type=
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int main(void) {
+ if (sizeof(int)==4)
+ return(0);
+ else if (sizeof(long)==4)
+ return(1);
+ else
+ return(2);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_32bit_type="int"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_32bit_type="long"
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_32bit_type" >&5
+echo "${ECHO_T}$ac_32bit_type" >&6
+if test "$ac_32bit_type" = "int"
+then
+ T1_AA_TYPE32="-DT1_AA_TYPE32=int"
+ T1_INT32="int"
+else
+ T1_AA_TYPE32="-DT1_AA_TYPE32=long"
+ T1_INT32="long"
+fi
+
+
+
+echo "$as_me:$LINENO: checking \"which ANSI integer type is 64 bit\"" >&5
+echo $ECHO_N "checking \"which ANSI integer type is 64 bit\"... $ECHO_C" >&6
+if test "${ac_64bit_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int main(void) {
+ if (sizeof(long)==8)
+ return(0);
+ else
+ return(1);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_64bit_type="long"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_64bit_type="<none>"
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_64bit_type" >&5
+echo "${ECHO_T}$ac_64bit_type" >&6
+if test "$ac_64bit_type" = "long"
+then
+ T1_AA_TYPE64="-DT1_AA_TYPE64=long"
+else
+ T1_AA_TYPE64=
+fi
+
+
+CFLAGS="${CFLAGS} -DT1LIB_IDENT=\"\\\"${T1LIB_IDENTIFIER}\\\"\" -DGLOBAL_CONFIG_DIR=\"\\\"${T1LIB_DATA_DIR}\\\"\""
+
+
+echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
+echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
+if test "${ac_cv_header_stat_broken+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined(S_ISBLK) && defined(S_IFDIR)
+# if S_ISBLK (S_IFDIR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISBLK) && defined(S_IFCHR)
+# if S_ISBLK (S_IFCHR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISLNK) && defined(S_IFREG)
+# if S_ISLNK (S_IFREG)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISSOCK) && defined(S_IFREG)
+# if S_ISSOCK (S_IFREG)
+You lose.
+# endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "You lose" >/dev/null 2>&1; then
+ ac_cv_header_stat_broken=yes
+else
+ ac_cv_header_stat_broken=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
+echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
+if test $ac_cv_header_stat_broken = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_MACROS_BROKEN 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_const=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+ return 0;
+if (sizeof (size_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_size_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned
+_ACEOF
+
+fi
+
+
+
+if test "$no_x" = "yes"
+then
+MAIN_TARGET="libt1.la"
+MAIN_HEADER="t1lib.h"
+XSUBDIRS=""
+T1LIBX_OBJS=""
+T1LIBX_SRCS=""
+T1LIBX_HEADERS=""
+XOBJS=""
+else
+MAIN_TARGET="libt1.la libt1x.la"
+MAIN_HEADER="t1lib.h t1libx.h"
+XSUBDIRS="xglyph"
+T1LIBX_OBJS="t1lib/t1x11.lo"
+T1LIBX_SRCS="t1lib/t1x11.c"
+T1LIBX_HEADERS="t1lib/t1x11.h t1lib/t1libx.h"
+XOBJS="t1x11.lo"
+fi
+
+
+
+if test "$no_x" = "yes"
+then
+CFLAGS="${CFLAGS} -DT1LIB_NO_X11_SUPPORT"
+MAKEFILES="Makefile \
+ lib/Makefile \
+ lib/type1/Makefile \
+ lib/t1lib/Makefile \
+ type1afm/Makefile \
+ examples/Makefile \
+ doc/Makefile"
+else
+MAKEFILES="Makefile \
+ lib/Makefile \
+ lib/type1/Makefile \
+ lib/t1lib/Makefile \
+ xglyph/Makefile \
+ type1afm/Makefile \
+ examples/Makefile \
+ doc/Makefile"
+fi
+
+
+ ac_config_files="$ac_config_files $MAKEFILES lib/t1lib/t1lib.h"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "$MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $MAKEFILES" ;;
+ "lib/t1lib/t1lib.h" ) CONFIG_FILES="$CONFIG_FILES lib/t1lib/t1lib.h" ;;
+ "lib/t1lib/sysconf.h" ) CONFIG_HEADERS="$CONFIG_HEADERS lib/t1lib/sysconf.h:lib/t1lib/sysconf.h.in" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@LDLIBS@,$LDLIBS,;t t
+s,@PROGEXT@,$PROGEXT,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@T1LIB_LT_CURRENT@,$T1LIB_LT_CURRENT,;t t
+s,@T1LIB_LT_REVISION@,$T1LIB_LT_REVISION,;t t
+s,@T1LIB_LT_AGE@,$T1LIB_LT_AGE,;t t
+s,@T1LIB_DATA_DIR@,$T1LIB_DATA_DIR,;t t
+s,@T1LIB_IDENTIFIER@,$T1LIB_IDENTIFIER,;t t
+s,@MAIN_TARGET@,$MAIN_TARGET,;t t
+s,@MAIN_HEADER@,$MAIN_HEADER,;t t
+s,@OPTIONS@,$OPTIONS,;t t
+s,@no_x@,$no_x,;t t
+s,@CC@,$CC,;t t
+s,@T1_AA_TYPE16@,$T1_AA_TYPE16,;t t
+s,@T1_AA_TYPE32@,$T1_AA_TYPE32,;t t
+s,@T1_AA_TYPE64@,$T1_AA_TYPE64,;t t
+s,@T1_INT16@,$T1_INT16,;t t
+s,@T1_INT32@,$T1_INT32,;t t
+s,@XSUBDIRS@,$XSUBDIRS,;t t
+s,@T1LIBX_OBJS@,$T1LIBX_OBJS,;t t
+s,@T1LIBX_SRCS@,$T1LIBX_SRCS,;t t
+s,@T1LIBX_HEADERS@,$T1LIBX_HEADERS,;t t
+s,@XOBJS@,$XOBJS,;t t
+s,@T1LIB_VERSION@,$T1LIB_VERSION,;t t
+s,@T1LIB_REVISION@,$T1LIB_REVISION,;t t
+s,@T1LIB_PATCHLEVEL@,$T1LIB_PATCHLEVEL,;t t
+s,@T1LIB_VERSIONSTRING@,$T1LIB_VERSIONSTRING,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@X_CFLAGS@,$X_CFLAGS,;t t
+s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
+s,@X_LIBS@,$X_LIBS,;t t
+s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+
+
+echo
+echo "Configure finished!"
+echo " Do: 'make' to compile the t1lib-package."
+echo " Do: 'make without_doc' to compile if you do not have LaTeX."
+echo " Do: 'make install' to install the t1lib-package."
+echo ""
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/configure.com b/Build/source/libs/t1lib/t1lib-5.1.2/configure.com
new file mode 100755
index 00000000000..f7bf4ec16d2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/configure.com
@@ -0,0 +1,890 @@
+$ goto start
+
+This command file writes the command files make.com in this directory, make.com
+and sysconf.h in [.lib.t1lib], make.com in [.lib.type1], and make.com in
+[.xglyph]. Executing the make.com in this directory will use the other
+make.com files to compile the C files and put them in the T1 object library in
+this directory, and compile and link xglyph.
+
+Xglyph requires the xaw and xmu libraries; I used the libraries that came with
+ghostview. This command file looks for a required header file in
+X11_ROOT:[XAW]. If it does not find it looks for an X11 directory tree
+parallel to this tree. If it does not find it there, it creates the command
+file, but you have to edit it to tell it where the files and libraries are
+before you can execute it. I linked ghostview using the static version of xmu
+and xaw, so I link to object libraries instead of sharable images. I renamed
+the xaw3d directory to xaw in the x11 tree of ghostview so I did not have to
+change xglyph.c. To run xglyph on V6.* of VMS, you need to define T1LIB_CONFIG
+to be the T1LIB.CONFIG file in the xglyph directory; it will also not show the
+timing information on V6.*.
+
+I have compiled the library and run xglyph on VMS V6.2, both VAX and Alpha; I
+used DECC V5.6. I use IEEE floating on Alpha and G floating on VAX.
+
+John Hasstedt
+Physics Department
+State University of New York at Stony Brook
+John.Hasstedt@sunysb.edu
+
+Nov-1999
+
+- Extended the functionality to check for xaw/xmu also in the X11 path (which
+ is the most Unix compatible way to store them ;-).
+- Added tests for shareable version of the Xaw/Xmu libraries, using the
+ shareable images if the appropriate logicals are defined. If not the object
+ libraries are used as before.
+- Added support for type1afm build
+- Adapted to t1lib 0.9.2
+
+Dec-1999
+
+- Added support for absolute pathnames for font files under OpenVMS
+
+Aug-2000
+
+- First cut of an incremental build
+
+Jul-2002
+
+- Create a shareable image on OpenVMS Alpha
+
+Feb-2003
+
+- Add missing initialization for xaw_root
+- Clarify description of Xglyph as >>test<< application
+- Improved method to build options file for shareable image
+ (Thanks to Hartmut Becker Hartmut.Becker@compaq.com)
+
+Feb-2004
+
+- Add DECC$NO_ROOTED_SEARCH_LISTS definition to get Xglyph compile ok
+ on later versions of Compaq C
+
+Nov-2004
+- Save and restore user environment instead of just overwriting
+- Build example applications
+- Add options processing
+- Polish shareable image creation
+- Start work on version perserving case
+
+Dec-2004
+- Moving defines into sysconf.h, avoiding quote madness
+
+Martin Zinser
+zinser@zinser.no-ip.info
+
+$start:
+$ ! If a user has a symbol cc or something else, don't use it.
+$ set symbol/scope=(nolocal,noglobal)
+$ say = "write sys$output"
+$ !
+$ say "Getting the version number"
+$ t1lib_identifier = "?.?"
+$ open/read in configure.
+$loop:
+$ read/end=done in rec
+$ if (f$element(0,"=",rec) .nes. "T1LIB_IDENTIFIER") then goto loop
+$ t1lib_identifier = f$element(1,"=",rec)
+$done:
+$ close in
+$ !
+$ say "Creating make.com"
+$ create make.com
+$ open/append out make.com
+$ copy sys$input: out
+$ deck
+$ true = 1
+$ false = 0
+$ tmpnam = "temp_" + f$getjpi("","pid")
+$ tt = tmpnam + ".txt"
+$ tc = tmpnam + ".c"
+$ th = tmpnam + ".h"
+$ its_decc = false
+$ its_vaxc = false
+$ its_gnuc = false
+$ s_case = False
+$!
+$! Setup variables holding "config" information
+$!
+$ ccopt = ""
+$ lopts = ""
+$!
+$! Which command parameters were given
+$!
+$ gosub check_opts
+$!
+$eod
+$ if (f$getsyi("ARCH_NAME") .eqs. "VAX")
+$ then
+$ float = "g_float"
+$ else
+$ float = "ieee_float"
+$ endif
+$ write out "$ cflags = ""/prefix=all/float=''float'"" + ccopt"
+$ copy sys$input: out
+$ deck
+$!
+$! Marker for futher work with name=as_is compilation to work around
+$! fact that DECW shareable does not contain mixed case entry points
+$! TBD: Compile t1x11 and xglyph along the lines of [--]motif_name.h+'source'
+$! Make sure to get the include path to the "jackets" right
+$!
+$ if s_case
+$ then
+$ create motif_name.h
+$ open/append outh motif_name.h
+$ copy sys$input: outh
+$ deck/dollar="$ eoh"
+#ifdef __cplusplus
+#define VMS_BEGIN_C_PLUS_PLUS extern "C" {
+#define VMS_END_C_PLUS_PLUS }
+#else
+#define VMS_BEGIN_C_PLUS_PLUS
+#define VMS_END_C_PLUS_PLUS
+#endif
+
+#include "motif_redefines.h"
+$ eoh
+$ close outh
+$ endif
+$ set default [.lib.t1lib]
+$ @make.com
+$ write sys$output "Compiling in [.lib.type1]"
+$ set default [-.type1]
+$ @make.com
+$ set default [--]
+$ write sys$output "Creating t1.olb"
+$ library/create t1.olb [.lib.t1lib]*.obj,[.lib.type1]*.obj
+$ write sys$output "Creating xglyph.exe"
+$ set default [.xglyph]
+$ @make.com
+$ set default [-]
+$ write sys$output "Creating type1afm.exe"
+$ set default [.type1afm]
+$ @make.com
+$ set default [-]
+$ write sys$output "Creating example applications"
+$ set default [.examples]
+$ @make.com
+$ set default [-]
+$!
+$! Establish the Compiling Environment
+$!
+$ Cpu_Model = F$GetSYI("HW_MODEL")
+$ open/write optf t1.opt
+$T1_L:
+$ file = f$search("[.lib.t1lib]*.obj")
+$ if file .eqs. "" then goto TY_L
+$ write optf file
+$ goto t1_l
+$TY_L:
+$ file = f$search("[.lib.type1]*.obj")
+$ if file .eqs. "" then goto end_opt
+$ write optf file
+$ goto ty_l
+$END_OPT:
+$ close/nolog optf
+$!
+$! Alpha gets a shareable image
+$!
+$ If Cpu_Model .gt. 1024
+$ Then
+$ write sys$output "Creating t1shr.exe"
+$ call anal_obj_axp t1.opt _link.opt
+$ open/append optf t1.opt
+$ if s_case then write optf "case_sensitive=YES"
+$ write optf "sys$share:decw$xlibshr.exe/share"
+$ close optf
+$ LINK_/NODEB/SHARE=t1shr.exe t1.opt/opt,_link.opt/opt
+$ endif
+$!
+$ dele/noconf *.opt;*
+$ write sys$output "Done"
+$ exit
+$!
+$!------------------------------------------------------------------------------
+$!
+$! Analyze Object files for OpenVMS AXP to extract Procedure and Data
+$! information to build a symbol vector for a shareable image
+$! All the "brains" of this logic was suggested by Hartmut Becker
+$! (Hartmut.Becker@compaq.com). All the bugs were introduced by me
+$! (zinser@zinser.no-ip.info), so if you do have problem reports please do not
+$! bother Hartmut/HP, but get in touch with me
+$!
+$! Version history
+$! 0.01 20040406 Skip over shareable images in option file
+$! 0.02 20041109 Fix option file for shareable images with case_sensitive=YES
+$!
+$ ANAL_OBJ_AXP: Subroutine
+$ V = 'F$Verify(0)
+$ SAY := "WRITE_ SYS$OUTPUT"
+$
+$ IF F$SEARCH("''P1'") .EQS. ""
+$ THEN
+$ SAY "ANAL_OBJ_AXP-E-NOSUCHFILE: Error, inputfile ''p1' not available"
+$ goto exit_aa
+$ ENDIF
+$ IF "''P2'" .EQS. ""
+$ THEN
+$ SAY "ANAL_OBJ_AXP: Error, no output file provided"
+$ goto exit_aa
+$ ENDIF
+$
+$ open/read in 'p1
+$ create a.tmp
+$ open/append atmp a.tmp
+$ loop:
+$ read/end=end_loop in line
+$ if f$locate("/SHARE",f$edit(line,"upcase")) .lt. f$length(line)
+$ then
+$ write sys$output "ANAL_SKP_SHR-i-skipshare, ''line'"
+$ goto loop
+$ endif
+$ f= f$search(line)
+$ if f .eqs. ""
+$ then
+$ write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'"
+$ goto loop
+$ endif
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ anal/obj/gsd 'f /out=x.tmp
+$ open/read xtmp x.tmp
+$ XLOOP:
+$ read/end=end_xloop xtmp xline
+$ xline = f$edit(xline,"compress")
+$ write atmp xline
+$ goto xloop
+$ END_XLOOP:
+$ close xtmp
+$ goto loop
+$ end_loop:
+$ close in
+$ close atmp
+$ if f$search("a.tmp") .eqs. "" -
+ then $ exit
+$ ! all global definitions
+$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp
+$ ! all procedures
+$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp
+$ search c.tmp "symbol:"/out=d.tmp
+$ define/user sys$output nl:
+$ edito/edt/command=sys$input d.tmp
+sub/symbol: "/symbol_vector=(/whole
+sub/"/=PROCEDURE)/whole
+exit
+$ ! all data
+$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp
+$ search e.tmp "symbol:"/out=f.tmp
+$ define/user sys$output nl:
+$ edito/edt/command=sys$input f.tmp
+sub/symbol: "/symbol_vector=(/whole
+sub/"/=DATA)/whole
+exit
+$ sort/nodupl d.tmp,f.tmp 'p2'
+$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;*
+$ if f$search("x.tmp") .nes. "" -
+ then $ delete x.tmp;*
+$!
+$ EXIT_AA:
+$ if V then set verify
+$ endsubroutine
+$!------------------------------------------------------------------------------
+$!
+$! Check command line options and set symbols accordingly
+$!
+$ CHECK_OPTS:
+$ i = 1
+$ OPT_LOOP:
+$ if i .lt. 9
+$ then
+$ cparm = f$edit(p'i',"upcase")
+$ if cparm .eqs. "DEBUG"
+$ then
+$ ccopt = ccopt + "/noopt/deb"
+$ lopts = lopts + "/deb"
+$ endif
+$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm)
+$ then
+$ start = f$locate("=",cparm) + 1
+$ len = f$length(cparm) - start
+$ ccopt = ccopt + f$extract(start,len,cparm)
+$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
+ then s_case = true
+$ endif
+$ if cparm .eqs. "LINK" then linkonly = true
+$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm)
+$ then
+$ start = f$locate("=",cparm) + 1
+$ len = f$length(cparm) - start
+$ lopts = lopts + f$extract(start,len,cparm)
+$ endif
+$ if f$locate("CC=",cparm) .lt. f$length(cparm)
+$ then
+$ start = f$locate("=",cparm) + 1
+$ len = f$length(cparm) - start
+$ cc_com = f$extract(start,len,cparm)
+ if (cc_com .nes. "DECC") .and. -
+ (cc_com .nes. "VAXC") .and. -
+ (cc_com .nes. "GNUC")
+$ then
+$ write sys$output "Unsupported compiler choice ''cc_com' ignored"
+$ write sys$output "Use DECC, VAXC, or GNUC instead"
+$ else
+$ if cc_com .eqs. "DECC" then its_decc = true
+$ if cc_com .eqs. "VAXC" then its_vaxc = true
+$ if cc_com .eqs. "GNUC" then its_gnuc = true
+$ endif
+$ endif
+$ i = i + 1
+$ goto opt_loop
+$ endif
+$ return
+$!------------------------------------------------------------------------------
+$ eod
+$ close out
+$ !
+$ say "Creating [.lib.t1lib]sysconf.h"
+$ cc sys$input:'ccopt'/float='float'/object=test.obj
+#include <stdlib.h>
+#include <stdio.h>
+main()
+{
+ FILE *f=fopen("[.lib.t1lib]sysconf.h", "w");
+ if (!f) exit(EXIT_FAILURE);
+ fprintf(f, "#define SIZEOF_CHAR %d\n", sizeof(char));
+ fprintf(f, "#define SIZEOF_SHORT %d\n", sizeof(short));
+ fprintf(f, "#define SIZEOF_INT %d\n", sizeof(int));
+ fprintf(f, "#define SIZEOF_LONG %d\n", sizeof(long));
+#ifdef __VAX
+ fprintf(f, "#define SIZEOF_LONG_LONG %d\n", sizeof(long));
+#else
+ fprintf(f, "#define SIZEOF_LONG_LONG %d\n", sizeof(long long));
+#endif
+ fprintf(f, "#define SIZEOF_FLOAT %d\n", sizeof(float));
+ fprintf(f, "#define SIZEOF_DOUBLE %d\n", sizeof(double));
+#ifdef __VAX
+ fprintf(f, "#define SIZEOF_LONG_DOUBLE %d\n", sizeof(double));
+#else
+ fprintf(f, "#define SIZEOF_LONG_DOUBLE %d\n", sizeof(long double));
+#endif
+ fprintf(f, "#define SIZEOF_VOID_P %d\n", sizeof(void *));
+ exit(EXIT_SUCCESS);
+}
+$ link test
+$ run test
+$ open/append sysconf [.lib.t1lib]sysconf.h
+$ write sysconf ""
+$ write sysconf "#define T1_AA_TYPE16 short"
+$ write sysconf "#define T1_AA_TYPE32 int"
+$ write sysconf "#define T1_INT16 short"
+$ write sysconf "#define T1_INT32 int"
+$ write sysconf ""
+$ write sysconf "#define T1LIB_IDENT ", t1lib_identifier
+$ write sysconf ""
+$ write sysconf "#define GLOBAL_CONFIG_DIR ""T1_FONT_DIR"""
+$ close sysconf
+$ delete test.obj;*,test.exe;*
+$ !
+$ say "Creating [.lib.t1lib]make.com"
+$ copy sys$input: [.lib.t1lib]make.com
+$ deck
+$ call make parseafm.obj "cc ''cflags' parseafm" -
+ parseafm.c
+$ call make t1aaset.obj "cc ''cflags' t1aaset" -
+ t1aaset.c
+$ call make t1afmtool.obj "cc ''cflags' t1afmtool" -
+ t1afmtool.c
+$ call make t1base.obj "cc ''cflags' t1base" -
+ t1base.c
+$ call make t1delete.obj "cc ''cflags' t1delete" -
+ t1delete.c
+$ call make t1enc.obj "cc ''cflags' t1enc" -
+ t1enc.c
+$ call make t1env.obj "cc ''cflags' t1env" -
+ t1env.c
+$ call make t1finfo.obj "cc ''cflags' t1finfo" -
+ t1finfo.c
+$ call make t1load.obj "cc ''cflags' t1load" -
+ t1load.c
+$ call make t1outline.obj "cc ''cflags' t1outline" -
+ t1outline.c
+$ call make t1set.obj "cc ''cflags' t1set" -
+ t1set.c
+$ call make t1subset.obj "cc ''cflags' t1subset" -
+ t1subset.c
+$ call make t1trans.obj "cc ''cflags' t1trans" -
+ t1trans.c
+$ call make t1x11.obj "cc ''cflags' t1x11" -
+ t1x11.c
+$ exit
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 - P8 What it depends on
+$
+$ If F$Search(P1) .Eqs. "" Then Goto Makeit
+$ Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(0)
+$ write sys$output P2
+$ 'P2
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE
+$eod
+$ !
+$ say "Creating [.lib.type1]make.com"
+$ create [.lib.type1]make.com
+$ deck
+$!
+$! Just some general variables
+$!
+$ true = 1
+$ false = 0
+$ tmpnam = "temp_" + f$getjpi("","pid")
+$ tc = tmpnam + ".c"
+$!
+$ gosub check_function
+$!
+$ call make arith.obj "cc ''cflags' arith" -
+ arith.c
+$ call make curves.obj "cc ''cflags' curves" -
+ curves.c
+$ call make fontfcn.obj "cc ''cflags' fontfcn" -
+ fontfcn.c
+$ call make hints.obj "cc ''cflags' hints" -
+ hints.c
+$ call make lines.obj "cc ''cflags' lines" -
+ lines.c
+$ call make objects.obj "cc ''cflags' objects" -
+ objects.c
+$ call make paths.obj "cc ''cflags' paths" -
+ paths.c
+$ call make regions.obj "cc ''cflags' regions" -
+ regions.c
+$ call make scanfont.obj "cc ''cflags' scanfont" -
+ scanfont.c
+$ call make spaces.obj "cc ''cflags' spaces" -
+ spaces.c
+$ call make t1io.obj "cc ''cflags' t1io" -
+ t1io.c
+$ call make t1snap.obj "cc ''cflags' t1snap" -
+ t1snap.c
+$ call make t1stub.obj "cc ''cflags' t1stub" -
+ t1stub.c
+$ call make token.obj "cc ''cflags' token" -
+ token.c
+$ call make type1.obj "cc ''cflags' type1" -
+ type1.c
+$ call make util.obj "cc ''cflags' util" -
+ util.c
+$ exit
+$!
+$!------------------------------------------------------------------------------
+$!
+$! Check if a specific function needs to be implemented
+$!
+$CHECK_FUNCTION:
+$!
+$! bstring --> memset ...
+$!
+$ func = "bstring"
+$ hfile = ""
+$ open/write tmpc 'tc
+$ write tmpc "#include <string.h>"
+$ write tmpc "#include <stdlib.h>"
+$ write tmpc "int main(){"
+$ write tmpc " memset(NULL,1,1);"
+$ write tmpc "}"
+$ close tmpc
+$ gosub cc_prop_check
+$!
+$ return
+$!
+$!------------------------------------------------------------------------------
+$!
+$! Check for properties of C/C++ compiler
+$!
+$CC_PROP_CHECK:
+$ cc_prop = false
+$ set message/nofac/noident/nosever/notext
+$ on error then continue
+$ cc 'all_cflags' 'tmpnam'
+$ if $status then cc_prop = true
+$ set message/fac/ident/sever/text
+$ delete/nolog 'tmpnam'.*;*
+$ if cc_prop
+$ then
+$ if (func .nes. "")
+$ then
+$ write sys$output "Function ''func' implemented in C RTL"
+$ else
+$ write sys$output "h-file ''hfile' part of C RTL"
+$ endif
+$ else
+$ if (func .nes. "")
+$ then
+$ CALL MAKE 'func'.OBJ "CC ''cflags' ''func'.C" 'func'.C
+$ endif
+$ if (hfile .nes. "") then copy 'hfile'.h_in 'hfile'.h
+$ endif
+$ return
+$!
+$!------------------------------------------------------------------------------
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 - P8 What it depends on
+$
+$ If F$Search(P1) .Eqs. "" Then Goto Makeit
+$ Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(0)
+$ write sys$output P2
+$ 'P2
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE
+$eod
+$ !
+$ say "Creating [.xglyph]make.com"
+$ xaw_root = ""
+$ check_xaw = "X11_ROOT,X11"
+$ check_rel = f$parse("[-.x11]") - "].;"
+$ if (check_rel .nes. "")
+$ then
+$ define rel_loc "''check_rel'.]"
+$ check_xaw = check_xaw + ",rel_loc"
+$ endif
+$ i = 0
+$SEARCH_XAW:
+$ dir = f$element(i,",",check_xaw)
+$ if (dir.nes.",")
+$ then
+$ if ( f$search("''dir':[xaw]label.h") .nes. "" ) then xaw_root = dir
+$ i = i + 1
+$ goto search_xaw
+$ endif
+$ create [.xglyph]make.com
+$ open/append out [.xglyph]make.com
+$ if (xaw_root .eqs. "")
+$ then
+$ say "I could not locate the xaw and xmu files. In case you want"
+$ say "to build the Xglyph test application you need to edit"
+$ say "[.xglyph]make.com to add appropriate paths."
+$ write out "$ type/nopage sys$input"
+$ write out "In case you want to build the Xglyph test application you"
+$ write out "need to edit this file to delete the exit command and define"
+$ write out "the dir symbol for the location of the xmu and xaw libraries."
+$ write out "$ exit"
+$ write out "$ xaw_root = ""<disk>:[dir.X11"""
+$ else
+$ write out "$ xaw_root = ""''xaw_root'"""
+$ endif
+$ copy sys$input: out
+$ deck
+$ if (f$getsyi("ARCH_NAME") .eqs. "VAX")
+$ then
+$ olb_dir = "exe"
+$ else
+$ olb_dir = "exe_alpha"
+$ endif
+$ save_x11_dir = f$trnlnm("x11_directory")
+$ save_xmu_dir = f$trnlnm("xmu_directory")
+$ save_xaw_dir = f$trnlnm("xaw_directory")
+$ save_olb_dir = f$trnlnm("olb_directory")
+$ save_dnrsl = f$trnlnm("decc$no_rooted_search_lists")
+$ if (xaw_root.nes."X11") then define x11 'xaw_root',decw$include:
+$ define x11_directory decw$include:
+$ define xmu_directory 'xaw_root':[xmu]
+$ define xaw_directory 'xaw_root':[xaw]
+$ define olb_directory 'xaw_root':['olb_dir']
+$ define DECC$NO_ROOTED_SEARCH_LISTS 1
+$ open/write optf xglyph.opt
+$ write optf "xglyph.obj"
+$ write optf "[-]t1.olb/library"
+$ write optf "sys$share:decc$shr.exe/share"
+$ write optf "sys$share:decw$xextlibshr/share"
+$ write optf "sys$share:decw$xlibshr/share"
+$ write optf "sys$share:decw$xtlibshrr5/share"
+$ if (f$trnlnm("xaw3dlibshr").nes."")
+$ then
+$ write optf "xaw3dlibshr/share"
+$ else
+$ write optf "olb_directory:xaw3dlib/library"
+$ endif
+$ if (f$trnlnm("xmulibshr").nes."")
+$ then
+$ write optf "xmulibshr/share"
+$ else
+$ write optf "olb_directory:xmulib/library"
+$ endif
+$ close optf
+$ call make xglyph.obj "cc ''cflags' xglyph.c" -
+ xglyph.c
+$ call make xglyph.obj "link xglyph.opt/option" -
+ xglyph.obj [-]t1.olb
+$ if (save_x11_dir .nes. "")
+$ then
+$ define x11_directory 'save_x11_dir'
+$ else
+$ deassign x11_directory
+$ endif
+$ if (save_xmu_dir .nes. "")
+$ then
+$ define xmu_directory 'save_xmu_dir'
+$ else
+$ deassign xmu_directory
+$ endif
+$ if (save_xaw_dir .nes. "")
+$ then
+$ define xaw_directory 'save_xaw_dir'
+$ else
+$ deassign xaw_directory
+$ endif
+$ if (save_olb_dir .nes. "")
+$ then
+$ define olb_directory 'save_olb_dir'
+$ else
+$ deassign olb_directory
+$ endif
+$ if (save_dnrsl .nes. "")
+$ then
+$ define DECC$NO_ROOTED_SEARCH_LISTS 'save_dnrsl'
+$ else
+$ deassign DECC$NO_ROOTED_SEARCH_LISTS
+$ endif
+$ exit
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 - P8 What it depends on
+$
+$ If F$Search(P1) .Eqs. "" Then Goto Makeit
+$ Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(0)
+$ write sys$output P2
+$ 'P2
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE
+$eod
+$ close out
+$ say "Creating [.type1afm]make.com"
+$ create [.type1afm]make.com
+$ open/append out [.type1afm]make.com
+$ copy sys$input: out
+$ deck
+$ call make type1afm.obj "cc ''cflags' type1afm.c" -
+ type1afm.c
+$ call make type1afm.exe "link type1afm,[-]t1/library" -
+ type1afm.obj [-]t1.olb
+$ exit
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 - P8 What it depends on
+$
+$ If F$Search(P1) .Eqs. "" Then Goto Makeit
+$ Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(0)
+$ write sys$output P2
+$ 'P2
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE
+$eod
+$ close out
+$ say "Creating [.examples]make.com"
+$ create [.examples]make.com
+$ open/append out [.examples]make.com
+$ copy sys$input: out
+$ deck
+$ call make subset.obj "cc ''cflags' subset.c" -
+ subset.c
+$ call make subset.exe "link subset,[-]t1/library" -
+ subset.obj [-]t1.olb
+$ call make t1example1.obj "cc ''cflags' /include=[-.lib.t1lib] t1example1.c" -
+ t1example1.c
+$ call make t1example1.exe "link t1example1,[-]t1/library" -
+ t1example1.obj [-]t1.olb
+$ exit
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 - P8 What it depends on
+$
+$ If F$Search(P1) .Eqs. "" Then Goto Makeit
+$ Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(0)
+$ write sys$output P2
+$ 'P2
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE
+$eod
+$ close out
+$ say "Creating [.examples]t1libvms.config"
+$ create [.examples]t1libconf.fdl
+$ open/append out [.examples]t1libconf.fdl
+$ copy sys$input: out
+$ deck
+IDENT "T1lib config file"
+
+FILE
+ ORGANIZATION sequential
+
+RECORD
+ BLOCK_SPAN yes
+ CARRIAGE_CONTROL carriage_return
+ FORMAT stream_lf
+
+$eod
+$ close out
+$ create/fdl=[.examples]t1libconf.fdl [.examples]t1libvms.config
+$ open/append out [.examples]t1libvms.config
+$ copy sys$input: out
+$ deck
+This is a configuration file for t1lib
+
+FONTDATABASE=FontDataBase
+ENCODING=[-.fonts.enc];sys$disk:[]
+AFM=[-.fonts.afm];sys$disk:[]
+TYPE1=[-.fonts.type1];sys$disk:[]
+$eod
+$ close out
+$ exit
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/configure.in b/Build/source/libs/t1lib/t1lib-5.1.2/configure.in
new file mode 100644
index 00000000000..eade4c0f10d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/configure.in
@@ -0,0 +1,321 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl This file configure.in is part of the t1lib-package (V. 1.0).
+dnl
+dnl Author: Rainer Menzner (Rainer.Menzner@web.de)
+dnl Date: 06/25/1997
+dnl Last Modified: 2007-12-21
+dnl
+
+AC_REVISION([configure.in 1.00])
+AC_INIT(lib/t1lib/t1base.c)
+AC_CONFIG_HEADER(lib/t1lib/sysconf.h:lib/t1lib/sysconf.h.in)
+AC_CONFIG_AUX_DIR(ac-tools)
+
+
+dnl We set CFLAGS in order to have complete control over compiler
+dnl switches during development
+dnl CFLAGS="$CFLAGS -g -Wall"
+
+
+dnl The following variables specify version information of the
+dnl library. Starting with V. 1.0.0 the libtool scheme is used
+dnl as intended by its authors.
+dnl
+dnl Note: The name of the shared library on Linux is build as
+dnl libt1.so.$(T1LIB_LT_CURRENT)-$(T1LIB_LT_AGE).$(T1LIB_LT_AGE).$(T1LIB_LT_REVISION)
+
+dnl Since I'm forgetful sometimes, I quote the libtool infopage here:
+dnl
+dnl 1. Start with version information of `0:0:0' for each libtool library.
+dnl
+dnl 2. Update the version information only immediately before a public
+dnl release of your software. More frequent updates are unnecessary,
+dnl and only guarantee that the current interface number gets larger
+dnl faster.
+dnl
+dnl 3. If the library source code has changed at all since the last
+dnl update, then increment REVISION (`C:R:A' becomes `C:r+1:A').
+dnl
+dnl 4. If any interfaces have been added, removed, or changed since the
+dnl last update, increment CURRENT, and set REVISION to 0.
+dnl
+dnl 5. If any interfaces have been added since the last public release,
+dnl then increment AGE.
+dnl
+dnl 6. If any interfaces have been removed since the last public release,
+dnl then set AGE to 0.
+
+define( MACRO_T1LIB_LT_CURRENT, 6)
+define( MACRO_T1LIB_LT_REVISION, 2)
+define( MACRO_T1LIB_LT_AGE, 1)
+
+
+dnl -----------------------------------------------------------
+dnl -----------------------------------------------------------
+dnl
+dnl Do not change anything below this line!
+dnl
+dnl -----------------------------------------------------------
+dnl -----------------------------------------------------------
+
+dnl Build version string and setup stuff to be substituted in
+dnl Makefile's and t1lib.h
+define( MACRO_T1LIB_IDENTIFIER, "builtin(eval, MACRO_T1LIB_LT_CURRENT - MACRO_T1LIB_LT_AGE).builtin(eval, MACRO_T1LIB_LT_AGE).builtin(eval, MACRO_T1LIB_LT_REVISION)")
+
+T1LIB_LT_CURRENT=builtin(eval, MACRO_T1LIB_LT_CURRENT)
+T1LIB_LT_REVISION=builtin(eval, MACRO_T1LIB_LT_REVISION)
+T1LIB_LT_AGE=builtin(eval, MACRO_T1LIB_LT_AGE)
+T1LIB_IDENTIFIER=MACRO_T1LIB_IDENTIFIER
+
+T1LIB_VERSION=builtin(eval, MACRO_T1LIB_LT_CURRENT - MACRO_T1LIB_LT_AGE)
+T1LIB_REVISION=builtin(eval, MACRO_T1LIB_LT_AGE)
+T1LIB_PATCHLEVEL=builtin(eval, MACRO_T1LIB_LT_REVISION)
+T1LIB_VERSIONSTRING=\"MACRO_T1LIB_IDENTIFIER\"
+
+
+dnl We use this file by Andreas Zeller to check for libXaw
+builtin(include, ac-tools/ice_find_athena.m4)
+builtin(include, ac-tools/aclocal.m4)
+
+dnl We want these before the checks, so the checks can modify their values.
+test -z "$LDLIBS" && LDLIBS=-lm AC_SUBST(LDLIBS)
+test -z "$PROGEXT" && PROGEXT="" AC_SUBST(PROGEXT)
+test -z "$CFLAGS" AC_SUBST(CFLAGS)
+test -z "$LDFLAGS" AC_SUBST(LDFLAGS)
+
+T1LIB_DATA_DIR="${datadir}/t1lib"
+
+dnl The following variables should be used
+
+AC_SUBST(T1LIB_LT_CURRENT)
+AC_SUBST(T1LIB_LT_REVISION)
+AC_SUBST(T1LIB_LT_AGE)
+AC_SUBST(T1LIB_DATA_DIR)
+AC_SUBST(T1LIB_IDENTIFIER)
+AC_SUBST(MAIN_TARGET)
+AC_SUBST(MAIN_HEADER)
+AC_SUBST(OPTIONS)
+AC_SUBST(no_x)
+AC_SUBST(CC)
+AC_SUBST(T1_AA_TYPE16)
+AC_SUBST(T1_AA_TYPE32)
+AC_SUBST(T1_AA_TYPE64)
+AC_SUBST(T1_INT16)
+AC_SUBST(T1_INT32)
+AC_SUBST(XSUBDIRS)
+AC_SUBST(T1LIBX_OBJS)
+AC_SUBST(T1LIBX_SRCS)
+AC_SUBST(T1LIBX_HEADERS)
+AC_SUBST(XOBJS)
+AC_SUBST(T1LIB_VERSION)
+AC_SUBST(T1LIB_REVISION)
+AC_SUBST(T1LIB_PATCHLEVEL)
+AC_SUBST(T1LIB_VERSIONSTRING)
+
+dnl **** Check for some programs and libraries ****
+
+AC_PROG_MAKE_SET
+AC_PROG_CC
+AC_PROG_CPP
+AC_PATH_XTRA
+ICE_FIND_ATHENA
+AM_PROG_LIBTOOL
+AC_PROG_INSTALL
+
+dnl **** Check for some compiler/system characteristics
+
+AC_C_CHAR_UNSIGNED
+AC_CHECK_SIZEOF(char,0)
+AC_CHECK_SIZEOF(short,0)
+AC_CHECK_SIZEOF(int,0)
+AC_CHECK_SIZEOF(long,0)
+AC_CHECK_SIZEOF(long long,0)
+AC_CHECK_SIZEOF(float,0)
+AC_CHECK_SIZEOF(double,0)
+AC_CHECK_SIZEOF(long double,0)
+AC_CHECK_SIZEOF(void *,0)
+
+dnl **** Check for gcc strength-reduce bug ****
+
+if test "x${GCC}" = "xyes"
+then
+dnl We don'use
+ CFLAGS="$CFLAGS"
+ AC_CACHE_CHECK( "for gcc strength-reduce bug", ac_cv_c_gcc_strength_bug,
+ AC_TRY_RUN([
+int main(void) {
+ static int Array[[3]];
+ unsigned int B = 3;
+ int i;
+ for(i=0; i<B; i++) Array[[i]] = i - 3;
+ exit( Array[[1]] != -2 );
+}],
+ ac_cv_c_gcc_strength_bug="no",
+ ac_cv_c_gcc_strength_bug="yes",
+ ac_cv_c_gcc_strength_bug="yes") )
+ if test "$ac_cv_c_gcc_strength_bug" = "yes"
+ then
+ CFLAGS="$CFLAGS -fno-strength-reduce"
+ fi
+fi
+
+dnl **** Check for underscore on external symbols ****
+
+AC_CACHE_CHECK("whether external symbols need an underscore prefix",
+ ac_cv_c_extern_prefix,
+[saved_libs=$LIBS
+LIBS="conftest_asm.s $LIBS"
+cat > conftest_asm.s <<EOF
+ .globl _ac_test
+_ac_test:
+ .long 0
+EOF
+AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
+ ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
+LIBS=$saved_libs])
+if test "$ac_cv_c_extern_prefix" = "yes"
+then
+ AC_DEFINE(NEED_UNDERSCORE_PREFIX)
+fi
+
+dnl **** Check which ANSI integer type is 16 bit
+
+AC_CACHE_CHECK( "which ANSI integer type is 16 bit", ac_16bit_type,
+ AC_TRY_RUN([
+int main(void) {
+ if (sizeof(short)==2)
+ return(0);
+ else if (sizeof(int)==2)
+ return(1);
+ else
+ return(2);
+}], ac_16bit_type="short", ac_16bit_type="int", ac_16bit_type=))
+if test "$ac_16bit_type" = "short"
+then
+ T1_AA_TYPE16="-DT1_AA_TYPE16=short"
+ T1_INT16="short"
+else
+ T1_AA_TYPE16="-DT1_AA_TYPE16=int"
+ T1_INT16="int"
+fi
+
+
+dnl **** Check which ANSI integer type is 32 bit
+
+AC_CACHE_CHECK( "which ANSI integer type is 32 bit", ac_32bit_type,
+ AC_TRY_RUN([
+int main(void) {
+ if (sizeof(int)==4)
+ return(0);
+ else if (sizeof(long)==4)
+ return(1);
+ else
+ return(2);
+}], ac_32bit_type="int", ac_32bit_type="long", ac_32bit_type=))
+if test "$ac_32bit_type" = "int"
+then
+ T1_AA_TYPE32="-DT1_AA_TYPE32=int"
+ T1_INT32="int"
+else
+ T1_AA_TYPE32="-DT1_AA_TYPE32=long"
+ T1_INT32="long"
+fi
+
+
+dnl **** Check which ANSI integer type is 64 bit
+
+AC_CACHE_CHECK( "which ANSI integer type is 64 bit", ac_64bit_type,
+ AC_TRY_RUN([
+int main(void) {
+ if (sizeof(long)==8)
+ return(0);
+ else
+ return(1);
+}], ac_64bit_type="long", ac_64bit_type="<none>"))
+if test "$ac_64bit_type" = "long"
+then
+ T1_AA_TYPE64="-DT1_AA_TYPE64=long"
+else
+ T1_AA_TYPE64=
+fi
+
+
+CFLAGS="${CFLAGS} -DT1LIB_IDENT=\"\\\"${T1LIB_IDENTIFIER}\\\"\" -DGLOBAL_CONFIG_DIR=\"\\\"${T1LIB_DATA_DIR}\\\"\""
+
+dnl **** Check for functions and header files ****
+
+AC_HEADER_STAT()
+AC_C_CONST()
+AC_TYPE_SIZE_T()
+
+dnl **** with or without X11 ****
+
+if test "$no_x" = "yes"
+then
+MAIN_TARGET="libt1.la"
+MAIN_HEADER="t1lib.h"
+XSUBDIRS=""
+T1LIBX_OBJS=""
+T1LIBX_SRCS=""
+T1LIBX_HEADERS=""
+XOBJS=""
+else
+MAIN_TARGET="libt1.la libt1x.la"
+MAIN_HEADER="t1lib.h t1libx.h"
+XSUBDIRS="xglyph"
+T1LIBX_OBJS="t1lib/t1x11.lo"
+T1LIBX_SRCS="t1lib/t1x11.c"
+T1LIBX_HEADERS="t1lib/t1x11.h t1lib/t1libx.h"
+XOBJS="t1x11.lo"
+fi
+
+
+dnl **** Generate output files ****
+
+dnl Some new versions of autonconf do not seem to set
+dnl -DX_DISPLAY_MISSING -> we do it by hand:
+if test "$no_x" = "yes"
+then
+CFLAGS="${CFLAGS} -DT1LIB_NO_X11_SUPPORT"
+MAKEFILES="Makefile \
+ lib/Makefile \
+ lib/type1/Makefile \
+ lib/t1lib/Makefile \
+ type1afm/Makefile \
+ examples/Makefile \
+ doc/Makefile"
+else
+MAKEFILES="Makefile \
+ lib/Makefile \
+ lib/type1/Makefile \
+ lib/t1lib/Makefile \
+ xglyph/Makefile \
+ type1afm/Makefile \
+ examples/Makefile \
+ doc/Makefile"
+fi
+
+
+AC_OUTPUT([
+$MAKEFILES \
+lib/t1lib/t1lib.h
+])
+
+
+
+echo
+echo "Configure finished!"
+echo " Do: 'make' to compile the t1lib-package."
+echo " Do: 'make without_doc' to compile if you do not have LaTeX."
+echo " Do: 'make install' to install the t1lib-package."
+echo ""
+dnl echo " Do: 'make t1python-all' to compile the t1python-package."
+dnl echo ""
+
+dnl Local Variables:
+dnl comment-start: "dnl "
+dnl comment-end: ""
+dnl comment-start-skip: "\\bdnl\\b\\s *"
+dnl compile-command: "autoconf"
+dnl End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Makefile.in
new file mode 100644
index 00000000000..0ac44e50f40
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Makefile.in
@@ -0,0 +1,108 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# clean
+# pdf (this is internally used only because it
+# interferes with the all-target)
+# ps (now=all-target)
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 04/06/1997
+# Last modified: 2004-12-12
+#
+
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS) $(X_CFLAGS)
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+
+# targets to build
+
+
+all: t1lib_doc.ps
+
+
+t1lib_doc.dvi: t1lib_doc.tex intro.tex getstart.tex xglyph.tex ut1lib.tex xinterface.tex internals.tex type1afm.tex
+ latex t1lib_doc.tex
+ makeindex t1lib_doc
+ latex t1lib_doc.tex
+ latex t1lib_doc.tex
+
+
+.PHONY: clean
+
+
+ps: t1lib_doc.ps
+
+
+t1lib_doc.ps: t1lib_doc.dvi
+ dvips -o t1lib_doc.ps t1lib_doc
+
+
+pdf: t1lib_doc.tex intro.tex getstart.tex xglyph.tex ut1lib.tex xinterface.tex internals.tex type1afm.tex
+ pdflatex t1lib_doc.tex
+ makeindex t1lib_doc
+ pdflatex t1lib_doc.tex
+ pdflatex t1lib_doc.tex
+
+
+clean: dummy
+ $(RM) \#*\# *~ *.log *.aux *.bak *.dvi *.toc *.ilg *.idx *.ind *.out t1lib_doc.ps
+
+
+install: dummy
+ if (test -f t1lib_doc.ps) \
+ then \
+ $(MKINSTALLDIRS) $(DESTDIR)@T1LIB_DATA_DIR@/doc; \
+ $(INSTALL_DATA) t1lib_doc.ps $(DESTDIR)@T1LIB_DATA_DIR@/doc; \
+ fi;
+ if (test -f t1lib_doc.pdf) \
+ then \
+ $(MKINSTALLDIRS) $(DESTDIR)@T1LIB_DATA_DIR@/doc; \
+ $(INSTALL_DATA) t1lib_doc.pdf $(DESTDIR)@T1LIB_DATA_DIR@/doc; \
+ fi;
+
+
+uninstall: dummy
+ $(RM) -R $(DESTDIR)@T1LIB_DATA_DIR@/doc
+
+
+dummy:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.eps
new file mode 100644
index 00000000000..e863f33d1aa
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.eps
@@ -0,0 +1,97 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: Tee.tif
+%%CreationDate: Sat May 1 18:58:31 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 29 19
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+29.000000 19.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 29 19 8 3 0 1 2 "false 3 colorimage"
+/line 87 string def
+29 19 8
+[29 0 0 -19 0 19]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff707070707070808080606060
+606060808080606060a0a0a0ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff404040ffffffffffff808080808080ffffffc0c0c0808080
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0d0d0
+ffffffffffff808080808080fffffff0f0f0e0e0e0e0e0e0909090909090f0f0f0
+ffffffffffffffffffb0b0b0808080c0c0c0ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff808080808080
+ffffffffffffd0d0d0404040f0f0f0d0d0d0303030ffffffffffff606060a0a0a0
+ffffff505050b0b0b0ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff808080808080ffffffffffff505050b0b0b0
+ffffffffffff404040d0d0d0d0d0d0303030ffffffffffffc0c0c0505050ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff808080808080ffffffffffff000000808080808080808080808080e0e0e0
+808080404040808080808080808080a0a0a0ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff808080808080ffffff
+ffffff000000f0f0f0ffffffffffffffffffffffff808080707070ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff808080808080ffffffffffff606060808080ffffff
+ffffffffffffe0e0e0e0e0e0101010f0f0f0ffffffffffffe0e0e0ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0a0a0
+202020303030c0c0c0fffffff0f0f0404040707070808080606060e0e0e0ffffff
+a0a0a0404040808080707070909090ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.pdf
new file mode 100644
index 00000000000..e363d5b5872
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/Tee.pdf
@@ -0,0 +1,51 @@
+%PDF-1.2
+%Çì¢
+4 0 obj
+<</Length 5 0 R/Filter /FlateDecode>>
+stream
+xœí“Á ‚0†9÷Äo)r# QnU^M<›èÁ¡#8èOŸi‰ ‹&üMèëëë×öõ…mûô—«¸£Å‰uRdûE„­¢eÜd…ù‘äa›ÉʼnÜ!Nf*§•(ÖôšõçºYi­ÏVl”e9›¦)Ú
+F]×lL‘1¦‡mšæiõ°ÂÐWU…ì;œï°¼n üìtÉQJ?Û]¾±r|œ#°žçéŽ|ÁwžáoÚÃvSʳ(˜¨oX®47Å/èû¾Û Ã!L\Šˆ=~e,Ç•]=31œøQ!#N>ë§$6…Ø£½{)Äendstream
+endobj
+5 0 obj
+258
+endobj
+3 0 obj
+<<
+/Type /Page
+/MediaBox [0 0 29 19]
+/Parent 2 0 R
+/Resources << /ProcSet [/PDF /ImageC]
+>>
+/Contents 4 0 R
+>>
+endobj
+2 0 obj
+<< /Type /Pages /Kids [
+3 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<< /Type /Catalog /Pages 2 0 R
+>>
+endobj
+6 0 obj
+<< /CreationDate (D:20010110083014)
+/Producer (GNU Ghostscript 5.10)
+>>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000547 00000 n
+0000000488 00000 n
+0000000362 00000 n
+0000000015 00000 n
+0000000343 00000 n
+0000000596 00000 n
+trailer
+<< /Size 7 /Root 1 0 R /Info 6 0 R
+>>
+startxref
+683
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.eps
new file mode 100644
index 00000000000..39135ee10a7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1.1 0.2 -0.3 -0.8 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.pdf
new file mode 100644
index 00000000000..e828fd1bb2f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/arbitrary.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.eps
new file mode 100644
index 00000000000..098ee7204d3
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.eps
@@ -0,0 +1,2251 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: concatglyphs.tif
+%%CreationDate: Wed May 5 18:26:15 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 177 137
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+177.000000 137.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 177 137 8 3 0 1 2 "false 3 colorimage"
+/line 531 string def
+177 137 8
+[177 0 0 -137 0 137]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.pdf
new file mode 100644
index 00000000000..f49d1585499
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatglyphs.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.eps
new file mode 100644
index 00000000000..5825d72c139
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.eps
@@ -0,0 +1,2251 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: concatoutlines.tif
+%%CreationDate: Wed May 5 18:26:33 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 177 137
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+177.000000 137.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 177 137 8 3 0 1 2 "false 3 colorimage"
+/line 531 string def
+177 137 8
+[177 0 0 -137 0 137]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.pdf
new file mode 100644
index 00000000000..4de3406f446
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/concatoutlines.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.eps
new file mode 100644
index 00000000000..3e570a4d56b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1.4 0 0 1 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.pdf
new file mode 100644
index 00000000000..bcaef5b12e2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extenth.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.eps
new file mode 100644
index 00000000000..08c0c031e59
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1 0 0 1.4 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.pdf
new file mode 100644
index 00000000000..078a597431b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/extentv.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/getstart.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/getstart.tex
new file mode 100644
index 00000000000..7c118ad74d8
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/getstart.tex
@@ -0,0 +1,489 @@
+%----------------------------------------------------------------------------
+% ----- File: getstart.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2005-05-18
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library License. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independent from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{Getting Started}
+\subsection{Building, Installing and Removing the \tonelib-Package}
+\label{compiling}%
+As of version 0.2-beta, the \verb+autoconf+-package is used to configure and
+build the library. \verb+imake+ is no longer supported. Furthermore, starting
+with version 0.8-beta GNU \verb+libtool+ is used for managing library-specific
+stuff.
+
+Here is how to build and install \tonelib:
+\begin{enumerate}
+\item Change to \verb+T1+-directory.
+\item Run \verb+./configure+. This will check your system's setup and generate
+ the \verb+Makefile+s. By default, shared and static versions of the
+ libraries are built.
+
+ Specifying \verb+--disable-shared+ or \verb+--disable-static+ as a
+ commandline option to \verb+configure+ will suppress the generation of the
+ respective library type. Of course, these rules are superseded by the
+ capability of the system to manage those library types.
+
+ If you know shared libraries are supported on your system but
+ \verb+configure+ says that no dll can be built, some compiler option
+ may be setup incorrect. Please refer to (\ref{libtoolproblems}).
+
+ If the X11 window system is installed on the target system \tonelib\ is
+ automatically build with special X11 support. In cases where this is
+ explicitly not desired the commandline option
+ \verb+--without-x+ may be used to configure a library without extended X11
+ support. In this case the test program \verb+xglyph+ is also not build since
+ it needs X11.
+\item Run \verb+make+. This will build all the stuff including the
+ documentation. If you do not have \LaTeXe\, run
+ \verb+make without_doc+. This will skip generating the documentation.
+\item Type \verb+make install+ to install the package. You'll
+ probably need to be superuser for installing the package at the standard
+ locations. However, the files may be
+ located wherever the user wants, as long as the compiler
+ finds them at compile time. So, place them where you want.
+
+ The following files are installed when doing a \verb+make install+:
+ \begin{itemize}
+ \item \verb+lib/libt1.a+ and/or \verb+lib/libt1.so.+{\em v}\verb+.+{\em
+ r}\verb+.+{\em p} if the system supports shared libraries. In
+ the latter case, also two symbolic links to the shared library,
+ \verb+libt1.so.+{\em v} and \verb+libt1.so+, are generated. Here,
+ {\em v} and {\em r} mean version and revision of the shared
+ library. {\em p} is the patch level. Library and links are
+ installed in the directory
+ specified by the \verb+autoconf+-variable \verb+libdir+ which is by
+ default \verb+/usr/local/lib+.
+ \item The same as above holds for \verb+lib/libt1x.a+ or
+ \verb+lib/libt1x.so.+{\em v}\verb+.+{\em r}\verb+.+{\em p}
+ respectively, which contain the X11 interface functions. This
+ library is only installed if X11 support was possible and not
+ suppressed.
+ \item \verb+lib/t1lib.h+ and optionally \verb+lib/t1libx.h+. They are installed
+ in the directory pointed to by the \verb+autoconf+-variable \verb+includedir+
+ which is by default\\
+ \verb+/usr/local/include+.
+ \item The test program \verb+xglyph/xglyph+. If shared libraries are
+ supported (and not suppressed by \verb+--with-static-lib+) this
+ executable is dynamically linked to \verb+libt1.so+ and
+ \verb+libt1x.so+. It is installed in the directory pointed to by
+ the \verb+autoconf+-variable \verb+bindir+ (by default
+ \verb+/usr/local/bin+).
+ \item The converter \verb+type1afm+. The same applies as above for
+ \verb+xglyph+.
+ \item A subdirectory named \verb+t1lib-+{\em v}\verb+.+{\em r} is created in
+ the directory pointed to by the \verb+autoconf+-variable \verb+datadir+ (default
+ \verb+/usr/local/share+) and a default global configuration file
+ \verb+t1lib.config+ is installed there. Note that this configuration is
+ not of any use. It has to be setup by the administrator to specify the
+ paths to the system's Type 1 fonts and AFM files as well as any
+ \tonelib\ encoding files. Notice also that the global configuration file
+ is not installed if it already exists. This is to prevent from deletion of
+ an existent setup.
+ \item A subdirectory \verb+doc+ is created in the directory where the global
+ configuration file resides (see above). The \LaTeXe-documentation
+ \verb+t1lib_doc.dvi+ as well as all needed graphics files is installed
+ there. The \LaTeXe-sources are not installed!
+ \item If you ever want to remove \tonelib\ from your system this can be
+ achieved by calling \verb+make uninstall+. This reverts all steps
+ described above. Of course, this works only if \tonelib\ has not been
+ reconfigured using different parameters since the time of install.
+ \end{itemize}
+\end{enumerate}
+
+The top level \verb+Makefile+ further supports the targets \verb+clean+ and
+\verb+distclean+. The latter is an extension of \verb+clean+ which also
+removes the makefiles as well as the log and cache files of the configuration
+process. It forces thus a new call to \verb+configure+.
+
+A \verb+make clean+ is needed, for example, if someone experiments with static
+and shared libraries since the object files for shared libraries require the
+additional position independent code options.
+
+The directory \verb+T1/parse_afm+ is not needed at all, it is included only
+for completeness. The parts needed from this have been copied to the
+\verb+lib/t1lib+-subdirectory.
+
+
+\subsection{Notes on Using GNU {\tt libtool}}
+\label{libtoolproblems}%
+\verb+libtool+ might get confused by heterogenous compiler setups. This is the
+case, for example, on our Solaris system where by default \verb+gcc+ is used
+in combination with the system specific linker. This configuration leads to
+\verb+libtool+ reporting that no shared library can be built which definitely
+is wrong. In most cases such problems can be solved by fiddling with the
+environment entries \verb+CC+, \verb+CFLAGS+, \verb+LD+ and \verb+LDFLAGS+.
+
+\verb+libtool+ hides the real objects in subdirectories named \verb+.libs+.
+This means, after a successful build, \verb+libt1.so+ is located in
+\verb+T1/lib/.libs+. Similarly, if shared libraries are built the executable
+\verb+T1/xglyph/xglyph+ is a simple wrapper to \verb+T1/xglyph/.libs/xglyph+.
+
+
+\subsection{Runtime-Setup}
+\label{runtimesetup}%
+\subsubsection{Searchpath and Environment Setup}
+\verb+t1lib+ basically needs four types of files:
+\begin{itemize}
+\item \verb+.afm+-files: These contain font metric descriptions as
+ well as kerning and ligature information for a particular font.
+\item \verb+.pfa+-/\verb+.pfb+-files: These contain the character
+ outline descriptions. Type 1 font files may also lack any extension in their
+ filename. This is the habit on NeXTStep, for example.
+\item \verb+.enc+-files: These contain encoding arrays in a special but
+ simple form. They are only needed if someone wants to load a special
+ encoding to reencode a font.
+\item A font database file. The library needs at least one font
+ database file specification. See below for a description of this
+ font database file. Optionally, multiple font database files can be
+ specified.
+\end{itemize}
+In order to tell \tonelib\ where these files are located in the
+filesystem, a configuration file usually has to be set up by the user.
+At time of initialization (see \ref{initialization} on page
+\pageref{initialization}) the library tries to locate all data it
+needs immediately or possibly later. The
+following actions take place in order:
+\begin{enumerate}
+\item The library tries to read the variable \verb+T1LIB_CONFIG+ from
+ the program's environment.
+ The value of this variable is expected to be the
+ pathname of a configuration file for \verb+t1lib+.
+\item If the variable \verb+T1LIB_CONFIG+ exists, the file pointed to
+ by this variable will be tried to be opened. In case no environment
+ variable exists, the library will attempt to open a file called
+ \verb+.t1librc+ in the user's home directory.
+ If this file as well does
+ not exist, the global configuration file \verb+t1lib.config+ is tried to be
+ opened.\footnote{The filenames for the user's and the global configuration
+ file as well as the name of the environment entry are default names
+ defined in {\ttfamily lib/t1lib/t1misc.h}. They may be redefined by the
+ user at compile time if necessary.}
+ If all these attempts to open a configuration file did not
+ succeed, all searchpaths are left at defaults (\verb+.+) and the font database
+ file is setup to be \verb+./FontDataBase+. If this file cannot be
+ opened, the call to \verb+T1_InitLib()+ returns a NULL-pointer thus
+ indicating an error condition. The program should then exit because
+ \tonelib\ would not be able to do anything without an association of font
+ IDs to font files.
+\item Assuming a configuration file has been found and opened at any of the
+ above three locations, this file
+ is parsed and all relevant information in this file is recorded.
+\item Using the paths specified in the configuration file, the
+ font database is opened and processed. The existence of every Type 1
+ file that might later be needed is ensured. The existence of the
+ corresponding AFM file is not verified during
+ initialization, because this information is not ultimatively
+ critical when generating a character bitmap.\footnote{For example, a
+ program may generate a character table of a Type 1 font without
+ having AFM information.} Aside from this, \tonelib\ can generate the
+ required part of the AFM information on the fly.
+\end{enumerate}
+
+
+\subsubsection{The {\ttfamily t1lib} Configuration File}
+\label{subsubsec:configfile}
+
+It is the purpose of the configuration file to setup search paths and font
+databases. The format of this file is quite simple and straightforward:
+\begin{itemize}
+\item Each line starting exactly with \verb+ENCODING=+ is read in. The
+ remainder of the line is expected to be a list of searchpath
+ specifications for encoding files. No white space may appear
+ between \verb+=+ and the path specification(s).
+ Multiple paths may be specified by separating
+ the single paths with colons.\footnote{A colon is the default path separator
+ on UNIX systems. For certain other Operating Systems the path separator
+ may be a semicolon.} The path specification(s) may be
+ followed by any white space characters.
+\item Each line starting exactly with \verb+AFM=+ is read in. The
+ remainder of the line is expected to be a list of searchpath
+ specifications for Adobe Font Metric files. No white space may
+ appear between \verb+=+ and the path specification(s).
+ Multiple paths may be specified by separating
+ the single paths with colons. The path specification(s) may be
+ followed by any white space characters.
+\item Each line starting exactly with \verb+TYPE1=+ is read in. The
+ remainder of the line is expected to be a list of searchpath
+ specifications for Type 1 font files. No white space may
+ space between \verb+=+ and the path specification(s).
+ Multiple paths may be specified by separating
+ the single paths with colons. The path specification(s) may be
+ followed by any white space characters.
+\item Each line starting exactly with \verb+FONTDATABASE=+ must specify a
+ colon-separated list of font database filenames on the remainder of the
+ line. No white space is allowed between \verb+=+ and the path specification,
+ but trailing white space is allowed.
+\item Each line starting exactly with \verb+FONTDATABASEXLFD=+ must specify a
+ colon-separated list of font database filenames that adhere to the XLFD (X11
+ Logical Font Definition) on the remainder of the line. No white space is
+ allowed between \verb+=+ and the path specification, but trailing white
+ space is allowed.
+
+ This keyword is not an independent key word, rather, it allows to specify a
+ special alternative type of font database---a type that usually exists as
+ part of every X11 system. Standard and XLFD font database files may be
+ specified both in one configuration file. They interact in a way, that if an
+ XLFD font database file is specified, this overwrites the default standard
+ font database setup before the configuration is read.
+\item All other lines are ignored by the library.
+\end{itemize}
+
+A configuration file may contain multiple path declarations of one type. In this
+case, a list of path elements is built internally in the same order that the
+specifications appear in the configuration file. For example, the statement
+\begin{verbatim}
+TYPE1=/usr/X11/fonts/Type1:/home/user/fonts/Type1
+\end{verbatim}
+is equivalent to the two statements
+\begin{verbatim}
+TYPE1=/usr/X11/fonts/Type1
+TYPE1=/home/user/fonts/Type1
+\end{verbatim}
+
+In order to specify paths that incorporate {\em unusual} characters like white
+space or the path separator, it is possible to quote the path string element
+using double quotes ``\verb+"+''. All characters after the leading quotation
+mark are verbatim read to the path until the closing quotation mark
+appears. The double quotes may also become part of a path
+specification by using the escape sequence ``\verb+\"+''. Hence, the following
+statement specifies a correct albeit somewhat unusual search path:
+\begin{verbatim}
+TYPE1=/usr/X11/fonts/Type1:"/home/user/My \"Best\" Fonts/Type1"
+\end{verbatim}
+
+Here is an example of how a user could do the runtime setup: \\[2mm]
+{\bfseries Example}: \\
+Create a file, say, named \verb+t1.config+ with the following
+contents in your HOME-directory:
+\begin{verbatim}
+# This is a configuration file for t1lib
+ These two lines are considered to be comments
+
+FONTDATABASE=/home/user/test/myprog/FontDataBase
+ENCODING=/usr/local/lib/fonts/type1/enc:.
+AFM=/usr/local/lib/fonts/type1/afm:.
+TYPE1=/usr/local/lib/fonts/type1/outlines:.
+\end{verbatim}
+After this, make the environment variable \verb+T1LIB_CONFIG+ point
+to this file, i.e., \\
+\verb+setenv T1LIB_CONFIG ~/t1.config+\\
+ for \verb+tcsh+, or\\
+\verb+export T1LIB_CONFIG=~/t1.config+\\
+for \verb+bash+. Provided that the path specifications in the
+configuration file are correct, the setup is done. When setting
+\verb+T1LIB_CONFIG+ in an interactive shell as described above, the shell does
+the tilde expansion. Notice that \tonelib\ never does tilde expansion.
+
+
+\subsubsection{The Font Database File}
+\label{fontdatabase}%
+This is one more file important at startup time. I call it
+``font database file'' because it makes fonts declared in this file
+known to the library. Moreover, the association {\em declared font
+ $\Longleftrightarrow$ FontID} is done using information from this
+file. The format specification of this file is relatively free. Here are
+the exact rules:
+\begin{itemize}
+\item Line 1 contains a positive integer specifying the
+ number of fonts declared in that file. This is as in the
+ \verb+fonts.dir+ files of the X11-system.
+\item All remaining lines contain declarations of one font each. The
+ only thing taken from such a line is the last string
+ (delimited by white space) in it. It is assumed to be a
+ filename of the format {\em basename}\verb+.+{\em someextension}.
+ Furthermore, the {\em basename}-part is assumed to be the basename
+ of a fontfile name. After such a string has been parsed, the
+ {\em extension} is cut off and replaced in turn with \verb+.pfa+ and
+ \verb+.pfb+. The initialization routine tries to open a font
+ file with one of the resulting filenames.
+
+ Since V.~0.9 the ``\verb+.+'' as well as the ``{\em someextension}'' may be
+ missing completely. Moreover, \tonelib\ looks for Type 1 Font files whose
+ name do not have any extension at all. This is due to conventions of some
+ UNIX-systems.
+\item The remaining of the line, i.e., from beginning to the start of the
+ filename string is completely ignored and may contain some
+ information for other programs or be empty.
+\end{itemize}
+The format described above may seem to be underspecified, but it has
+been chosen to be compatible with the \verb+SciFonts+-fileformat,
+which is used during the initialization of the SciTeXt word
+processor. \\[2mm]
+{\bfseries Example 1}: A minimal font database file for 4 fonts:
+
+{\footnotesize
+\begin{verbatim}
+4
+isvl.afm
+isvli.afm
+isvd.afm
+isvdi.afm
+\end{verbatim}
+}%
+
+This file is {\em minimal}, because it contains just the information
+needed, and nothing not needed by \tonelib.
+
+{\bfseries Example 2}: A more
+realistic example, which allows an application to match a fully
+qualified X11 fontname to a FontID in \tonelib. This is also a
+valid font database file:
+
+{\footnotesize\hfuzz=30pt\relax
+\begin{verbatim}
+4
+Souvenir Souvenir-Light --- -itc-souvenir-light-r-normal--#-0-0-0-p-0-iso8859-1 isvl.afm
+" Souvenir-LightItalic -*- -itc-souvenir-light-i-normal--#-0-0-0-p-0-iso8859-1 isvli.afm
+" Souvenir-Demi *-- -itc-souvenir-demi-r-normal--#-0-0-0-p-0-iso8859-1 isvd.afm
+" Souvenir-DemiItalic **- -itc-souvenir-demi-i-normal--#-0-0-0-p-0-iso8859-1 isvdi.afm
+\end{verbatim}
+}%
+
+\subsubsection{Alternative Runtime Setups}
+The runtime setup described above is the most simple principle of
+getting started. However, there might be applications that deal with
+only one font file. A good example is the \verb+type1afm+-utility
+which is described in section \ref{type1afm}. In such situations it seems to
+be overkill to read a font database file and several load paths. For
+this reason there are alternative ways to specify what should be read
+from where. Their description is deferred to section
+\ref{initialization}.
+
+\subsection{A Very Simple Programming Example}
+\label{programmingexample}
+The following code is a very simple programming example of how to use
+\tonelib. It even runs on an ASCII-terminal. It is provided in the
+\verb+examples+-subdirectory of the distribution as \verb+t1example1.c+.
+This program must be compiled to object format and then linked with
+the library \verb+libt1.a+ or \verb+libt1.so+, respectively. On most systems
+the commandline
+\begin{verbatim}
+ cc -o t1example1 -I ../lib t1example1.c -L../lib -lt1 -lm
+\end{verbatim}
+should do it. For convenience reasons a \verb+Makefile.in+ is included in the
+examples directory and the stuff is built automatically.
+
+At runtime, a
+well defined setup must be found, i.e., a configuration file with path
+definitions and a font database file. These also are located in the
+\verb+examples+ subdirectory.
+
+\begin{verbatim}
+#include <stdio.h>
+#include <stdlib.h>
+#include <t1lib.h> /* All needed declarations */
+
+int main( void)
+{
+
+ GLYPH *glyph;
+ int i;
+
+ /* Set our environment to an existent config file directory */
+ putenv( "T1LIB_CONFIG=./t1lib.config");
+
+ /* Pad bitmaps to 16 bits, the default being 8 bits */
+ T1_SetBitmapPad( 16);
+
+ /* Initialize t1lib and return if error occurs. No logfile will be
+ generated */
+ if ((T1_InitLib(NO_LOGFILE)==NULL)){
+ fprintf(stderr, "Initialization of t1lib failed\n");
+ return(-1);
+ }
+
+ /* For every font in the database, generate a glyph for the string
+ "Test" at 25 bp. Use Kerning. Then dump an ASCII representation
+ of the glyph to stdout */
+ for( i=0; i<T1_Get_no_fonts(); i++){
+ glyph=T1_SetString( i, "Test", 0, 0, T1_KERNING, 25.0, NULL);
+ T1_DumpGlyph( glyph);
+ }
+
+ /* Close library and free all data */
+ T1_CloseLib();
+
+ return( 0);
+
+}
+\end{verbatim}
+
+We assume that in the current directory there is a file
+\verb+FontDataBase+ which declares two fonts, Souvenir Light and a bold
+italic variant and further, that these fonts and their
+AFM files can be found using the paths from the configuration
+file.
+If the resulting program is run, it produces some output like the following on
+\verb+stdout+:
+\newpage
+\begin{verbatim}
+Dataformat: T1_bit=0, T1_byte=1, T1_wordsize=16, T1_pad=16
+GlyphInfo: h=18, w=44, paddedW=48
+.XXXXXXXXXXXXXX. ................ ................
+XXX....XX....XXX ................ ................
+X......XX......X ................ ........X.......
+.......XX....... ................ ........X.......
+.......XX....... ................ .......XX.......
+.......XX....... ................ .......XX.......
+.......XX....... ...XXXX.......XX XXX..XXXXXXX....
+.......XX....... .XX...XX.....XX. ..XX...XX.......
+.......XX....... XX.....XX...XX.. ...X...XX.......
+.......XX....... XX.....XX...XX.. .......XX.......
+.......XX......X X......XX...XXX. .......XX.......
+.......XX......X X....XXX.....XXX XXX....XX.......
+.......XX......X XXXXXXX.......XX XXXX...XX.......
+.......XX......X XX.............. ..XXX..XX.......
+.......XX......X X............... ...XX..XX.......
+.......XX....... XX......XX..X... ...XX..XX.......
+.......XX....... XXX....X....XX.. ..XX...XX.......
+.....XXXXXX..... ..XXXXX.......XX XXX....XXXXX....
+Dataformat: T1_bit=0, T1_byte=1, T1_wordsize=16, T1_pad=16
+GlyphInfo: h=18, w=51, paddedW=64
+.XXXXXXXXXXXXXXX X............... ................ ................
+.XXXXXXXXXXXXXXX X............... ................ ................
+.XX....XXXX....X X............... ...............X X...............
+.X.....XXXX..... X............... ...............X X...............
+......XXXXX..... ................ ..............XX X...............
+......XXXXX..... ................ ..............XX X...............
+......XXXX...... ....XXXXXX...... .XXXXX.....XXXXX XXX.............
+......XXXX...... ..XXXXXXXXXX...X XXXXXXXX...XXXXX XXX.............
+......XXXX...... .XXXX...XXXX..XX XX...XXX....XXXX ................
+......XXXX...... XXXX....XXXX..XX XX....XX....XXXX ................
+.....XXXXX...... XXXX...XXXX...XX XXXX........XXXX ................
+.....XXXXX.....X XXX..XXXXX.....X XXXXXX......XXXX ................
+.....XXXX......X XXXXXXXX........ XXXXXXXX....XXXX ................
+.....XXXX......X XXX............. ..XXXXXX...XXXX. ................
+.....XXXX......X XXX.......X..XX. ....XXXX...XXXX. ................
+.....XXXX....... XXXX....XXX.XXXX ....XXXX...XXXXX XX..............
+....XXXXXX...... XXXXXXXXXX...XXX XXXXXXX....XXXXX XX..............
+...XXXXXXX...... ..XXXXXX.......X XXXXX......XXXX. ................
+\end{verbatim}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% TeX-master: "ut1lib"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/internals.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/internals.tex
new file mode 100644
index 00000000000..9f232dbf598
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/internals.tex
@@ -0,0 +1,679 @@
+%----------------------------------------------------------------------------
+% ----- File: internals.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2003-03-01
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library License. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independent from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{Internals (incomplete)}
+\label{internals}%
+\vskip1cm
+\hrule
+\vskip0.5cm
+\begin{center}
+\sffamily\large
+{\Huge\bfseries Note!}\\
+This section is still very incomplete and some facts are not true
+anymore. This should be kept in mind. Currently I have no time to
+write this section. But I try to keep figure \ref{figure:t1data}
+consistent to the current releases. This may lead to inconsistencies
+between the text and the figure.
+\end{center}
+\hrule
+\vskip1cm
+In this section, some information on internals of \tonelib\ is given. There is
+no need for an average user to read this section although having understood
+what is going on internally might be helpful if problems occur.
+
+The basic idea of this section is to describe the data structures and to give
+information on when they are initialized, allocated and referenced. Figure
+\ref{figure:t1data} shows an image of the data-structures for the special case that
+the font with ID 0 has already been loaded and several size-instances have
+already been created.
+%-- Figure: The data structures of t1lib
+\begin{figure}
+\begin{center}
+\includegraphics*[angle=90]{t1_data}
+\end{center}
+\hrule\vskip3mm\small
+\caption{\label{figure:t1data}The internal data structures of \tonelib. The
+underlying substructures are shown only for the first font
+{\tt FontID=0}.}
+\end{figure}
+As the figure indicates, the complete area may be split into three
+different sub-areas, thereby pointing out their logical functions.
+
+\subsection{Level 0: Global Data}
+\label{globaldata}%
+This area contains information needed for the overall organization of the
+\tonelib. Its contents and its size are thus determined at the time
+\tonelib\ is initialized. This is done based on the contents of the
+configuration file and the fontdatabase file. The entries in detail are:
+\begin{itemize}
+\item {\tt Filename-Searchpaths}: This entry essentially does not depend on
+ any other data. It consists of 4 \verb+\0+-terminated strings that are read
+ from the configuration file. They are referenced internally by the global
+ symbols
+ \verb+PFAB_ptr+, \verb+AFM_ptr+, \verb+ENC_ptr+ and \verb+FDB_ptr+
+ respectively. All these are declared as \verb+unsigned char *+. These
+ strings are used by \tonelib\ to locate the respective file types. If no
+ configuration file exists or some path declaration is missing, the
+ corresponding searchpath is set to ``\verb+.+'', causing \tonelib\ to only
+ search the current working directory.
+\item \verb+no_fonts_ini+: This value is assigned after examining the
+ fontdatabase file. It is meant to store the number of fonts initially
+ declared in the fontdatabase file. In other words, it is assigned the
+ integer number located on the first line of the fontdatabase file.
+\item \verb+no_fonts+: The number of actually allocated fonts. Initially, this
+ quantity is identical to \verb+no_fonts_ini+. But if one creates a new
+ logical font by calling \verb+T1_CopyFont()+ this counter is incremented to
+ keep track of allocated fonts. \verb+no_fonts+ thus represents most large
+ \verb+FontID+ minus 1 that makes sense to specify to any function of
+ \tonelib.
+\item \verb+no_fonts_limit+: The number of fonts for which memory is currently
+ allocated. This also is initially set to \verb+no_fonts_ini+ and is
+ automatically enlarged to a multiple of the initial value if a call to
+ \verb+T1_CopyFont()+ requires additional memory for logical fonts (see
+ \ref{logicalfonts}).
+\item \verb+bitmap_pad+: This variable contains the number of bits to which
+ scanlines of bitmaps and antialiased bitmaps are padded. It is set during
+ initialization, either to a default value or to the value the application
+ specified before starting initialization using
+ \verb+T1_SetBimapPad()+. Allowed values are currently `8', `16' and `32'.
+\item \verb+endian+: During initialization the hardware is checked for
+ representation of data in memory. If Big Endian is used, \verb+endian+ is
+ set to \verb+1+ and otherwise it is set to \verb+0+. \verb+endian+ is needed
+ at several times when an application or \tonelib\ itself must know the
+ byte order of words and long words.
+\item \verb+pFontArray+: This a pointer to an array of structures whose type
+ is referred to as \\
+ \verb+FONTPRIVATE+ in \tonelib. The contents of these
+ structures will be described below. After \tonelib\ has been
+ initialized, memory is allocated for exactly \verb+no_fonts_ini+
+ structures. This memory pool may be enlarged later if the one wants to make
+ use of logical fonts, for example. The data in these structures initially is
+ not specified. It is written with meaningful values when a font is loaded
+ into memory. The index to access this array-elements is the well known font
+ identification number (\verb+FontID+).
+\item \verb+pFontFileNameIDArray+: A pointer to a memory area where the
+ font file names corresponding to the \verb+FontID+s are stored. During
+ initialization, \tonelib\ looks for font files with extension \verb+.pfa+
+ and \verb+.pfb+. The basename of the file found is stored in this area and
+ if the font is to be loaded later, its font file name is looked up here.
+\end{itemize}
+We should now discuss the entries of the structures of type
+\verb+FONTPRIVATE+. The term \verb+FONTPRIVATE+ indicates that every font
+needs its own structure area. As mentioned earlier, this area is initialized
+when the corresponding font is loaded.
+\begin{itemize}
+\item \verb+pAFMData+: A pointer to a memory area where Adobe Font Metric data
+ of the font is stored. The memory area itself is build by the
+ \verb+parse_afm+-package which is supplied by Adobe System and included in
+ \tonelib. This happens while a font is loaded. In case there is no AFM file
+ for the font in question, this pointer is given the value \verb+NULL+.
+\item \verb+pType1Data+: A pointer to the data area where the Type 1
+ information is stored. The known PostScript Type 1 objects
+ Charstrings-dictionary, Subroutines, Othersubroutines and
+ Fontinfo-dictionary are located here. The memory is filled with data during
+ parsing the font file when the font is loaded.
+\item \verb+pFontEnc+: A pointer to an optional external encoding
+ vector. During initialization, this pointer is set to \verb+NULL+, thus
+ indicating that by default the font's internal encoding should be used.
+ If a font is reencoded using a previously loaded encoding vector from an
+ encoding file, this pointer simply is assigned the address of a valid
+ encoding array somewhere in memory.
+\item \verb+vm_base+: The base address of the virtual memory required by the
+ font. Unlike the original rasterizer, which allocated virtual memory in
+ chunks of a fixed size, t1lib uses another principle. Since it is \`a
+ priori not obvious how many virtual memory a font consumes, \tonelib\ tries
+ to load a font repeatedly and increases the amount of virtual memory during
+ every trial. In order not to waste memory, the memory is reallocated to the
+ needed size when the font is completely loaded. Finally, the starting
+ address of the virtual memory is needed when a font is to be unloaded and
+ the memory it consumes is to be given back to system.
+\item \verb+pFontSizeDeps+: A pointer to the area where the size dependent
+ data is to be stored. This data essentially consists of generated glyphs
+ plus some administrative item (see \ref{sizedependentfontdata}).
+\item \verb+FontMatrix+: A matrix of four \verb+double+-values specifying the
+ font matrix. If the FontInfo-dictionary of the font file defines a
+ FontMatrix, it is copied to this location. If not, a default matrix is
+ used which does no transformation and scales to $1/1000$~bp.
+\item \verb+FontTransform+: A matrix that will be concatenated with the
+ FontMatrix to produce the final transformation of the characters. It is this
+ matrix that is modified if a font is to be slanted or extended.
+\item \verb+slant+: A slant factor for the current font. Note that this
+ value is initially 0, even for italic font. Only artificially slanting a
+ font leads to values different from 0.
+\item \verb+extend+: The horizontal extension factor for the current font. Its
+ default value is 1 and the font is thus rendered at its natural width.
+\item \verb+physical+: This is a switch that marks a font either being
+ ``physical'' or ``logical''. A physical font by definition is a font for
+ which a Type 1 font file is available and for which thus Level 1
+ (size-independent) data is present (see Fig.\ 5.1). In contrast, the term
+ ``logical font'' refers to a structure of type \verb+FONTPRIVATE+ whose
+ entry \verb+pType1Data+ points to Level 1 data of another (physical)
+ font. This \verb+FONTPRIVATE+-structure is created by calling
+ \verb+T1_CopyFont()+ with the identification number of an existing physical
+ font as argument (see \ref{logicalfonts}).
+\item \verb+refcount+: This counter keeps track on how much logical fonts
+ refer to the physical font that is represented by the current structure of
+ type \verb+FONTPRIVATE+. In this since, \verb+refcount+ is only meaningful for
+ physical fonts. It is necessary to keep track of the reference of logical
+ fonts because if this font would be removed from memory by calling
+ \verb+T1_DeleteFont()+, the Level 1 font data memory area would be given back
+ to the system but the logical fonts referring to that font would still
+ expect to find Type 1 or Font Metric data at this address. By checking
+ \verb+refcount+, \verb+T1_DeleteFont()+ can check for logical fonts referring
+ to the font in question and prevent from removing this font from memory.
+
+ In structures describing logical fonts, \verb+refcount+ is used to
+ store the information which physical font this logical font is
+ referring to. This information is also needed by
+ \verb+T1_DeleteFont()+ since when removing logical fonts, the
+ reference counter of the corresponding physical font has to be
+ decremented.
+\item \verb+space_position+: This variable stores the encoding index of the
+ ``space''-character of the current font. If the space character does not
+ appear in the current font's encoding, \verb+space_position+ is assigned
+ -1. It follows that \verb+space_position+
+ is assigned when (1) a font loaded and (2) every time a
+ font is reencoded. Why is it convenient to store the position of the space
+ character in the encoding vector? The properties of the space character are
+ set apart from the other characters' properties not only by the fact that it
+ does not produce any colored pixels but also by that it may shrink and
+ stretch in \tonelib. As a consequence a space character is treated by simply
+ inserting a horizontal escapement of the width of the space
+ character---corrected by the quantity \verb+space_off+ that a user may
+ specify (see \ref{generatingbitmaps}). This involves always checking every
+ character for being the space character and since the encoding principle is
+ used in \tonelib, every check needs a call to \verb+strcmp()+. This overhead
+ is avoided if the position of space is stored.
+\end{itemize}
+\subsection{Level 1: Size-Independent Font Data}
+\label{sizeindependentfontdata}%
+Size-independent data may be split into three categories as indicated in
+figure \ref{figure:t1data}. The external encoding is optional and is generated
+by loading an encoding file as described in \ref{encoding}. It is simply an
+array of 256 pointers to \verb+unsigned char+ and an ensemble of 256
+\verb+\0+-terminated strings. Each pointer references one of the 256 strings
+in order. The strings are the characters' names to be defined in a
+\tonelib-encoding file.
+
+The internal Type 1 data structures hold all data specified in a type font
+file. I do not want to describe these data structures here, because this could
+fill a book. Adobe has made the description of the Type 1 font format
+available to the public.
+
+The Adobe Font Metrics area is entirely created by the
+\verb+parse_afm+-package. Adobe has made this available by means of the file
+\verb+parseAFM.shar+ which is a shell-archive and included in \tonelib\ in the
+subdirectory \verb+parse_afm+.
+
+\subsection{Level 2: Size-Dependent Font Data}
+\label{sizedependentfontdata}%
+
+$\ldots$
+
+\newpage
+
+\section{Stroked Characters}
+\label{strokingimplementation}%
+This section is only meant for the reader interested in details about the
+algorithm used to create stroked versions from outlines intended to be
+filled. It can help to understand the code I added to \verb+type1.c+, which
+may seem a little bit strange.
+
+The basic idea to achieve stroked outlines was to map the stroking operation
+to a simple filling operation as already implemented by the rasterizer. Why
+did I choose this approach? Well, the actual reason for doing so was that I
+felt like doing so. One of the pivotal problems in this context turned out to
+be the computation of a third order Bezier curve, being located {\em in
+ parallel} to a given third order Bezier curve---a problem set which
+everybody on the net said to be impossible to solve. After some experimenting
+I had to admit that these people actually were right: It is not possible to
+solve this problem in general, in particular because tracing a given cubic
+Bezier spline using a finite pen width might produce delimiting curves which
+aren't Bezier splines at all. In particular, the angular range and the pen
+width in relation to the original curve's bend are of importance.
+
+However, under some constraints, which usually are fulfilled by adhering to
+the Adobe design rules for Type 1 Fonts and by choosing reasonable stroke
+widths, it is possible to approximate these delimiting curves by cubic Bezier
+splines.
+
+\subsection{Approach}
+Type 1 character outline descriptions consist of mathematically thin defining curves
+and lines with an associated running direction. By convention, regions left of
+these defining curves are painted and regions right of these curves are left
+blank. For each properly defined character, this way, a finite area to be filled
+results by applying this rule, especially because for filled characters every
+subpath must be closed. Figure~\ref{figure:stroking1}~\fbox{A} shows the
+character ``8'' from the ComputerModern Roman font as an example.
+\begin{figure}[t]
+\hfill
+\fbox{A}\includegraphics[scale=0.5]{t1dump/t1dump_eight}
+\hfill
+\fbox{B}\includegraphics[scale=0.5]{t1dump/t1dump_o}
+\hfill\break
+\hrule\vskip3mm\small
+\caption{\label{figure:stroking1}\fbox{A} Character ``8'' from font
+ ComputerModern Roman. The arrows indicate the direction of the paths. From
+ the outer subpath it follows that the inner region will be filled (left of the
+ path). From this massive black region, the holes are cut by means of the two
+ inner subpaths (and their direction). \fbox{B} The principle of creating a
+ stroked character by filling a newly created set of subpaths which surround
+ the original path in an appropriate manor.}
+\end{figure}
+We find three subpaths which by means of their direction relations yield the
+filled character.
+
+When talking about {\em stroking}, we mean tracing a pen of finite width along
+these subpaths. When doing so, a new finite (more complex) region of ink is
+built. Actually we can consider this filled region being the result of filling
+a newly created path that consists of two subpaths surrounding the original
+path and having appropriate directions. These newly created subpaths are
+referred as the {\em right path} and the {\em left path}.
+Figure~\ref{figure:stroking1} \fbox{B} illustrates this idea for the
+character ``o''. The original path is represented by dashed curves whereas
+left paths and right paths are shown as solid curves. The respective
+directions are indicated by arrows.
+
+Now, what are the steps required to compute a right path or left path from a
+given path and given a certain strokewidth? Firstly, for each path segment two
+{\em parallel paths} the right and the left path, located half the strokewidth
+right and left of the original path have to be computed. This is shown for the
+character ``t'' in Figure~\ref{figure:stroking2}, \fbox{A}.
+\begin{figure}[t]
+\hfill
+\fbox{A}\includegraphics[scale=0.5]{t1dump/t1dump_t_1}
+\hfill
+\fbox{B}\includegraphics[scale=0.5]{t1dump/t1dump_t_2}
+\hfill\break
+\hrule\vskip3mm\small
+\caption{\label{figure:stroking2}\fbox{A} Character ``t'' from font
+ ComputerModern Roman. The original path is shown in a thick dashed
+ style. Each segment is surrounded by a parallel path to the right hand side
+ and a parallel path to the left hand side.
+ \fbox{B} Required additional connection segments in order to complete the
+ outline path.}
+\end{figure}
+
+In particular, it turns out that in order to connect two parallel right or
+left paths of two neighboring original path segments, additional path segments
+are required. Therefore, in a second step, these parallel path
+segments---which in general may be disjoint---have to be connected
+appropriately. These additional path segments are shown in \fbox{B} of the
+figure. We term these path segments {\em Prolongation Segments}. They
+are always built as straight lines. It is also obvious, that for convex edges,
+prolongation actually is what it indicates, and for concave edges, some trick
+must be applied so that prolongation yields a path that actually {\em
+ shortens} the respective parallel path segments.
+
+\subsection{Computation of Parallel Paths}
+\label{parallelpaths}%
+For straight lines, the notion of a parallel path in distance $w/2$ immediately
+becomes evident, but what about Bezier curves? Let us define the parallel of a
+curve as the infinite set of points, that results from tracing along the
+curve and for each point of the curve computing the point which in direction
+orthogonally to the curve's tangent at the respective location is just the
+distance $w/2$ apart.
+
+The {\em parallel curve} resulting from the principle above actually no longer
+is a third order Bezier curve. But if a few additional constraints hold, it
+can be approximated quite well by such a third order Bezier curve:
+\begin{itemize}
+\item The curvature should not exceed an angular range of 90 degrees. This
+ condition automatically is fulfilled for Type 1 fonts which adhere to the
+ Adobe recommendations.
+\item The strokewidth $w$ the curve should be drawn width is small compared to
+ the extension and the curvature of the curve. This principle usually is
+ fulfilled by nature because tracing a character outline path with a very
+ thick pen won't lead to a good representation of the character.
+\end{itemize}
+In the following, we will describe how to compute a parallel Bezier curve
+defined by four points $\vec{A}'$, $\vec{B}'$, $\vec{C}'$ and $\vec{D}'$,
+given an original Bezier curve defined by four points $\vec{A}$, $\vec{B}$,
+$\vec{C}$ and $\vec{D}$ and a strokewidth $w$. The computation of parallel
+straight lines results as the special case of only respecting the points
+$\vec{A}$ and $\vec{D}$ from these considerations.
+
+Figure~\ref{figure:stroking3} represents the basis of our discussion.
+\begin{figure}[t]
+\centerline{\includegraphics[scale=0.7]{t1dump/parallelpath_sk}}
+\hrule\vskip3mm\small
+\caption{\label{figure:stroking3}Construction of parallel Bezier path
+ segments. The original curve is shown in dashed style and the light gray
+ area indicates the thick Bezier curve segment that later will result from
+ filling between left and right parallel path. Furthermore, important
+ intermediate points are shown. A detailed discussion is given in the text.}
+\end{figure}
+It shows the original mathematically thin Bezier segment defined by the points
+$\vec{A}$, $\vec{B}$, $\vec{C}$ and $\vec{D}$ in dashed style. The
+counterpart of $\vec{A}$ in the parallel path follows from simple geometric
+considerations, as illustrated for the point $\vec{A}'$. It lies half the
+strokewidth $w$ away from $\vec{A}$ and the direction is determined by the
+location of point $\vec{B}$. For the two coordinates of $\vec{A}'$ we find
+\begin{equation}
+ \label{eq:eq1}
+ A'_x = A_x + \frac{w}{2}\frac{B_y - A_y}{|\vec{B} - \vec{A}|}
+\end{equation}
+and
+\begin{equation}
+ \label{eq:eq2}
+ A'_y = A_x - \frac{w}{2}\frac{B_x - A_x}{|\vec{B} - \vec{A}|}.
+\end{equation}
+Corresponding equations can be derived for the point $\vec{D}'$, so that, up to now, we
+are able to compute parallel straight line segments. It remains to compute two
+control points, $\vec{B}'$ and $\vec{C}'$, in a way that the resulting Bezier
+curve appears as parallel to the original curve in the sense defined above.
+
+In order to make the path at point $\vec{A}'$ actually parallel to the orginal
+path at $\vec{A}$, we require $\vec{B}' - \vec{A}'$ to be parallel to $\vec{B}
+- \vec{A}$. From this we can derive an equation that expresses the fact that
+$\vec{B}'$ lies somewhere on the straight line that runs through point
+$\vec{A}'$ and has the direction $\vec{B} - \vec{A}$, i.e.,
+\begin{equation}
+ \label{eq:eq3}
+ \vec{B}' = \vec{A}' + \mu_B (\vec{B} - \vec{A}),
+\end{equation}
+and correspondingly
+\begin{equation}
+ \label{eq:eq4}
+ \vec{C}' = \vec{D}' + \mu_C (\vec{C} - \vec{D})\phantom{,}
+\end{equation}
+for point $\vec{C}'$. Here, $\mu_B$ and $\mu_C$ are two positive quantities, whose
+exact values are still to be determined.
+
+In order to compute $\mu_B$ and $\mu_C$, we consider a third point on the
+curve. Using a well-known algorithm that iteratively approximates a Bezier
+curve via straight line segments, we can easily determine the coordinates of
+the point that---in the parameter equation $f(t)$ of a Bezier
+curve---corresponds to the parameter $t=1/2$. It can be considered as a {\em
+ middle point} of the curve segment. In Figure~\ref{figure:stroking3}, this
+point is named $\vec{P}_6$. It can be computed by computing some intermediate
+points:
+\begin{equation}
+ \label{eq:eq5}
+ \vec{P}_1 = \frac{1}{2} ( \vec{A} + \vec{B} )
+\end{equation}
+\begin{equation}
+ \label{eq:eq6}
+ \vec{P}_2 = \frac{1}{2} ( \vec{B} + \vec{C} )
+\end{equation}
+\begin{equation}
+ \label{eq:eq7}
+ \vec{P}_3 = \frac{1}{2} ( \vec{C} + \vec{D} )
+\end{equation}
+\begin{equation}
+ \label{eq:eq8}
+ \vec{P}_4 = \frac{1}{2} ( \vec{P}_1 + \vec{P}_2 )
+\end{equation}
+\begin{equation}
+ \label{eq:eq9}
+ \vec{P}_5 = \frac{1}{2} ( \vec{P}_2 + \vec{P}_3 )
+\end{equation}
+and finally
+\begin{equation}
+ \label{eq:eq10}
+ \vec{P}_6 = \frac{1}{2} ( \vec{P}_4 + \vec{P}_5 )
+ = \frac{1}{8} ( \vec{A} + 3 \vec{B} + 3 \vec{C} + \vec{D} )
+\end{equation}
+Using the same geometrical considerations as in Eqs.~\ref{eq:eq1} and
+\ref{eq:eq2}, we can now compute a unit vector, $\vec{n}_6$, perpendicular to
+the curve at $\vec{P}_6$ and obtain
+\begin{equation}
+ \label{eq:eq11}
+ n_{6x} = \frac{ P_{5y} - P_{4y} }{\sqrt{(P_{5x}-P_{4x})^2 + (P_{5y}-P_{4y})^2}}
+\end{equation}
+\begin{equation}
+ \label{eq:eq12}
+ n_{6y} = - \frac{ P_{5x} - P_{4x} }{\sqrt{(P_{5x}-P_{4x})^2 + (P_{5y}-P_{4y})^2}}
+\end{equation}
+$\vec{P}'_6$ can now be computed as
+\begin{equation}
+ \label{eq:eq13}
+ \vec{P}'_6 = \vec{P}_6 + \vec{N}_6,
+\end{equation}
+where $\vec{N}_6 = \frac{w}{2} \vec{n}_6$, i.e., the vector orthogonal to the
+curve at $\vec{P}_6$ with a length of half the strokewidth $w$. As before, we
+have to require that the slope of the curve $\vec{P}_6$ equals the one at
+$\vec{P}'_6$, i.e., with respect to Figure~\ref{figure:stroking3} we find
+\begin{eqnarray*}
+ \vec{P}'_5 - \vec{P}'_4 & = & \nu \left( \vec{P}_5 - \vec{P}_4 \right) \\
+ \frac{\vec{P}'_2 + \vec{P}'_3}{2} -
+ \frac{\vec{P}'_1 + \vec{P}'_2}{2}
+ & = & \nu \left(
+ \frac{\vec{P}_2 + \vec{P}_3}{2} -
+ \frac{\vec{P}_1 + \vec{P}_2}{2} \right) \\
+ \frac{\vec{C}' + \vec{D}'}{2} -
+ \frac{\vec{A}' + \vec{B}'}{2}
+ & = & \nu \left(
+ \frac{\vec{C} + \vec{D}}{2} -
+ \frac{\vec{A} + \vec{B}}{2} \right)
+\end{eqnarray*}
+and hence finally
+\begin{equation}
+ \label{eq:eq14}
+ \vec{C}' + \vec{D}' - \vec{A}' - \vec{B}' = \nu \left(
+ \vec{C} + \vec{D} - \vec{A} - \vec{B} \right)\;.
+\end{equation}
+We have thus expressed the slope condition at $\vec{P}_6$ in terms of the
+characteristic points of a Bezier curve and a factor, $\nu$, still to be
+determined (cf.~Eqs.~\ref{eq:eq3} and \ref{eq:eq4}). On the way to
+Eq.~\ref{eq:eq14}, we made use of the well-known geometrical relations
+\hbox{Eqs.~\ref{eq:eq5} -- \ref{eq:eq9}}.
+
+Based on the same considerations that led to Eq.~\ref{eq:eq10}, we can write
+the corresponding equation for the point $\vec{P}'_6$:
+\begin{equation}
+ \label{eq:eq15}
+ \vec{P}'_6 = \frac{1}{2} ( \vec{P}'_4 + \vec{P}'_5 )
+ = \frac{1}{8} ( \vec{A}' + 3 \vec{B}' + 3 \vec{C}' + \vec{D}' )
+\end{equation}
+Exploiting Eq.~\ref{eq:eq13} and solving for $\vec{C}'$, we can reorganize
+Eq.~\ref{eq:eq15}:
+\begin{equation}
+ \label{eq:eq16}
+ \vec{C}' = \frac{8 (\vec{N}_6 + \vec{P}_6) - \vec{A}' - \vec{D}'}{3} -
+ \vec{B}'
+\end{equation}
+From this equation, we are able eliminate $\vec{B}'$ by substituting the
+transformed slope condition for point $\vec{P}'_6$ (Eq.~\ref{eq:eq14}). We
+obtain
+\begin{eqnarray}
+ \nonumber
+ \vec{C}' &=& \frac{8 (\vec{N}_6 + \vec{P}_6) - \vec{A}' - \vec{D}'}{3}
+ + \left[ \nu \left( \vec{C} + \vec{D} - \vec{A} - \vec{B} \right)
+ - \vec{C}' - \vec{D}' + \vec{A}' \right] \\
+ \nonumber
+ 2\, \vec{C}' &=& \frac{8 (\vec{N}_6 + \vec{P}_6) - \vec{A}' - \vec{D}'}{3}
+ + \vec{A}' - \vec{D}' +
+ \nu \left( \vec{C} + \vec{D} - \vec{A} - \vec{B}\right) \\
+ \label{eq:eq17}
+ \vec{C}' &=&
+ \underbrace{\frac{4 (\vec{N}_6 + \vec{P}_6) + \vec{A}' - 2 \vec{D}'}{3}}
+ _{\mbox{$\vec{l}_C$}}
+ + \frac{\nu}{2} \underbrace{\left( \vec{C} + \vec{D} - \vec{A} -
+ \vec{B}\right)}
+ _{\mbox{$\vec{d}_C$}} \,.
+\end{eqnarray}
+Here, for the sake of brevity, we introduced a location vector, $\vec{l}_C$,
+and a direction vector, $\vec{d}_C$, which together with the parameter $\nu$
+define the point $\vec{C}'$.
+
+Considering Eqs.~\ref{eq:eq4} and \ref{eq:eq17}, we finally found two
+independent relations for $\vec{C}'$, that linearly depend on two quantities,
+$\mu_C$ and $\frac{\nu}{2}$. Therefore, by substituting the right hand sides
+of (\ref{eq:eq4}) and (\ref{eq:eq17}), we obtain the following $2 \times
+2$ system of linear equations:
+\begin{equation}
+ \label{eq:eq18}
+ \left[
+ \begin{array}{cc}
+ (\vec{C}-\vec{D}) & \vec{d}_C
+ \end{array}
+ \right]
+ \left(
+ \begin{array}{cc}
+ \mu_C \\
+ \nu/2
+ \end{array}
+ \right)
+ = \left( \vec{l}_C - \vec{D}' \right)
+\end{equation}
+Formally, all vectors appearing in this equation are column vectors. The
+solution of the system can be written as
+\begin{equation}
+ \label{eq:eq19}
+ \left(
+ \begin{array}{cc}
+ \mu_C \\
+ \nu/2
+ \end{array}
+ \right)
+ =
+ \left[
+ \begin{array}{cc}
+ (\vec{C}-\vec{D}) & \vec{d}_C
+ \end{array}
+ \right]^{-1}
+ \left( \vec{l}_C - \vec{D}' \right)\, .
+\end{equation}
+Once $\vec{C}'$ has been computed, it is easy to compute $\vec{B}'$, by making
+use of Eq.~\ref{eq:eq16}.
+
+A few remarks about the approach described above are appropriate.
+\begin{itemize}
+\item It is also possible to first compute the point $\vec{B}'$ and then use
+ Eq.~\ref{eq:eq16} to compute $\vec{C}'$.
+\item The numerical stability at the respective end of the curve determines
+ the preference of which point to compute first. A criterion for the
+ numerical stability is the absolute value of determinant of the $2 \times 2$
+ matrix in Eq.~\ref{eq:eq18}.
+\item This determinant may become zero in which case the curve transforms into
+ a straight line. These cases must be treated extraordinarily.
+\item There are a number of further exceptional cases, e.g., if point $\vec{C}$
+ equals $\vec{D}$. Then the slope at this end of the curve is not enforced by
+ point $\vec{C}$.
+\item A good solution, that is, a {\em parallel curve}, will only result, if
+ the set of assumptions discussed previously holds. If the resulting curve
+ does not appear {\em parallel} to the original curve, the parallel curve
+ cannot be approximated by a third order Bezier spline.
+\end{itemize}
+
+
+\subsection{Connection of Path Segments and Prolongation}
+\label{connectingpaths}
+In order to actually obtain delimiting paths for character outlines, the
+parallel paths have to be connected to a continuous path. This raises the
+problem of line joining. When connecting two neighboring parallel path
+segments, we have to distinguish between two qualitatively different
+situations.
+\begin{enumerate}
+\item Convex Corner\\
+ When tracing along two neighboring parallel path segments, we turn to the
+ left and a convex corner appears. In these cases, we prolongate the end of
+ the first path and the beginning of the second path using straight lines and
+ compute an intersection between these prolongation segments. The resulting
+ lengths of both prolongation segments will be positive.
+\item Concave Corner\\
+ When tracing along two neighboring parallel path segments, we turn to the
+ right and a concave corner results. In these cases, the two neighboring
+ parallel path segments intersect by nature and actually would have to be
+ trimmed to their intersection point. Trimming on the other hand would make
+ it impossible to feed the resulting curve in the standard format into the
+ rasterizer. We therefore use a trick that saves us computing an intersection
+ and recomputing the Bezier control points. From the ideal end point of the
+ first parallel path we insert a straight prolongation to the connection
+ point of the original path segments and a second straight prolongation
+ segment from there to the starting point of the second parallel path
+ segment. Then, the area left of the path is ensured to be within the extents
+ that finally are to be filled with ink.
+\end{enumerate}
+We will now explain this principle using the example shown in
+Figure~\ref{figure:stroking4}.
+\begin{figure}[t]
+\centerline{\includegraphics[scale=1.1]{t1dump/t1dump_B}}
+\vskip3mm\hrule\vskip3mm\small
+\caption{\label{figure:stroking4}A small excerpt at the middle right from the
+ character ``B'' of ComputerModern Roman. The ideal mathematical outline of
+ the filled character is shown in thick dashed style. Left and right path of
+ the character's outline representation are shown in medium solid
+ style. Prolongation is indicated by large dashes of medium thickness.}
+\end{figure}
+The interesting part is in the middle right. The original path---shown in bold
+dashed style---steps into the figure in the lower right as the end of a curve
+segment $p_1$. At the following connection point, the path strongly turns to
+the right so that a concave corner results and continues with a further curve
+segment $p_2$. This path is now to be surrounded in a symmetrical manner by
+one right and one left path. For $p_1$, we find the right path as a parallel
+curve segment above the original path. It has been computed as described in
+the previous section. For $p_2$, the right path is a parallel curve segment
+located in an appropriate distance below $p_2$. The two neighboring right path
+segments are disjoint because of the concavity of the resulting corner. Hence,
+rule 2 from above applies in order to connect them using straight prolongation
+lines, in the figure shown in wide dashes of a medium linewidth: From the end
+of right path 1, we prolongate to the point where the original segments $p_1$ and
+$p_2$ join, and from there, a second prolongation to the beginning of right
+path 2 is inserted. The direction is indicated by arrows. Obviously, even the
+right path alone produces a closed region in this case, but this does not
+cause problems here.
+
+The left path runs into the direction opposite to the original path. By
+nature, the curvature at the point under consideration now is convex. Hence,
+according to rule 1, the neighboring left paths' segments are prolongated to
+their common intersection point, respecting the ending direction of left
+path 1 and the starting direction of left path 2.
+
+The kind of corner at two neighboring parallel path segments $p_1$ and $p_2$
+can be computed analytically. Let $\vec{T}_1$ be the tangent vector at the end
+point of $p_1$ and $\vec{T}_2$ be the tangent vector at the starting point of
+$p_2$. Assuming that both $\vec{T}_1$ and $\vec{T}_2$ are column vectors, we
+can use the determinant of the square matrix constructed by these vectors to
+determine the corner type:
+\begin{equation}
+ \label{eq:eq20}
+ d =
+ \left|
+ \begin{array}{cc}
+ \vec{T}_1 & \vec{T}_2
+ \end{array}
+ \right|
+\end{equation}
+If $d<0$, the corner type is concave whereas for $d>0$, the corner type is
+convex. For the special case $d=0$, the slope at the joining point is
+continuous, so that effectively $\vec{T}_1$ and $\vec{T}_2$ linearly depend on
+each other. For those cases, prolongation is not required at all, because if
+the neighboring segments in the original path join, neighboring segments in the
+left and right path will do so too.
+
+The kind of joining lines described above is known as {\em mitered line
+ joining}. \tonelib\ does not impose a limit on the width of mitered corners,
+so that the operation \tonelib\ implements is identical to what PostScript
+does by default, i.e., using a line join type of 0 and an infinite miter
+limit.
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/intro.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/intro.tex
new file mode 100644
index 00000000000..6d290fd89c4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/intro.tex
@@ -0,0 +1,217 @@
+%----------------------------------------------------------------------------
+% ----- File: intro.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2001-06-03
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library License. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independent from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{Introduction}
+\subsection{What Does \tonelib\ Do?}
+\tonelib\ is a library written in the C programming language
+allowing a programmer to generate bitmaps from Adobe (TM) Type 1 fonts
+quite easily. These bitmaps are returned in a data structure
+with type {\ttfamily GLYPH}. This special
+{\ttfamily GLYPH}-type is also used in the X11 window system to
+describe character bitmaps. It contains the bitmap data as well as
+some metric information. But \tonelib\ is in itself entirely independent
+of the X11-system or any other graphical user interface.
+
+Given that the X11-system is probably the most frequently used
+window system in the UNIX-world, and furthermore assuming that most
+graphical applications run under window systems, it appears that
+\tonelib\ implements functionality already provided by the
+graphical user interface,
+the X11-system. Thus the question arises: Why not use X11 directly for
+rastering characters? Well, the answer is quite simple; the X11 Font
+machinery appears to be too {\em static} in order to use it for
+certain purposes. Moreover X11-calculations and positioning of
+characters are based on bitmap
+dimensions and are thus subject to error accumulation.
+
+Here is a list of features which are supported in the current release
+of \tonelib.
+\begin{itemize}
+\item Rasterizing is done as characters get requested. The X11-server,
+ in contrast,
+ rasters a font completely at a given size
+ when it is loaded. {\em Rastering on demand} saves time when the
+ font is loaded the first time and saves memory since often only the
+ alphabetic letters and a few other characters are needed.
+\item The encoding mechanism of PostScript is fully supported. The
+ user may use the fonts' internal or some other encoding.
+ Additional encoding files can be loaded at runtime and fonts can be
+ reencoded at runtime. The syntax of encoding files is
+ straight-forward and simple.
+\item The library makes use of Adobe Font Metric data in the form of
+ AFM files. This may seem a disadvantage, but in order
+ to make decent typesetting possible, some more information than that
+ contained in Type 1 font files is needed. Besides, Adobe makes
+ these AFM files freely available on their ftp-server for all
+ registered Type 1 fonts.
+\item In case AFM files are missing, \tonelib\ is able to generate
+ metrics information in charspace accuracy by rastering each
+ character at 1000~bp.
+\item In addition to generation of character bitmaps, there is a way
+ to directly raster strings of any length in a given font.
+ The space-width may explicitly be corrected by the user. This
+ may be needed by word processing applications.
+\item Strings may be rastered
+ optionally using pairwise kerning information from
+ the AFM file. Kerning is an important feature of good
+ quality typesetting.
+ Kerning information can also be requested by the user without
+ rasterization.
+\item Ligature information is made available to the user in an
+ efficient way. Use of Ligatures is another characteristic of good
+ typesetting. As to my
+ knowledge, only \TeX\ and all related macro-packages are able to
+ handle ligatures in a natural and efficient way.
+\item Rotation and arbitrary transformation on the fly is supported.
+\item \tonelib\ supports antialiasing. In this case, a pixel is
+ represented as a byte, word or double word. Antialiasing is
+ implemented by subsampling with factor 2 or 4 alternatively.
+ If you use the X11-interface introduced in \tonelib\ V.\ 0.3-beta,
+ even colored antialiasing between any pair of colors is provided in a
+ completely transparent way.
+\item In addition to transformation on the fly, two transformation
+ types---{\em slanting} and {\em extending}---are possible on the fontlevel
+ including bitmap caching. Horizontal expansion of fonts is fully supported
+ and since version 0.3-beta also {\em slanting} of fonts is nearly fully
+ supported. For restrictions and drawbacks of slanting fonts see
+ \ref{transformations} on page \pageref{transformations}.
+\item Paths, the library searches for the different needed file types
+ are specified at runtime by means of a
+ configuration file. They may thus be changed without needing to
+ recompile the application. For example, the directories of the
+ X11-system's Type 1 font files may be specified there in order to use
+ these fonts with the library. A user may have his own configuration file and
+ as a fallback/default there is a system wide configuration file. This should
+ be setup when the library is installed.
+\item Since of version 0.3-beta a special set of functions is provided which
+ implements a more comfortable X11-interface. This is due to the fact that
+ X11 is the only standard window system in the UNIX world. However, as before
+ \tonelib\ may be compiled and used without even having X11 installed.
+\item Some decorations like {\em underlining} are supported by simply setting
+ a flag for the rastering functions.
+\item {\em Right To Left} typesetting is supported.
+\item Font subsetting is easily achieved using a high level function. This
+ makes it easier for application to efficiently export Postscript files.
+\item Composite character information can be retrieved. Moreover, \tonelib\
+ transparently handles and realizes composite character definitions from AFM
+ files.
+\end{itemize}
+There are also some problems and features not yet
+implemented, but likely to be implemented in the future.
+The main problem up to now is:
+\begin{itemize}
+\item The font cache isn't a font cache really. At this time all
+ bitmaps are saved by always allocating more memory from the
+ system. No automatic removal of bitmaps no longer needed is
+ done. However, the user has the possibility of explicitly
+ removing data, if he thinks it is not needed anymore.
+\end{itemize}
+
+\subsection{Copyrights and Credits}
+There are some copyrights on parts of the library and there are some
+programmers (or corporations) which I want to give credit.
+The library uses:
+\begin{itemize}
+\item[--] all internal parts of the X11-rasterizer donated to
+ the X11-project by IBM. This rasterizer does the {\em real} hard
+ work of scan-conversion.
+\item[--] the modifications to the rasterizer done by Piet
+ Tutelaers in his ps2pk-package. The main purpose was decoupling the
+ sources from the X11-system sources.
+\item[--] the \verb+parse_AFM+ software which was made freely available
+ by Adobe. This is used to parse the AFM files (what
+ a surprise) and to generate the data structures the information is
+ saved in.
+\end{itemize}
+
+Raph Levien (\verb+raph@acm.org+) contributed an algorithm for
+sampling down non-antialiased bitmaps to antialiased bitmaps in a very
+efficient manor. This makes antialiasing a lot faster.
+
+Fred L.\ Drake, Jr. (\verb+fdrake@acm.org+) wrote a Python interface to
+\tonelib, which is distributed with \tonelib. This wrapper is called
+\verb+t1python+ and allows Python-programmers to use Type 1 fonts. I
+can not tell anything more on this topic since I do not know the
+Python language. All questions concerning the Python interface should
+thus be addressed to Fred L.\ Drake, Jr.
+
+Evgeny Stambulchik (\verb+fnevgeny@plasma-gate.weizmann.ac.il+), maintainer of
+the \verb+grace+-project---a descendent of \verb+xmgr+, never gets tired of
+finding and reporting (and fixing) bugs in \tonelib. Other members of this
+project spent time in porting \tonelib\ to further systems:
+\begin{itemize}
+\item Ed Vigmond (\verb+vigmonde@IGB.UMontreal.CA+): IRIX-port,
+\item John Hasstedt (\verb+John.Hasstedt@sunysb.edu+): VMS-port,
+\item Alexander Mai (\verb+st002279@hrzpub.tu-darmstadt.de+): OS/2-port.
+\end{itemize}
+
+Hirotsugo Kakugawa (\verb+h.kakugawa@computer.org+) added support for GNU
+\verb+libtool+ to \tonelib.
+
+David Huggins-Daines (\verb+bn711@freenet.carleton.ca+) spent effort in
+finding memory leaks and maintains a Debian-package of \tonelib.
+
+
+\begin{center}
+ \Large Thanks to all these people \\
+ and to all those contributors not mentioned here!
+\end{center}
+
+\subsection{Motivation}
+The idea of writing this library was due to the SciTeXt-project which
+was founded in 1996. They needed a font raster system with some more
+functionality than X11 provided. You may find that some things (for
+example the format of the font database file) is really closely
+related to SciTeXt. In February '{}97 the SciTeXt developers decided to
+migrate from C to Java and did not need a font rasterizer any more. Since I
+thought there could be other applications for this library I continued the
+work on it and voila.
+
+I have removed the history description which followed at this place in some
+previous versions. The history can be roughly viewed in the file \verb+Changes+
+which is located in the toplevel directory of the distribution.
+
+
+\subsection{How to Reach the Author/How to Get \tonelib}
+If you have questions, comments or bug reports, you can reach me by
+eMail. The address is
+\begin{center}
+\verb+Rainer.Menzner@web.de+
+\end{center}
+If you have bug-reports, it would be best if you could reproduce the error
+using the test program \verb+xglyph+ (see \ref{xglyph}).
+
+\tonelib\ is available by anonymous ftp as\\[5mm]
+\verb+ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-+$x.y[.z]$\verb+.tar.gz+
+\\[5mm]
+Here, $x.y.z$ is the version identifier and the brackets around $z$ indicate
+that this entry is optional.
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.eps
new file mode 100644
index 00000000000..9b72ea6aa86
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.eps
@@ -0,0 +1,519 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.05 by Peter Kirchgessner
+%%Title: /home/rainer/tmp/manipulate.eps
+%%CreationDate: Thu Apr 15 20:22:23 1999
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 440 186
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+5 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228 14.173228 translate
+% Translate to begin of first scanline
+0.000000 170.919327 translate
+425.196850 -170.919327 scale
+% Variable to keep one line of raster data
+/scanline 76 string def
+% Image geometry
+607 244 1
+% Transformation matrix
+[ 607 0 0 244 0 0 ]
+{ currentfile scanline readhexstring pop }
+image
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff807fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff807fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff807fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff907fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff907fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff907fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff107fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff187fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff387fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff387fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff387fffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3cffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3effffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3effffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3effffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffe7e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffff07e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7ffffffc07e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7ffffffc07e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffff1807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7ffffc1807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffe01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffc01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffc01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffc01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffc01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7bffc01807e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc63ffc01827e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc03ffc01a37e
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7ffc03ffc01a3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff803ffc05a3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ff003ffc05a3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ff003ffc07e3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01fe003ffd07e3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01fe003ffd07e3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fe003fff87e3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fe003fff87e3fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00fe003fff87e7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00fe003fff87e7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00fe003fff87c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffe3fffffc007e01ffff87c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffc3fffff8307e07ffff83c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffc1fffff8787e47ffff83c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff81fffff8787fc7ffff83c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff80fffff8787fc7ffff83c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffbff00fffff8fc3fc7ffffc3c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffff9ff00fffff8fc3fc7ffffc3c7fe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff78ff00fffff0fc3fc7ffffc3cffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffe787e007ffff0fc3fc7ffffc3cffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffe787e007ffff0fe3fc7ffffc38ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffc707e007ffff1fe3fc7ffffc38ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffc707e187ffff1fe3fc7ffffc38ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe1ffc707e387ffff1fe3fc7ffffc38ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffc1ff8707c3c3ffff1fe3fc7ffffc18ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ff8707c7c3ffff1fe1fc7ffffc18ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ff0707c7c3ffff1fe1fc7ffffe18ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff007f0607c7e3fffe1fe1fc7ffffe19ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdfffffffffffffffffffffffff3ff007f0607c7e3fffe3ff1fc7ffffe19ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff9ffffffffffffffffffffffffe3fe007e0607c7e3fffe3ff1fc7ffffe19ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff1ffffffffffffffffffffffffe3fe007e06078fe3fffe3ff1fc7ffffe11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffe1ffffffffffffffffffffffbfc3fe003e06078fe3fffe3ff1fc7ffffe11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffc1ffffffffffffffffffffff3f83fe003e06078fe3fffe3ff1fc7ffffe11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81fffffffffffffffffffffe3f03fc183e04078ff3fffe3ff1fc7ffffe11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81fffffffffffffffffffffc3f03fc3c3ec4078ff1fffe3ff1fc7ffffe11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81fffffffffffffffffffffc3f03fc7c3fc4078ff1fffe3ff1fc7fffff11ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81ffffffffffffffffffc3f83f03fc7c3fc4278ff1fffe3ff1fc7fffff01ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81ffffffffffffffffff00f03f03fcfe3fc4779ff1fffe3ff1fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffff81fffffffffffffffffe00f03f03f8fe3fc4ff9ff1fffe3ff1fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff1fffffffffffffffffc00f03f03f8fe3fc0ff1ff1fffe3ff0fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff1fffffffffffffffffc00f03f03f8fe3fc1ff1ff1fffe3ff8fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff1fffffffffffffffff800f03f03f8fe3fc1ff1ff1fffe7ff8fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff1fffffffffffffc7ff800f03f03f8fe1fc3ff1ff1fffc7ff8fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+efffffffffff1fffffffffffff03ff800f03fe3f8fe1fc3ff1ff1fffc7ff8fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+cfffffffffff0fffffffffffff01ff000f03fe3f8fe1fc3ff1ff1fffc7ff8fc7fffff03ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+8fffffffffff0ffffffffffffe00ff0f0f03fe3f8fe1fc3ff1ff1fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0fffffffffff0ffffffffffffe00fe0f8fe3fe3f8ff1fc3ff1ff1fffc7ff8fc7fffff87ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+0fffffffffff0ffffffffffffc00fe1f8fe3fe3f8ff1fc7ff1ff1fffc7ff8fc7fffff87ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+0ffffffff3ff0ffffffffffffc00fe3f8fe3fe3f8ff1fc7ff1ff1fffc7ff8fc7fffff87ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+0ffffffff3ff0ffffffffffffc00fe3f8fe3fe3f8ff1fc7ff1ff1fffc7ff8fc7fffff87ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+0ffffffff3ff0ffffff0fffff870fc3f8fe3fe3f8ff1fc7ff3ff1fffc7ff8fc7fffff87ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffc
+0ffffffff3ff0fffffe07ffff870fc7f8fe3fe3f8ff1fc7ff3ff1fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffc
+8ffffffff3ff0fffffe07ffff8f8fc7f8fe3fe3f8ff1fc7ff3ff1fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7ffff
+8ffffffff3ff0fffffc03ffff8f8fc7f8fe3fe3f8ff1fc7ff3ff1fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffff
+8ffffffff3ff0fffffc03ffff9f8fc7f8fe3fe3fbff1fc7ff3fc1fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffff
+8ffffffff3ff0f8fff803ffff1f8fc7f8fe3fe3ffff1fc7fe3801fffc7ff8fc7fffffc3ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffff
+8ffffffff3ff0f07ff801ffff1f8f8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffff
+8ffffffff3ff0e07ff041ffff1f8f8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffff
+8ffffffff3ff0e03ff0e1ffff1f8f8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ffff
+8fffffffe3ff0c03ff1f1ffff1f8f8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87f9ff
+87ffffffe3ff0c03ff1f0ffff1fcf8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87f9ff
+87ffffffe3ff0803fe3f8ffff1fcf8ff8fe3fe3ffff1fc7fe0001fffc7ff8fc7fffff83ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff9ff
+87ffffffe30f0981fe3f8ffff1fcf8ff8fe3fe3fffe1fc7fe0001fffc7ff8fc7fffff81ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+87ffffffe00f01c1fe3f8ffff1fcf9ff8fe3fe3fffc1fc7fe0001fffc7ff8fc7fffff81ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+87ffffffc00f03e1fe3f8ffff1fff1ff8fe3fe3fffc1fc7fe0001fffc7ff8fc7fffff81ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+87ffffff800f03e1fe7f8ffff1fff1ff8fe3fe3fff81fc7fe001ffffc7ff8fc7fffff01ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+87c7ffff000f07e1fc7fcffff1fff1ff8fe3fe3fff01fc7fe07fffffc7ff8fc7fffff01ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+8783ffff000f07f1fc7fcffff1fff1ff8fe3fe3ffe01fc7fe3ffffffc7ff8fc7fffff01ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ff
+8703ffff007f0ff1fc7fc7fff1fff1ff8fe3fe3ffe01fc7fe3ffffffc7ff8fc7fffff01ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ff
+8601ffff03ff0ff1fc7fc7fff1fff1ff8fe3fe3ffc01fc7fe3ffffffc7ff8fc7fffff01ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ff
+8601ffffe3ff1ff1fc7fc7fff0fff1ff8fe3fe3ffc01fc7fe3ffffffc7ff8fc7fffff11ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ff
+8401ffffe3ff1ff1fc7fc7fff0fff1ff8fe3fe3ff801fc7fe3ffffffc7ff8fc7fffff11ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff187
+80e0ffffe3ff1ff1fcffc7fff0fff1ff8fe3fe3ff001fc7fe3ffffffc7ff8fc7fffff30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfe007
+81e0ffffe3ff1ff1fcffc7fff07ff1ff8fe3fe3ff021fc7fe3ffffffc7ff8fc7fffff30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffff8fc007
+81f0ffffe3ff1ff1f8ffc7fff07ff1ff8fe3fe3fe061fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffffffffff0f8007
+83f0ffffe3ff1ff1f8ffc7fff03ff1ff8fe3fe3fe061fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffffffe70f8007
+83f8ffffe3ff1ff1f8ffc7fff01ff1ff8fe3fe3fe0e1fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffffffffffc060f807f
+87f8ffffe3ff1ff1f8ffc7fff81ff1ff8fe3fe3fc1e1fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffffffffffc040f91ff
+87f8ffffe3ff1ff1f8f807fff80ff1ff8fe3fe3fc1e1fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffffffff8fc040ff1ff
+8ff8ffffe3ff1ff1f80007fff80ff1ff8fe3fe3fc3e1fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffff9f8fc040ff1ff
+8ff8ffffe3ff1ff1f80007fff807f1ff8fe3fe3f83e1fc7fe3ffffffc7ff8fc7ffffe30ffe
+ffffffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffe01f8fd1c0ff1ff
+8ff8ffffe3ff1ff1f80007fffc07f1ff8fe3fe3f87e1fc7fe1ffffffc7ff8fc7ffffe30ffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01f0ff3c0ff1ff
+8ff8ffffe3ff1ff1f80007fffc07f1ff8fe3fe3f87e1fc7fe1ffffffc7ff0fc7ffffe787fe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0fdffc01f0ff3f8ff1ff
+8ff8ffffe3ff1ff1f80007fffe03f1ff8fe3fe3f8fe1fc7fe1ffffffc7ff1fc7ffffe787fe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8003ffc0ff0ff3f8ff1ff
+8ff8ffffe3ff1ff1f80007fffe03f1ff8fe3fe3f8fe1fc7fe1ffffffc7ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003ffd8ff0ff3f8ff1ff
+8ff8ffffe3ff1ff1f807ffffff03f1ff8fe3fe3f0ff1fc7ff1ffffffc3ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffffffffffff1ffe0003fff8ff07f3f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffff01f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffffffffffbc0ffe1807fff8ff07e3f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffff81f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+ffffffffffffffffffffffffffffffffffffffffffffffffdfe3807fc3c3ffff87e47e3f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffff81f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+ffffffffffffffffffffffffffffffffffffffffffffffff9fc3007fc7e3ffff87e47e7f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffffc1f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffffffe1f82383fc7e3ffff87e47e7f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffffe1f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffffe0c1f007c3f8fe1ffff87e47e7f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffffe1f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffc787fe
+fffffffffffffffffffffffffffffffffffffffffffdf8081f00fc3f8ff1ffffc7e47e7f8ff1ff
+8ff8ffffe3ff1ff1f8ffffffffe1f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffffcf83fe
+fffffffffffffffffffffffffffffffffffffffffbf1f8081f01fe3f8ff1ffffc7e63e7f8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff0f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffff8f83fe
+f800001fffffffffffffffffffffffffffff07f803f1fa381fe3fe3f8ff1ffffc7ee3e7f8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff0f1ff8fe3fe3f1ff1fc7ff1ffffffe3ff1fc7ffff8f83fe
+f800001ffffffffff9fffffffffffffff7fe01f803f1fe7b1fe3fe3f8ff1ffffc7ce3c7f8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff0f1ff8fe3fe3f1ff1fc7ff0ffffffe3fe1fc7ffff8fc3fe
+f9fc7f1ffffffffff9fffffffffffff9e1f800f91fe0fe7f1fe3fe3f8ff1ffffc3ce3cff8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff0f1ff8fe3fe3f1ff1fc7ff0ffffffe3fe1fc7ffff8fc3fe
+f9fc7f9ffffffffff9fffffffff07fe1c1f8f87f1fe0fe7f1fe3fe3f8ff1ffffc3ce3cff8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff0f1ff8fe3fe3f1ff1fc7ff0ffefffe1fe3fc7ffff8fc3fe
+f9fc7f9ffffffffff1ffffffffc000c1c1f1fc3f0fe0fe7f1fe3fe3f8ff1ffffc3ce3cff8ff1ff
+8ff8ffffe3ff1ff1f8fffffffff8f1ff8fe3fe3f1ff1fc7ff0ffefffe1fe3fc7ffff8fc3fe
+f9fc7f9ffffffffff1ffffffff80008181e1fe3f0fe0fc7f1fe3fe3f8ff1ffffe3ce3cff8ff1ff
+8ff8ffffe3ff1ff1f87ffffff3f8f0ff8fe3fe3f1ff1fc7ff0ffefffe1fe3fc7ffff8fc3fe
+fffc7ffffffffffff107ffffff1f1ff00de3fe3f0fc8fcff1fe3fe3f8fe3ffffe3ce1cff8ff1ff
+8ff8ffffe3ff1ff1f87ffffff3f8f0ff8fe3fe3f1ff1fc7ff0ffdffff1fe3fc7ffff8fc3fe
+fffc7ffe03f007018007fffffe3f8ff07fe3ff1f8fc87cff1fe3fe3f8fe3ffffe39f1cff8ff1ff
+8ff8ffffe3ff1ff1f87ffffff3f8f0ff8fe3fe3f1ff1fc7ff8ffdffff1fe3fc7ffff8fc3fe
+fffc7ffc01f00601800ffffffe3f8ff0ffc7ff1f8fcc7cff1fe3fe3f87e3ffffe39f18ff8ff1ff
+8ff8ffffe3ff1ff1fc7ffffff3f8f0ff8fe3fe3f1ff1fc7ff87fdffff1fc3fc7ffff1fc1fe
+fffc7ff8f8f61f8ff1fffffffe3f8ff1ffc7ff1f87cc7cff1fe3fe3fc7c3ffffe39f19ff8ff1ff
+8ff8ffffe3ff1ff1fc7ffffff3f8f8ff8fe3fe3f1fe1fc7ff87f9ffff1fc3fc7ffff1fc1fe
+fffc7ff1fc7e0f9ff1fffffffc7f8ff1ffc7ff1f879c78ff1fe3fe3fc3c7ffffe19f19ff8ff1ff
+8ff8ffffe3ff1ff1fc7ffffff3f8f8ff8fe3fe3f1fe1fc7ff87f9ffff0fc3fc7ffff1fc1fe
+fffc7fe3fe7f0f1ff1fffffffc7f8ff1ffc7ff1fc79c79ff1fe3fe3fc187ffffe19f19ff8ff1ff
+8ff8ffffe3ff1ff1fc7ffffff3f9f87f8fe1fe3f1fe1fc7ff87f9ffff0fc7fc7ffff1fc1fe
+fffc7fe3fe3f863ff1fffffffc7f8ff1ffc7ff8fc79e39ff1fe3fe3fe00ffffff19f19ff8ff1ff
+8ff8ffffe3ff1ff1fc3ff7fff3f9f87f8fe1fc3f1fc1fc7ff87f1ffff0f87fc7ffff1fc1fe
+fffc7fe7fe3f867ff1fffffffc3f8ff1ffc7ff8fc79e39ff1fe3fe3fe01ffffff13f09ff8ff1ff
+8ff8ffffe3ff1ff1fc3ff7fff3f1f87f8fe1fc3f0fc1fc7ff83f1ffff0f87f87ffff1b813e
+fffc7fc7fe3fc07ff1fffffffe3f8ff1ffc7ff8fc33e39ff1fe3fe3ff03ffffff13f89ff8ff1ff
+8ff8ffffe3ff1ff1fc3ff7fff3f1f87f8fe1fc3f0f81fc7ff83f1ffff8787e86fffd13803e
+fffc7fc0003fe0fff1fffffffe3f1ff1ffc7ff1fc33e31ff1fe3fe3ff8fffffff13f81ff8ff1ff
+8ff8ffffe3ff1ff1fc3fe7fff3f1f83f8fe1f83f0f81fc7ffc3e1ffff8707e86fffc07803e
+fffc7fc0003fe0fff1fffffffe1e1ff1ffc7ff1fe33e33ff1fe3fe3ff9fffffff13f83ff8ff1ff
+8ff8ffffe3ff1ff1fe1fe7fff3f1f83f0ff0f83f0f11fc7ffc1e1ffff8307e00fffc07803e
+fffc7fc7ffffe0fff1ffffffff003ff1ffc7ff1fe33f13ff1fe3fe3ff3fffffff03f83ff8ff1ff
+8ff8ffffe3ff1ff1fe1fc7fff3f1fc1e0ff0f23f07116c27fc0c1ffff800fe00fffc07803e
+fffc7fc7ffffe07ff1ffffffff807ff1ffc7ff1fe27f13ff1fe3fe3ff3fffffff03f83ff8ff1ff
+8ff8ffffe1ff1ff1fe1fc7fff3e1fc1c0ff0e23700306007fc003ffff800fe00fffc07803e
+fffc7fc7ffffc43ff1ffffffffe1fff1ffc7ff1fe07f13ff1fe3fe3ff1fffffff87f83ff8ff1ff
+8ff8ffffe1ff1ff1fe0f87fff1e3fc000ff0420780306007fc003ffffc00fe00fffc07803e
+fffc7fc3ffff8c3ff1ffffffffcffff1ffc3fe3fe07f03ff1fe3fe3ff03ffffff87f83ff8ff0ff
+8ff8ffffe0ef0bb0df0707fff083fc000ff0060780306007fe003ffffc00fe00fffc07803e
+fffc7fe3ffff9e1ff1ffffffffcffff1ffe3fe3ff07f07ff1fe3fe3ff007fffff87fc3ff8ff0f7
+87f86fffe0090b803f000ffff003fe000ff0060780706007fe007ffffc01fe00fffc07803e
+fffc7fe3ffff1e0ff1ffffffff87fff1ffe1fc3ff0ff87ff1fe3fe3ff003fffff87fc3fd05f004
+81c01fffe00803803f000ffff003fe000ff0060780706007fe007ffffc01fe00fffc07803e
+fffc7fe1ffbe3f0ff1ff87ffff803ff1fff1f87ff0ff87ff1fe1fe1bf001fffff87fc7fc01f004
+01c01fffe00803803f801ffff007fe010ff80e0780706007fe007ffffe01fe00fffc07803e
+fffc7ff07e3c7f07f0ff03ffffc00ff0eff070fff0ff87f803007007f700fffff87fc7fc01f004
+01c01ffff00803803f803ffff007ff010ff80e07c0f06007ff00fffffe01fe00fffc07803e
+ffe007f800700e00f00703ffffb807801ff801fff8ff8ff803007007ef80fffff8ffc7fc01f80c
+01c01ffff01803803fc03ffff80fff030ff81e07c1f06007ff00fffffe03fe00fffc07803e
+ffe007fe01f01e00f80f83fffe7f03801ffe03fff9ff8ff803007007cfe07ffffcffc7fc01f81c
+01c01ffff87803803fc07ffffc0fff870ffc1e07c1f06007ff81ffffff03fe00fffc07803e
+ffffffffffffffffffffe3fffc7fc3ffffffffffffffffffffffffff8ff87fffffffffffffffff
+ffffffffffffffffffe0fffffe1fffef0ffc3fffe3ffffffff83ffffff07fffffffffffffe
+ffffffffffffffffffffe3fffc7fe3ffffffffffffffffffffffffff9ff87fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffe7fffffffffffffc7ffffff8ffffffffffffffe
+ffffffffffffffffffffe3fffcffe3ffffffffffffffffffffffffff1ffc7fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffe7fff8ffe3ffffffffffffffffffffffffff1ffc7fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffcffff87fe3ffffffffffffffffffffffffff1ffc7fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffff9ffff87fe7ffffffffffffffffffffffffff1ffc7fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+fffffffffffffffffffe3ffffc3fc7ffffffffffffffffffffffffff1ffc7fffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+fffffffffffffffffffefffffc1f8fffffffffffffffffffffffffff1ffcffffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+fffffffffffffffffffffffffe001fffffffffffffffffffffffffff1ff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffff007fffffffffffffffffffffffffff0ff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffe3ffffffffffffffffffffffffffff0ff9ffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff87f1ffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e3ffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00fffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01fffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.pdf
new file mode 100644
index 00000000000..2ac054ecd41
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/manipulate.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.eps
new file mode 100644
index 00000000000..a5fe55456e4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ -1 0 0 1 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.pdf
new file mode 100644
index 00000000000..41b1c725863
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorh.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.eps
new file mode 100644
index 00000000000..7032a25f4ac
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1 0 0 -1 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.pdf
new file mode 100644
index 00000000000..114d9602ed6
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/mirrorv.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.eps
new file mode 100644
index 00000000000..b1249dd8268
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.eps
@@ -0,0 +1,6539 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: outlineproblems1.tif
+%%CreationDate: Wed May 5 18:52:15 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 871 82
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+871.000000 82.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 871 82 8 3 0 1 2 "false 3 colorimage"
+/line 2613 string def
+871 82 8
+[871 0 0 -82 0 82]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000000000000000000000000000ffffffffffffffffff000000
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffff000000000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffff000000000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffff000000
+000000ffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+000000000000000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+000000000000000000000000000000ffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffff000000000000000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.pdf
new file mode 100644
index 00000000000..a3fab25ea4a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems1.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.eps
new file mode 100644
index 00000000000..d398fc235dc
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.eps
@@ -0,0 +1,6064 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: outlineproblems2.tif
+%%CreationDate: Wed May 5 18:52:22 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 871 76
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+871.000000 76.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 871 76 8 3 0 1 2 "false 3 colorimage"
+/line 2613 string def
+871 76 8
+[871 0 0 -76 0 76]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+ffffff000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffff000000000000ffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffff000000000000ffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffff000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+000000000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffff000000000000000000000000000000000000000000000000
+000000000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.pdf
new file mode 100644
index 00000000000..2273c3de6e4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems2.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.eps
new file mode 100644
index 00000000000..8eccabe1ac7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.eps
@@ -0,0 +1,5985 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: outlineproblems3.tif
+%%CreationDate: Wed May 5 18:52:27 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 871 75
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+871.000000 75.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 871 75 8 3 0 1 2 "false 3 colorimage"
+/line 2613 string def
+871 75 8
+[871 0 0 -75 0 75]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffff000000000000000000
+000000000000ffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+000000000000ffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffff000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000ffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffff000000000000000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffff000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000000000000000000000
+000000ffffffffffff000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.pdf
new file mode 100644
index 00000000000..454fa98c951
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems3.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.eps
new file mode 100644
index 00000000000..60fb5347eea
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.eps
@@ -0,0 +1,6777 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: outlineproblems4.tif
+%%CreationDate: Wed May 5 18:52:32 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 871 85
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+871.000000 85.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 871 85 8 3 0 1 2 "false 3 colorimage"
+/line 2613 string def
+871 85 8
+[871 0 0 -85 0 85]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffff000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffff000000000000ffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffff000000ffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffff000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffff000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffff000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffff000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffff000000ffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffff000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffff000000ffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffff000000000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffff000000000000000000
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffff000000ffffff
+ffffffffffffffffff000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+000000ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000ffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffff000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffff000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffff000000ffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffff000000000000ffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffff000000ffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000ffffff000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffff000000000000000000ffffff000000000000000000
+000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffff000000000000000000ffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000000000
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffff000000000000000000ffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000
+000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000ffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+000000000000000000ffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffff000000000000000000000000
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffff000000000000000000ffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000ffffff
+ffffff000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000ffffffffffff000000000000ffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffff000000000000ffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffff000000000000000000ffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffff000000000000ffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffff000000ffffff000000000000ffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000
+000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000000000
+000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.pdf
new file mode 100644
index 00000000000..e8d15dc9373
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems4.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.eps
new file mode 100644
index 00000000000..bd1b0439383
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.eps
@@ -0,0 +1,6554 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: tiff2ps
+%%Title: outlineproblems5.tif
+%%CreationDate: Wed May 5 18:52:37 1999
+%%DocumentData: Clean7Bit
+%%Origin: 0 0
+%%BoundingBox: 0 0 873 82
+%%LanguageLevel: 1
+%%Pages: (atend)
+%%EndComments
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+gsave
+100 dict begin
+873.000000 82.000000 scale
+/bwproc {
+ rgbproc
+ dup length 3 idiv string 0 3 0
+ 5 -1 roll {
+ add 2 1 roll 1 sub dup 0 eq {
+ pop 3 idiv
+ 3 -1 roll
+ dup 4 -1 roll
+ dup 3 1 roll
+ 5 -1 roll put
+ 1 add 3 0
+ } { 2 1 roll } ifelse
+ } forall
+ pop pop pop
+} def
+/colorimage where {pop} {
+ /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def
+} ifelse
+%ImageData: 873 82 8 3 0 1 2 "false 3 colorimage"
+/line 2619 string def
+873 82 8
+[873 0 0 -82 0 82]
+{currentfile line readhexstring pop} bind
+false 3 colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffff000000000000000000000000000000000000000000ffffff
+ffffffffffff000000000000ffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffff000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000000000
+000000ffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffff000000000000000000ffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000ffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffff000000000000ffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000ffffff000000000000000000
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffff000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000ffffff000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000ffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000ffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000ffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffff000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffff000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffff000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000ffffffffffffffffffffffff000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000ffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000ffffff
+ffffffffffff000000000000000000ffffffffffff000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+000000000000000000000000ffffffffffffffffff000000000000000000000000
+000000000000000000ffffffffffff000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffff000000000000000000
+000000000000000000000000000000000000000000000000000000ffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+000000000000000000000000000000000000000000ffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000000000000000000000000000
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000
+000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff000000000000000000000000000000000000000000000000ffffffffffff
+000000000000000000000000000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+end
+grestore
+showpage
+%%Trailer
+%%Pages: 1
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.pdf
new file mode 100644
index 00000000000..40c9629661f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlineproblems5.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.eps
new file mode 100644
index 00000000000..ecd148cd611
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.eps
@@ -0,0 +1,255 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: outlines.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 1
+%%CreationDate: Fri Apr 23 17:07:56 1999
+%%For: rainer@mman2 (Rainer Menzner)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 252 156
+%%Pages: 0
+%%BeginSetup
+%%EndSetup
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-22.0 156.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n -1000 3475 m -1000 -1000 l 5342 -1000 l 5342 3475 l cp clip
+ 0.06299 0.06299 sc
+7.500 slw
+% Ellipse
+n 450 2250 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 1350 2250 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 900 1800 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 900 900 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 1350 450 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 1620 180 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 2880 180 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3150 450 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3600 900 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3600 1800 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3150 2250 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 4050 2250 45 45 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr
+
+% Polyline
+n 3150 2250 m 1350 2250 l gs col0 s gr
+% Polyline
+ [60] 0 sd
+n 450 2250 m 1350 2250 l gs col0 s gr [] 0 sd
+% Polyline
+ [60] 0 sd
+n 1350 2250 m 4050 2250 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 1350 2250 m 900 1800 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 1350 450 m 900 900 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 1350 450 m 1620 180 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3150 450 m 2880 180 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3150 450 m 3600 900 l gs col0 s gr [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3150 2250 m 3600 1800 l gs col0 s gr [] 0 sd
+% Polyline
+n 1350 2250 m 1348 2248 l 1344 2243 l 1336 2235 l 1325 2222 l 1309 2205 l
+ 1290 2184 l 1268 2159 l 1244 2132 l 1218 2102 l 1192 2072 l
+ 1167 2041 l 1142 2011 l 1119 1981 l 1098 1953 l 1078 1925 l
+ 1060 1899 l 1044 1873 l 1030 1849 l 1016 1824 l 1005 1800 l
+ 994 1775 l 984 1750 l 975 1725 l 967 1701 l 960 1676 l
+ 954 1650 l 948 1624 l 942 1596 l 937 1568 l 933 1539 l
+ 929 1509 l 926 1478 l 924 1447 l 922 1415 l 921 1382 l
+ 921 1350 l 921 1318 l 922 1285 l 924 1253 l 926 1222 l
+ 929 1191 l 933 1161 l 937 1132 l 942 1104 l 948 1076 l
+ 954 1050 l 960 1024 l 967 999 l 975 975 l 984 950 l
+ 994 925 l 1005 900 l 1016 876 l 1030 851 l 1044 827 l
+ 1060 801 l 1078 775 l 1098 747 l 1119 719 l 1142 689 l
+ 1167 659 l 1192 628 l 1218 598 l 1244 568 l 1268 541 l
+ 1290 516 l 1309 495 l 1325 478 l 1336 465 l 1344 457 l
+ 1348 452 l 1350 450 l gs col0 s gr
+% Polyline
+n 1350 450 m 1352 449 l 1356 445 l 1363 439 l 1373 431 l 1387 419 l
+ 1405 406 l 1425 390 l 1448 374 l 1471 357 l 1496 340 l
+ 1521 324 l 1546 309 l 1571 295 l 1595 283 l 1620 272 l
+ 1645 262 l 1671 253 l 1697 245 l 1725 237 l 1754 231 l
+ 1785 225 l 1809 221 l 1834 217 l 1860 214 l 1887 211 l
+ 1915 208 l 1945 205 l 1975 202 l 2007 200 l 2040 198 l
+ 2073 196 l 2108 195 l 2143 194 l 2178 193 l 2214 193 l
+ 2250 192 l 2286 193 l 2322 193 l 2357 194 l 2392 195 l
+ 2427 196 l 2460 198 l 2493 200 l 2525 202 l 2555 205 l
+ 2585 208 l 2613 211 l 2640 214 l 2666 217 l 2691 221 l
+ 2715 225 l 2746 231 l 2775 237 l 2803 245 l 2829 253 l
+ 2855 262 l 2880 272 l 2905 283 l 2929 295 l 2954 309 l
+ 2979 324 l 3004 340 l 3029 357 l 3052 374 l 3075 390 l
+ 3095 406 l 3113 419 l 3127 431 l 3137 439 l 3144 445 l
+ 3148 449 l 3150 450 l gs col0 s gr
+% Polyline
+n 3150 450 m 3152 452 l 3156 457 l 3164 465 l 3175 478 l 3191 495 l
+ 3210 516 l 3232 541 l 3256 568 l 3282 598 l 3308 628 l
+ 3333 659 l 3358 689 l 3381 719 l 3402 747 l 3422 775 l
+ 3440 801 l 3456 827 l 3470 851 l 3484 876 l 3495 900 l
+ 3506 925 l 3516 950 l 3525 975 l 3533 999 l 3540 1024 l
+ 3546 1050 l 3552 1076 l 3558 1104 l 3563 1132 l 3567 1161 l
+ 3571 1191 l 3574 1222 l 3576 1253 l 3578 1285 l 3579 1318 l
+ 3579 1350 l 3579 1382 l 3578 1415 l 3576 1447 l 3574 1478 l
+ 3571 1509 l 3567 1539 l 3563 1568 l 3558 1596 l 3552 1624 l
+ 3546 1650 l 3540 1676 l 3533 1701 l 3525 1725 l 3516 1750 l
+ 3506 1775 l 3495 1800 l 3484 1824 l 3470 1849 l 3456 1873 l
+ 3440 1899 l 3422 1925 l 3402 1953 l 3381 1981 l 3358 2011 l
+ 3333 2041 l 3308 2072 l 3282 2102 l 3256 2132 l 3232 2159 l
+ 3210 2184 l 3191 2205 l 3175 2222 l 3164 2235 l 3156 2243 l
+ 3152 2248 l 3150 2250 l gs col0 s gr
+/Helvetica-Narrow ff 150.00 scf sf
+360 2160 m
+gs 1 -1 sc (P1) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+1440 2430 m
+gs 1 -1 sc (P2) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+630 1800 m
+gs 1 -1 sc (P3) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+630 900 m
+gs 1 -1 sc (P4) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+1080 450 m
+gs 1 -1 sc (P5) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+1710 135 m
+gs 1 -1 sc (P6) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+2970 180 m
+gs 1 -1 sc (P7) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+3285 450 m
+gs 1 -1 sc (P8) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+3690 945 m
+gs 1 -1 sc (P9) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+3690 1890 m
+gs 1 -1 sc (P10) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+3060 2475 m
+gs 1 -1 sc (P11) col0 sh gr
+/Helvetica-Narrow ff 150.00 scf sf
+4050 2475 m
+gs 1 -1 sc (P12) col0 sh gr
+$F2psEnd
+rs
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.fig b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.fig
new file mode 100644
index 00000000000..e19102c8c0e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.fig
@@ -0,0 +1,60 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 450 2250 45 45 450 2250 495 2250
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 1350 2250 45 45 1350 2250 1395 2250
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 900 1800 45 45 900 1800 945 1800
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 900 900 45 45 900 900 945 900
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 1350 450 45 45 1350 450 1395 450
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 1620 180 45 45 1620 180 1665 180
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 2880 180 45 45 2880 180 2925 180
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 3150 450 45 45 3150 450 3195 450
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 3600 900 45 45 3600 900 3645 900
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 3600 1800 45 45 3600 1800 3645 1800
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 3150 2250 45 45 3150 2250 3195 2250
+1 3 0 1 0 7 100 0 0 0.000 1 0.0000 4050 2250 45 45 4050 2250 4095 2250
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 3150 2250 1350 2250
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 2
+ 450 2250 1350 2250
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 2
+ 1350 2250 4050 2250
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 1350 2250 900 1800
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 1350 450 900 900
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 1350 450 1620 180
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 3150 450 2880 180
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 3150 450 3600 900
+2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2
+ 3150 2250 3600 1800
+3 0 0 1 0 7 100 0 -1 0.000 0 0 0 4
+ 1350 2250 900 1800 900 900 1350 450
+ 0.000 1.000 1.000 0.000
+3 0 0 1 0 7 100 0 -1 0.000 0 0 0 4
+ 1350 450 1620 180 2880 180 3150 450
+ 0.000 1.000 1.000 0.000
+3 0 0 1 0 7 100 0 -1 0.000 0 0 0 4
+ 3150 450 3600 900 3600 1800 3150 2250
+ 0.000 1.000 1.000 0.000
+4 0 0 100 0 20 10 0.0000 4 120 195 360 2160 P1\001
+4 0 0 100 0 20 10 0.0000 4 120 195 1440 2430 P2\001
+4 0 0 100 0 20 10 0.0000 4 120 195 630 1800 P3\001
+4 0 0 100 0 20 10 0.0000 4 120 195 630 900 P4\001
+4 0 0 100 0 20 10 0.0000 4 120 195 1080 450 P5\001
+4 0 0 100 0 20 10 0.0000 4 120 195 1710 135 P6\001
+4 0 0 100 0 20 10 0.0000 4 120 195 2970 180 P7\001
+4 0 0 100 0 20 10 0.0000 4 120 195 3285 450 P8\001
+4 0 0 100 0 20 10 0.0000 4 120 195 3690 945 P9\001
+4 0 0 100 0 20 10 0.0000 4 120 285 3690 1890 P10\001
+4 0 0 100 0 20 10 0.0000 4 120 285 3060 2475 P11\001
+4 0 0 100 0 20 10 0.0000 4 120 285 4050 2475 P12\001
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.pdf
new file mode 100644
index 00000000000..8e624afb407
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/outlines.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.eps
new file mode 100644
index 00000000000..c7acb8acbf7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.eps
@@ -0,0 +1,32 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+/sin30 30 sin def
+/minussin30 30 sin neg def
+/cos30 30 cos def
+
+gsave
+[ cos30 sin30 minussin30 cos30 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.pdf
new file mode 100644
index 00000000000..ced50697595
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/rotate.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.eps
new file mode 100644
index 00000000000..f5cdc726141
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1 0 0.5 1 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.pdf
new file mode 100644
index 00000000000..1efd0ca955f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearh.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.eps
new file mode 100644
index 00000000000..6b6e63e981a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.eps
@@ -0,0 +1,28 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+/TimesRoman findfont 150 scalefont setfont
+100 100 translate
+
+gsave
+[ 1 0.5 0 1 0 0] concat
+
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) show
+grestore
+
+[ 3 3 ] 2 setdash
+0 0 moveto
+100 0 rlineto
+0 0 moveto
+0 100 rlineto
+stroke
+0 0 moveto
+(g) true charpath
+stroke
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.pdf
new file mode 100644
index 00000000000..822a8a70e65
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/shearv.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.eps
new file mode 100644
index 00000000000..4eb2421f10c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.eps
@@ -0,0 +1,745 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: t1_data.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 0-beta3
+%%CreationDate: Fri Oct 16 19:05:50 1998
+%%For: rainer@mman (Rainer Menzner)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 612 467
+%%Pages: 0
+%%BeginSetup
+%%EndSetup
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-13.0 469.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Helvetica-Narrow-Bold /Helvetica-Narrow-Bold-iso isovec ReEncode
+/Helvetica-Narrow /Helvetica-Narrow-iso isovec ReEncode
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n -1000 8437 m -1000 -1000 l 10912 -1000 l 10912 8437 l cp clip
+ 0.06299 0.06299 sc
+% Polyline
+7.500 slw
+n 6750 1125 m 7650 1125 l 7650 675 l 6750 675 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+7200 855 m
+gs 1 -1 sc (External Encoding) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+7200 1005 m
+gs 1 -1 sc (\(optional\)) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 7740 1125 m 8640 1125 l 8640 675 l 7740 675 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+8190 855 m
+gs 1 -1 sc (Internal Type 1) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+8190 1005 m
+gs 1 -1 sc (Data Structures) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 5310 1935 m 5940 1935 l 5940 1710 l 5310 1710 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5625 1845 m
+gs 1 -1 sc (KernMap) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 6210 1935 m 6840 1935 l 6840 1710 l 6210 1710 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+6525 1845 m
+gs 1 -1 sc (EncMap) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 7650 4365 m 8550 4365 l 8550 3870 l 7650 3870 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+8100 4140 m
+gs 1 -1 sc (glyphs[256]) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+gs clippath
+7479 3840 m 7623 3870 l 7479 3900 l 7665 3900 l 7665 3840 l cp
+clip
+n 5940 3555 m 6750 3555 l 6750 3870 l 7650 3870 l gs col0 s gr gr
+
+% arrowhead
+n 7479 3840 m 7623 3870 l 7479 3900 l 7503 3870 l 7479 3840 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 7650 3105 m 8550 3105 l 8550 2610 l 7650 2610 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+8100 2880 m
+gs 1 -1 sc (glyphs[256]) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+gs clippath
+7479 2580 m 7623 2610 l 7479 2640 l 7665 2640 l 7665 2580 l cp
+clip
+n 5940 2295 m 6750 2295 l 6750 2610 l 7650 2610 l gs col0 s gr gr
+
+% arrowhead
+n 7479 2580 m 7623 2610 l 7479 2640 l 7503 2610 l 7479 2580 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 4950 6075 m 5940 6075 l gs col0 s gr
+% Polyline
+n 4950 6255 m 5940 6255 l gs col0 s gr
+% Polyline
+n 4950 6435 m 5940 6435 l gs col0 s gr
+% Polyline
+n 4950 6615 m 5940 6615 l gs col0 s gr
+% Polyline
+n 4950 6795 m 5940 6795 l gs col0 s gr
+% Polyline
+n 4950 5895 m 5940 5895 l 5940 6975 l 4950 6975 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6030 m
+gs 1 -1 sc (pFontCache) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6210 m
+gs 1 -1 sc (pNextFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6390 m
+gs 1 -1 sc (pPrevFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6570 m
+gs 1 -1 sc (pCharSpaceLocal) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6750 m
+gs 1 -1 sc (float size) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 6930 m
+gs 1 -1 sc (int antialias) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 7650 6795 m 8550 6795 l 8550 6300 l 7650 6300 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+8100 6570 m
+gs 1 -1 sc (glyphs[256]) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+gs clippath
+7479 6270 m 7623 6300 l 7479 6330 l 7665 6330 l 7665 6270 l cp
+clip
+n 5940 5985 m 6750 5985 l 6750 6300 l 7650 6300 l gs col0 s gr gr
+
+% arrowhead
+n 7479 6270 m 7623 6300 l 7479 6330 l 7503 6300 l 7479 6270 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 4950 3645 m 5940 3645 l gs col0 s gr
+% Polyline
+n 4950 3825 m 5940 3825 l gs col0 s gr
+% Polyline
+n 4950 4005 m 5940 4005 l gs col0 s gr
+% Polyline
+n 4950 4185 m 5940 4185 l gs col0 s gr
+% Polyline
+n 4950 4365 m 5940 4365 l gs col0 s gr
+% Polyline
+n 4950 3465 m 5940 3465 l 5940 4545 l 4950 4545 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 3600 m
+gs 1 -1 sc (pFontCache) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 3780 m
+gs 1 -1 sc (pNextFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 3960 m
+gs 1 -1 sc (pPrevFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 4140 m
+gs 1 -1 sc (pCharSpaceLocal) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 4320 m
+gs 1 -1 sc (float size) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 4500 m
+gs 1 -1 sc (int antialias) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 4950 2385 m 5940 2385 l gs col0 s gr
+% Polyline
+n 4950 2565 m 5940 2565 l gs col0 s gr
+% Polyline
+n 4950 2745 m 5940 2745 l gs col0 s gr
+% Polyline
+n 4950 2925 m 5940 2925 l gs col0 s gr
+% Polyline
+n 4950 3105 m 5940 3105 l gs col0 s gr
+% Polyline
+n 4950 2205 m 5940 2205 l 5940 3285 l 4950 3285 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 2340 m
+gs 1 -1 sc (pFontCache) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 2520 m
+gs 1 -1 sc (pNextFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 2700 m
+gs 1 -1 sc (pPrevFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 2880 m
+gs 1 -1 sc (pCharSpaceLocal) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 3060 m
+gs 1 -1 sc (float size) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+5445 3240 m
+gs 1 -1 sc (int antialias) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 450 2655 m 2070 2655 l gs col0 s gr
+% Polyline
+n 450 2475 m 2070 2475 l 2070 4455 l 450 4455 l cp gs col0 s gr
+% Polyline
+n 450 2835 m 2070 2835 l gs col0 s gr
+% Polyline
+n 450 3015 m 2070 3015 l gs col0 s gr
+% Polyline
+n 450 3195 m 2070 3195 l gs col0 s gr
+% Polyline
+n 450 3375 m 2070 3375 l gs col0 s gr
+% Polyline
+n 450 3915 m 2070 3915 l gs col0 s gr
+% Polyline
+n 450 4095 m 2070 4095 l gs col0 s gr
+% Polyline
+n 450 4275 m 2070 4275 l gs col0 s gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 2610 m
+gs 1 -1 sc (struct DeviceSpecifics) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 2790 m
+gs 1 -1 sc (int T1_Up) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 2970 m
+gs 1 -1 sc (int T1aa_bpp) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 3150 m
+gs 1 -1 sc (int SetFuncRequestID) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 3510 m
+gs 1 -1 sc (Filename) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 3690 m
+gs 1 -1 sc (Searchpath) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 3870 m
+gs 1 -1 sc (Stuff) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 4050 m
+gs 1 -1 sc (char err_warn_msg_buf[1024]) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 4230 m
+gs 1 -1 sc (FILE *t1lib_log_file) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 4410 m
+gs 1 -1 sc (int t1lib_log_level) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 135.00 scf sf
+1260 3330 m
+gs 1 -1 sc (int T1_errno) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 450 630 m 1530 630 l gs col0 s gr
+% Polyline
+n 450 810 m 1530 810 l gs col0 s gr
+% Polyline
+n 450 990 m 1530 990 l gs col0 s gr
+% Polyline
+n 450 1170 m 1530 1170 l gs col0 s gr
+% Polyline
+n 450 1350 m 1530 1350 l gs col0 s gr
+% Polyline
+n 450 450 m 1530 450 l 1530 1710 l 450 1710 l cp gs col0 s gr
+% Polyline
+n 450 1530 m 1530 1530 l gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 585 m
+gs 1 -1 sc (int no_fonts_ini) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 765 m
+gs 1 -1 sc (int no_fonts) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 945 m
+gs 1 -1 sc (int no_fonts_limit) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 1125 m
+gs 1 -1 sc (int bitmap_pad) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 1305 m
+gs 1 -1 sc (int endian) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 1665 m
+gs 1 -1 sc (pFontArray) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+990 1485 m
+gs 1 -1 sc (char **default_enc) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 2700 6300 m 3870 6300 l gs col0 s gr
+% Polyline
+n 2700 6480 m 3870 6480 l gs col0 s gr
+% Polyline
+n 2700 6660 m 3870 6660 l gs col0 s gr
+% Polyline
+n 2700 6840 m 3870 6840 l gs col0 s gr
+% Polyline
+n 2700 7020 m 3870 7020 l gs col0 s gr
+% Polyline
+n 2700 6120 m 3870 6120 l gs col0 s gr
+% Polyline
+n 2700 5940 m 3870 5940 l gs col0 s gr
+% Polyline
+n 2700 5760 m 3870 5760 l gs col0 s gr
+% Polyline
+n 2700 5580 m 3870 5580 l gs col0 s gr
+% Polyline
+n 2700 5400 m 3870 5400 l 3870 7200 l 2700 7200 l cp gs col0 s gr
+% Polyline
+n 2700 7200 m 2700 7380 l gs col0 s gr
+% Polyline
+n 3870 7200 m 3870 7380 l gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 5535 m
+gs 1 -1 sc (pFontFileName) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6255 m
+gs 1 -1 sc (pKernMap) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6075 m
+gs 1 -1 sc (pEncMap) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 5895 m
+gs 1 -1 sc (pType1Data) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 5715 m
+gs 1 -1 sc (pAFMData) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6435 m
+gs 1 -1 sc (pFontEnc) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6615 m
+gs 1 -1 sc (vm_base) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6795 m
+gs 1 -1 sc (pFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 6975 m
+gs 1 -1 sc (double FontMatrix[4]) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 7155 m
+gs 1 -1 sc (double FontTransform[4]) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 7335 m
+gs 1 -1 sc (float slant) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 2700 1215 m 3870 1215 l gs col0 s gr
+% Polyline
+n 2700 1395 m 3870 1395 l gs col0 s gr
+% Polyline
+n 2700 1575 m 3870 1575 l gs col0 s gr
+% Polyline
+n 2700 1755 m 3870 1755 l gs col0 s gr
+% Polyline
+n 2700 1935 m 3870 1935 l gs col0 s gr
+% Polyline
+n 2700 2115 m 3870 2115 l gs col0 s gr
+% Polyline
+n 2700 2295 m 3870 2295 l gs col0 s gr
+% Polyline
+n 2700 2475 m 3870 2475 l gs col0 s gr
+% Polyline
+n 2700 2655 m 3870 2655 l gs col0 s gr
+% Polyline
+n 2700 2835 m 3870 2835 l gs col0 s gr
+% Polyline
+n 2700 3015 m 3870 3015 l gs col0 s gr
+% Polyline
+n 2700 3195 m 3870 3195 l gs col0 s gr
+% Polyline
+n 2700 1035 m 3870 1035 l gs col0 s gr
+% Polyline
+n 2700 855 m 3870 855 l gs col0 s gr
+% Polyline
+n 2700 675 m 3870 675 l gs col0 s gr
+% Polyline
+n 2700 495 m 3870 495 l gs col0 s gr
+% Polyline
+n 2700 3555 m 3870 3555 l gs col0 s gr
+% Polyline
+n 2700 3735 m 3870 3735 l gs col0 s gr
+% Polyline
+n 2700 3915 m 3870 3915 l gs col0 s gr
+% Polyline
+n 2700 4095 m 3870 4095 l gs col0 s gr
+% Polyline
+n 2700 3375 m 3870 3375 l gs col0 s gr
+% Polyline
+n 2700 315 m 3870 315 l 3870 4275 l 2700 4275 l cp gs col0 s gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 450 m
+gs 1 -1 sc (pFontFileName) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 1170 m
+gs 1 -1 sc (pKernMap) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 990 m
+gs 1 -1 sc (pEncMap) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 810 m
+gs 1 -1 sc (pType1Data) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 630 m
+gs 1 -1 sc (pAFMData) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 1350 m
+gs 1 -1 sc (pFontEnc) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 1530 m
+gs 1 -1 sc (vm_base) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 1710 m
+gs 1 -1 sc (pFontSizeDeps) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 1890 m
+gs 1 -1 sc (double FontMatrix[4]) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2430 m
+gs 1 -1 sc (float extend) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2610 m
+gs 1 -1 sc (float UndrLnPos) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2790 m
+gs 1 -1 sc (float UndrLnThick) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2970 m
+gs 1 -1 sc (float OvrLnPos) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 3150 m
+gs 1 -1 sc (float OvrLnThick) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 3330 m
+gs 1 -1 sc (float OvrStrkPos) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 3510 m
+gs 1 -1 sc (float OverStrkThick) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 3690 m
+gs 1 -1 sc (unsigned short physical) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 3870 m
+gs 1 -1 sc (unsigned short refcount) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 4050 m
+gs 1 -1 sc (short space_position) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 4230 m
+gs 1 -1 sc (short info_flags) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2250 m
+gs 1 -1 sc (float slant) dup sw pop 2 div neg 0 rm col0 sh gr
+% Ellipse
+n 5400 5310 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5400 5490 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+0.000 slw
+% Ellipse
+n 3298 4577 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr
+% Ellipse
+n 3298 4712 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr
+% Ellipse
+n 3285 5310 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr
+% Ellipse
+n 3285 5175 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr
+% Ellipse
+n 3298 4410 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr
+% Polyline
+7.500 slw
+gs clippath
+2529 375 m 2673 405 l 2529 435 l 2715 435 l 2715 375 l cp
+clip
+n 1530 1440 m 2070 1440 l 2070 405 l 2700 405 l gs col0 s gr gr
+
+% arrowhead
+n 2529 375 m 2673 405 l 2529 435 l 2553 405 l 2529 375 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+8220 504 m 8190 648 l 8160 504 l 8160 690 l 8220 690 l cp
+clip
+n 3870 765 m 4950 765 l 4950 405 l 8190 405 l 8190 675 l gs col0 s gr gr
+
+% arrowhead
+n 8220 504 m 8190 648 l 8160 504 l 8190 528 l 8220 504 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+9210 504 m 9180 648 l 9150 504 l 9150 690 l 9210 690 l cp
+clip
+n 3870 585 m 4500 585 l 4500 315 l 9180 315 l 9180 675 l gs col0 s gr gr
+
+% arrowhead
+n 9210 504 m 9180 648 l 9150 504 l 9180 528 l 9210 504 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+ [60] 0 sd
+n 4275 45 m 4275 7425 l gs col0 s gr [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4275 1080 m 6525 1080 l 6525 1215 l 9900 1215 l gs col0 s gr [] 0 sd
+% Polyline
+n 8730 1125 m 9630 1125 l 9630 675 l 8730 675 l cp gs col0 s gr
+% Polyline
+ [60] 0 sd
+n 225 45 m 9900 45 l 9900 7425 l 225 7425 l cp gs col0 s gr [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4275 2115 m 9900 2115 l gs col0 s gr [] 0 sd
+% Polyline
+gs clippath
+6579 870 m 6723 900 l 6579 930 l 6765 930 l 6765 870 l cp
+clip
+n 3870 1305 m 4050 1305 l 4050 900 l 6750 900 l gs col0 s gr gr
+
+% arrowhead
+n 6579 870 m 6723 900 l 6579 930 l 6603 900 l 6579 870 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+5430 1539 m 5400 1683 l 5370 1539 l 5370 1725 l 5430 1725 l cp
+clip
+n 3870 1125 m 4140 1125 l 4140 1260 l 5400 1260 l 5400 1710 l gs col0 s gr gr
+
+% arrowhead
+n 5430 1539 m 5400 1683 l 5370 1539 l 5400 1563 l 5430 1539 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+6330 1539 m 6300 1683 l 6270 1539 l 6270 1725 l 6330 1725 l cp
+clip
+n 3870 945 m 4185 945 l 4185 1215 l 6300 1215 l 6300 1710 l gs col0 s gr gr
+
+% arrowhead
+n 6330 1539 m 6300 1683 l 6270 1539 l 6300 1563 l 6330 1539 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+4779 3525 m 4923 3555 l 4779 3585 l 4965 3585 l 4965 3525 l cp
+clip
+n 5940 2475 m 6300 2475 l 6300 3420 l 4500 3420 l 4500 3555 l 4950 3555 l gs col0 s gr gr
+
+% arrowhead
+n 4779 3525 m 4923 3555 l 4779 3585 l 4803 3555 l 4779 3525 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+4798 2378 m 4928 2311 l 4835 2425 l 4980 2309 l 4943 2262 l cp
+clip
+n 5940 3915 m 6120 3915 l 6120 3330 l 4725 3330 l 4725 2475 l 4950 2295 l gs col0 s gr gr
+
+% arrowhead
+n 4798 2378 m 4928 2311 l 4835 2425 l 4835 2387 l 4798 2378 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+4779 5955 m 4923 5985 l 4779 6015 l 4965 6015 l 4965 5955 l cp
+clip
+n 4500 5535 m 4500 5985 l 4950 5985 l gs col0 s gr gr
+
+% arrowhead
+n 4779 5955 m 4923 5985 l 4779 6015 l 4803 5985 l 4779 5955 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 5940 6345 m 6120 6345 l 6120 5580 l gs col0 s gr
+% Polyline
+gs clippath
+4798 3638 m 4928 3571 l 4835 3685 l 4980 3569 l 4943 3522 l cp
+clip
+n 6120 5085 m 6120 4680 l 6120 4590 l 4725 4590 l 4725 3735 l 4950 3555 l gs col0 s gr gr
+
+% arrowhead
+n 4798 3638 m 4928 3571 l 4835 3685 l 4835 3647 l 4798 3638 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 5940 3735 m 6300 3735 l 6300 4680 l 4500 4680 l 4500 5085 l gs col0 s gr
+% Polyline
+gs clippath
+4779 2265 m 4923 2295 l 4779 2325 l 4965 2325 l 4965 2265 l cp
+clip
+n 3870 1845 m 4050 1845 l 4050 2295 l 4950 2295 l gs col0 s gr gr
+
+% arrowhead
+n 4779 2265 m 4923 2295 l 4779 2325 l 4803 2295 l 4779 2265 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 4275 5445 m 4277 5446 l 4283 5448 l 4292 5452 l 4306 5457 l 4323 5463 l
+ 4344 5471 l 4366 5479 l 4389 5487 l 4411 5495 l 4434 5503 l
+ 4456 5510 l 4477 5517 l 4499 5524 l 4520 5530 l 4542 5537 l
+ 4566 5543 l 4590 5550 l 4608 5555 l 4626 5560 l 4646 5565 l
+ 4667 5570 l 4688 5575 l 4711 5581 l 4735 5586 l 4759 5592 l
+ 4785 5597 l 4812 5603 l 4840 5608 l 4868 5614 l 4897 5619 l
+ 4927 5624 l 4956 5628 l 4986 5633 l 5017 5637 l 5047 5641 l
+ 5077 5644 l 5106 5647 l 5136 5649 l 5165 5651 l 5194 5653 l
+ 5223 5654 l 5251 5655 l 5280 5655 l 5309 5655 l 5338 5654 l
+ 5367 5653 l 5397 5651 l 5427 5649 l 5458 5647 l 5489 5644 l
+ 5521 5641 l 5553 5638 l 5585 5634 l 5618 5630 l 5650 5626 l
+ 5682 5622 l 5714 5618 l 5745 5613 l 5776 5609 l 5806 5604 l
+ 5835 5600 l 5863 5596 l 5890 5592 l 5916 5588 l 5941 5584 l
+ 5964 5581 l 5987 5578 l 6009 5575 l 6030 5573 l 6056 5570 l
+ 6081 5567 l 6106 5566 l 6130 5564 l 6154 5564 l 6178 5563 l
+ 6203 5564 l 6229 5564 l 6255 5565 l 6282 5567 l 6310 5569 l
+ 6336 5571 l 6361 5573 l 6384 5575 l 6403 5577 l 6417 5578 l
+ 6427 5579 l 6432 5580 l 6435 5580 l gs col0 s gr
+% Polyline
+n 4275 5040 m 4278 5040 l 4283 5042 l 4292 5043 l 4306 5046 l 4324 5050 l
+ 4344 5053 l 4367 5058 l 4390 5062 l 4413 5067 l 4436 5071 l
+ 4458 5075 l 4481 5079 l 4503 5083 l 4525 5087 l 4548 5091 l
+ 4572 5096 l 4598 5100 l 4616 5103 l 4636 5107 l 4656 5110 l
+ 4678 5114 l 4700 5117 l 4724 5121 l 4749 5125 l 4775 5129 l
+ 4802 5133 l 4830 5137 l 4859 5141 l 4888 5145 l 4919 5148 l
+ 4949 5152 l 4980 5155 l 5011 5159 l 5042 5162 l 5073 5164 l
+ 5104 5167 l 5134 5169 l 5165 5171 l 5194 5172 l 5224 5173 l
+ 5253 5174 l 5281 5175 l 5310 5175 l 5339 5175 l 5367 5174 l
+ 5396 5173 l 5426 5172 l 5455 5171 l 5486 5169 l 5516 5167 l
+ 5547 5164 l 5578 5162 l 5609 5159 l 5641 5155 l 5672 5152 l
+ 5703 5148 l 5733 5145 l 5763 5141 l 5792 5137 l 5820 5133 l
+ 5848 5129 l 5874 5125 l 5899 5121 l 5924 5117 l 5947 5114 l
+ 5969 5110 l 5990 5107 l 6011 5103 l 6030 5100 l 6057 5096 l
+ 6082 5091 l 6107 5087 l 6131 5083 l 6155 5079 l 6179 5075 l
+ 6204 5071 l 6230 5067 l 6257 5062 l 6283 5058 l 6309 5053 l
+ 6333 5050 l 6353 5046 l 6370 5043 l 6381 5042 l 6387 5040 l
+ 6390 5040 l gs col0 s gr
+/Helvetica-Narrow-Bold-iso ff 225.00 scf sf
+4500 225 m
+gs 1 -1 sc (Level 1: Size-Independent Font Data) col0 sh gr
+/Helvetica-Narrow-Bold-iso ff 225.00 scf sf
+450 225 m
+gs 1 -1 sc (Level 0: Global Data Area) col0 sh gr
+/Helvetica-Narrow-Bold-iso ff 225.00 scf sf
+4500 7290 m
+gs 1 -1 sc (Level 2: Size-Dependent Font Data) col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+9180 990 m
+gs 1 -1 sc (DataStructures) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+9180 855 m
+gs 1 -1 sc (Adobe Font Metric) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-Bold-iso ff 225.00 scf sf
+6795 1440 m
+gs 1 -1 sc (Level 1b: Mapping Tables) col0 sh gr
+/Helvetica-Narrow-Bold-iso ff 225.00 scf sf
+1305 2340 m
+gs 1 -1 sc (Global Variables) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 150.00 scf sf
+3285 4905 m
+gs 1 -1 sc (Structure-Array of) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 150.00 scf sf
+3285 5085 m
+gs 1 -1 sc (size no_fonts_limit) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Narrow-iso ff 120.00 scf sf
+3285 2070 m
+gs 1 -1 sc (double FontTransform[4]) dup sw pop 2 div neg 0 rm col0 sh gr
+$F2psEnd
+rs
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.fig b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.fig
new file mode 100644
index 00000000000..7a0a3e18613
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.fig
@@ -0,0 +1,349 @@
+#FIG 3.2
+Portrait
+Center
+Metric
+A4
+100.00
+Single
+0
+1200 2
+6 6750 675 7650 1125
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 6750 1125 7650 1125 7650 675 6750 675 6750 1125
+4 1 0 0 0 20 8 0.0000 4 120 1065 7200 855 External Encoding\001
+4 1 0 0 0 20 8 0.0000 4 120 555 7200 1005 (optional)\001
+-6
+6 7740 675 8640 1125
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7740 1125 8640 1125 8640 675 7740 675 7740 1125
+4 1 0 0 0 20 8 0.0000 4 120 810 8190 855 Internal Type 1\001
+4 1 0 0 0 20 8 0.0000 4 105 855 8190 1005 Data Structures\001
+-6
+6 5310 1710 5940 1935
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5310 1935 5940 1935 5940 1710 5310 1710 5310 1935
+4 1 0 0 0 20 8 0.0000 4 105 510 5625 1845 KernMap\001
+-6
+6 6210 1710 6840 1935
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 6210 1935 6840 1935 6840 1710 6210 1710 6210 1935
+4 1 0 0 0 20 8 0.0000 4 105 465 6525 1845 EncMap\001
+-6
+6 5940 3555 8550 4365
+6 7650 3870 8550 4365
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7650 4365 8550 4365 8550 3870 7650 3870 7650 4365
+4 1 0 0 0 20 8 0.0000 4 120 660 8100 4140 glyphs[256]\001
+-6
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 5940 3555 6750 3555 6750 3870 7650 3870
+-6
+6 5940 2295 8550 3105
+6 7650 2610 8550 3105
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7650 3105 8550 3105 8550 2610 7650 2610 7650 3105
+4 1 0 0 0 20 8 0.0000 4 120 660 8100 2880 glyphs[256]\001
+-6
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 5940 2295 6750 2295 6750 2610 7650 2610
+-6
+6 4950 5895 5940 6975
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 6075 5940 6075
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 6255 5940 6255
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 6435 5940 6435
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 6615 5940 6615
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 6795 5940 6795
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4950 5895 5940 5895 5940 6975 4950 6975 4950 5895
+4 1 0 0 0 20 8 0.0000 4 120 690 5445 6030 pFontCache\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 6210 pNextFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 6390 pPrevFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 990 5445 6570 pCharSpaceLocal\001
+4 1 0 0 0 20 8 0.0000 4 105 495 5445 6750 float size\001
+4 1 0 0 0 20 8 0.0000 4 105 630 5445 6930 int antialias\001
+-6
+6 5940 5985 8550 6795
+6 7650 6300 8550 6795
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7650 6795 8550 6795 8550 6300 7650 6300 7650 6795
+4 1 0 0 0 20 8 0.0000 4 120 660 8100 6570 glyphs[256]\001
+-6
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 5940 5985 6750 5985 6750 6300 7650 6300
+-6
+6 4950 3465 5940 4545
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 3645 5940 3645
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 3825 5940 3825
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 4005 5940 4005
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 4185 5940 4185
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 4365 5940 4365
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4950 3465 5940 3465 5940 4545 4950 4545 4950 3465
+4 1 0 0 0 20 8 0.0000 4 120 690 5445 3600 pFontCache\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 3780 pNextFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 3960 pPrevFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 990 5445 4140 pCharSpaceLocal\001
+4 1 0 0 0 20 8 0.0000 4 105 495 5445 4320 float size\001
+4 1 0 0 0 20 8 0.0000 4 105 630 5445 4500 int antialias\001
+-6
+6 4950 2205 5940 3285
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 2385 5940 2385
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 2565 5940 2565
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 2745 5940 2745
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 2925 5940 2925
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4950 3105 5940 3105
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4950 2205 5940 2205 5940 3285 4950 3285 4950 2205
+4 1 0 0 0 20 8 0.0000 4 120 690 5445 2340 pFontCache\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 2520 pNextFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 1140 5445 2700 pPrevFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 990 5445 2880 pCharSpaceLocal\001
+4 1 0 0 0 20 8 0.0000 4 105 495 5445 3060 float size\001
+4 1 0 0 0 20 8 0.0000 4 105 630 5445 3240 int antialias\001
+-6
+6 315 2475 2205 4455
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 2655 2070 2655
+2 2 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 5
+ 450 2475 2070 2475 2070 4455 450 4455 450 2475
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 2835 2070 2835
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 3015 2070 3015
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 3195 2070 3195
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 3375 2070 3375
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 3915 2070 3915
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 4095 2070 4095
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 450 4275 2070 4275
+4 1 0 0 0 20 9 0.0000 4 120 1410 1260 2610 struct DeviceSpecifics\001
+4 1 0 0 0 20 9 0.0000 4 120 615 1260 2790 int T1_Up\001
+4 1 0 0 0 20 9 0.0000 4 120 810 1260 2970 int T1aa_bpp\001
+4 1 0 0 0 20 9 0.0000 4 120 1395 1260 3150 int SetFuncRequestID\001
+4 1 0 0 0 20 9 0.0000 4 90 570 1260 3510 Filename\001
+4 1 0 0 0 20 9 0.0000 4 120 705 1260 3690 Searchpath\001
+4 1 0 0 0 20 9 0.0000 4 90 300 1260 3870 Stuff\001
+4 1 0 0 0 20 9 0.0000 4 120 1860 1260 4050 char err_warn_msg_buf[1024]\001
+4 1 0 0 0 20 9 0.0000 4 120 1170 1260 4230 FILE *t1lib_log_file\001
+4 1 0 0 0 20 9 0.0000 4 120 1065 1260 4410 int t1lib_log_level\001
+4 1 0 0 0 20 9 0.0000 4 105 750 1260 3330 int T1_errno\001
+-6
+6 450 450 1530 1710
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 630 1530 630
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 810 1530 810
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 990 1530 990
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 1170 1530 1170
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 1350 1530 1350
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 450 450 1530 450 1530 1710 450 1710 450 450
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 450 1530 1530 1530
+4 1 0 0 0 20 8 0.0000 4 120 915 990 585 int no_fonts_ini\001
+4 1 0 0 0 20 8 0.0000 4 120 705 990 765 int no_fonts\001
+4 1 0 0 0 20 8 0.0000 4 120 1005 990 945 int no_fonts_limit\001
+4 1 0 0 0 20 8 0.0000 4 120 840 990 1125 int bitmap_pad\001
+4 1 0 0 0 20 8 0.0000 4 105 555 990 1305 int endian\001
+4 1 0 0 0 20 8 0.0000 4 120 645 990 1665 pFontArray\001
+4 1 0 0 0 20 8 0.0000 4 120 1005 990 1485 char **default_enc\001
+-6
+6 2565 5400 4005 7380
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 6300 3870 6300
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 6480 3870 6480
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 6660 3870 6660
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 6840 3870 6840
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 7020 3870 7020
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 6120 3870 6120
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 5940 3870 5940
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 5760 3870 5760
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 5580 3870 5580
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2700 5400 3870 5400 3870 7200 2700 7200 2700 5400
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 7200 2700 7380
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3870 7200 3870 7380
+4 1 0 0 0 20 8 0.0000 4 120 840 3285 5535 pFontFileName\001
+4 1 0 0 0 20 8 0.0000 4 105 585 3285 6255 pKernMap\001
+4 1 0 0 0 20 8 0.0000 4 105 540 3285 6075 pEncMap\001
+4 1 0 0 0 20 8 0.0000 4 120 660 3285 5895 pType1Data\001
+4 1 0 0 0 20 8 0.0000 4 120 600 3285 5715 pAFMData\001
+4 1 0 0 0 20 8 0.0000 4 120 570 3285 6435 pFontEnc\001
+4 1 0 0 0 20 8 0.0000 4 120 495 3285 6615 vm_base\001
+4 1 0 0 0 20 8 0.0000 4 120 870 3285 6795 pFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 1170 3285 6975 double FontMatrix[4]\001
+4 1 0 0 0 20 8 0.0000 4 120 1365 3285 7155 double FontTransform[4]\001
+4 1 0 0 0 20 8 0.0000 4 105 555 3285 7335 float slant\001
+-6
+6 2610 315 3960 4275
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1215 3870 1215
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1395 3870 1395
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1575 3870 1575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1755 3870 1755
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1935 3870 1935
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 2115 3870 2115
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 2295 3870 2295
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 2475 3870 2475
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 2655 3870 2655
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 2835 3870 2835
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3015 3870 3015
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3195 3870 3195
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1035 3870 1035
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 855 3870 855
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 675 3870 675
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 495 3870 495
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3555 3870 3555
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3735 3870 3735
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3915 3870 3915
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 4095 3870 4095
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 3375 3870 3375
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2700 315 3870 315 3870 4275 2700 4275 2700 315
+4 1 0 0 0 20 8 0.0000 4 120 840 3285 450 pFontFileName\001
+4 1 0 0 0 20 8 0.0000 4 105 585 3285 1170 pKernMap\001
+4 1 0 0 0 20 8 0.0000 4 105 540 3285 990 pEncMap\001
+4 1 0 0 0 20 8 0.0000 4 120 660 3285 810 pType1Data\001
+4 1 0 0 0 20 8 0.0000 4 120 600 3285 630 pAFMData\001
+4 1 0 0 0 20 8 0.0000 4 120 570 3285 1350 pFontEnc\001
+4 1 0 0 0 20 8 0.0000 4 120 495 3285 1530 vm_base\001
+4 1 0 0 0 20 8 0.0000 4 120 870 3285 1710 pFontSizeDeps\001
+4 1 0 0 0 20 8 0.0000 4 120 1170 3285 1890 double FontMatrix[4]\001
+4 1 0 0 0 20 8 0.0000 4 105 675 3285 2430 float extend\001
+4 1 0 0 0 20 8 0.0000 4 105 945 3285 2610 float UndrLnPos\001
+4 1 0 0 0 20 8 0.0000 4 105 1005 3285 2790 float UndrLnThick\001
+4 1 0 0 0 20 8 0.0000 4 105 870 3285 2970 float OvrLnPos\001
+4 1 0 0 0 20 8 0.0000 4 105 930 3285 3150 float OvrLnThick\001
+4 1 0 0 0 20 8 0.0000 4 105 960 3285 3330 float OvrStrkPos\001
+4 1 0 0 0 20 8 0.0000 4 105 1080 3285 3510 float OverStrkThick\001
+4 1 0 0 0 20 8 0.0000 4 120 1320 3285 3690 unsigned short physical\001
+4 1 0 0 0 20 8 0.0000 4 120 1335 3285 3870 unsigned short refcount\001
+4 1 0 0 0 20 8 0.0000 4 120 1185 3285 4050 short space_position\001
+4 1 0 0 0 20 8 0.0000 4 120 900 3285 4230 short info_flags\001
+4 1 0 0 0 20 8 0.0000 4 105 555 3285 2250 float slant\001
+-6
+1 3 0 1 0 0 0 0 20 0.000 1 0.0000 5400 5310 45 45 5400 5310 5445 5310
+1 3 0 1 0 0 0 0 20 0.000 1 0.0000 5400 5490 45 45 5400 5490 5445 5490
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 3298 4577 45 45 3298 4577 3343 4577
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 3298 4712 45 45 3298 4712 3343 4712
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 3285 5310 45 45 3285 5310 3330 5310
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 3285 5175 45 45 3285 5175 3330 5175
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 3298 4410 45 45 3298 4410 3343 4410
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 1530 1440 2070 1440 2070 405 2700 405
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 5
+ 2 1 1.00 60.00 120.00
+ 3870 765 4950 765 4950 405 8190 405 8190 675
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 5
+ 2 1 1.00 60.00 120.00
+ 3870 585 4500 585 4500 315 9180 315 9180 675
+2 1 1 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 4275 45 4275 7425
+2 1 1 1 0 7 0 0 -1 4.000 0 0 -1 0 0 4
+ 4275 1080 6525 1080 6525 1215 9900 1215
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8730 1125 9630 1125 9630 675 8730 675 8730 1125
+2 2 1 1 0 7 0 0 -1 4.000 0 0 -1 0 0 5
+ 225 45 9900 45 9900 7425 225 7425 225 45
+2 1 1 1 0 7 0 0 -1 4.000 0 0 -1 0 0 2
+ 4275 2115 9900 2115
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 3870 1305 4050 1305 4050 900 6750 900
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 1 0 5
+ 2 1 1.00 60.00 120.00
+ 3870 1125 4140 1125 4140 1260 5400 1260 5400 1710
+2 1 0 1 0 7 0 0 -1 4.000 0 0 -1 1 0 5
+ 2 1 1.00 60.00 120.00
+ 3870 945 4185 945 4185 1215 6300 1215 6300 1710
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 6
+ 2 1 1.00 60.00 120.00
+ 5940 2475 6300 2475 6300 3420 4500 3420 4500 3555 4950 3555
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 6
+ 2 1 1.00 60.00 120.00
+ 5940 3915 6120 3915 6120 3330 4725 3330 4725 2475 4950 2295
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 3
+ 2 1 1.00 60.00 120.00
+ 4500 5535 4500 5985 4950 5985
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 3
+ 5940 6345 6120 6345 6120 5580
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 6
+ 2 1 1.00 60.00 120.00
+ 6120 5085 6120 4680 6120 4590 4725 4590 4725 3735 4950 3555
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5940 3735 6300 3735 6300 4680 4500 4680 4500 5085
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 2 1 1.00 60.00 120.00
+ 3870 1845 4050 1845 4050 2295 4950 2295
+3 0 0 1 0 7 0 0 -1 0.000 0 0 0 5
+ 4275 5445 4500 5535 5265 5715 6120 5535 6435 5580
+ 0.000 1.000 1.000 1.000 0.000
+3 0 0 1 0 7 0 0 -1 0.000 0 0 0 5
+ 4275 5040 4500 5085 5310 5220 6120 5085 6390 5040
+ 0.000 1.000 1.000 1.000 0.000
+4 0 0 0 0 22 15 0.0000 4 210 3840 4500 225 Level 1: Size-Independent Font Data\001
+4 0 0 0 0 22 15 0.0000 4 165 2655 450 225 Level 0: Global Data Area\001
+4 0 0 0 0 22 15 0.0000 4 210 3675 4500 7290 Level 2: Size-Dependent Font Data\001
+4 1 0 0 0 20 8 0.0000 4 105 825 9180 990 DataStructures\001
+4 1 0 0 0 20 8 0.0000 4 105 1050 9180 855 Adobe Font Metric\001
+4 0 0 0 0 22 15 0.0000 4 210 2670 6795 1440 Level 1b: Mapping Tables\001
+4 1 0 0 0 22 15 0.0000 4 165 1725 1305 2340 Global Variables\001
+4 1 0 0 0 20 10 0.0000 4 150 1320 3285 4905 Structure-Array of\001
+4 1 0 0 0 20 10 0.0000 4 150 1305 3285 5085 size no_fonts_limit\001
+4 1 0 0 0 20 8 0.0000 4 120 1365 3285 2070 double FontTransform[4]\001
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.pdf
new file mode 100644
index 00000000000..95a4090cdfe
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1_data.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath.eps
new file mode 100644
index 00000000000..f9f53e5bf7a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath.eps
@@ -0,0 +1,327 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: (Created manually by RMz, 2003-01-15. Illustration of t1lib parallel path construction)
+%%Title: Parallel Path Construction
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 600 500
+%%EndComments
+%
+% 3.
+
+gsave
+
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 500 def
+/yc 750 def
+/xd 500 def
+/yd 100 def
+
+% 4.
+/xa 100 def
+/ya 300 def
+/xb 100 def
+/y5 400 def
+/xc 500 def
+/yc 300 def
+/xd 300 def
+/yd 300 def
+
+
+% 2.
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 300 def
+/yc 550 def
+/xd 500 def
+/yd 600 def
+
+% 1.
+/xa 55 def
+/ya 40 def
+/xb 120 def
+/yb 200 def
+/xc 300 def
+/yc 400 def
+/xd 550 def
+/yd 445 def
+
+/TimesRoman findfont 25 scalefont setfont
+/line1 20 string def
+
+
+
+
+
+/linewidth 100 def
+
+% compute distance from Bezier_A to Bezier_B
+/dista xb xa sub dup mul yb ya sub dup mul add sqrt def
+
+% compute distance from Bezier_C to Bezier_D
+/distd xd xc sub dup mul yd yc sub dup mul add sqrt def
+
+/diameter linewidth 2 div def
+
+% compute resulting limit values of thick curve at end points
+/dxa yb ya sub diameter mul dista div def
+/dya xb xa sub diameter mul dista div neg def
+/dxd yd yc sub diameter mul distd div def
+/dyd xd xc sub diameter mul distd div neg def
+
+% draw curve as rendered by ghostscript
+0.9 0.9 0.9 setrgbcolor
+xa ya moveto
+xb yb xc yc xd yd curveto
+%linewidth 40 div setlinewidth
+linewidth setlinewidth
+0 setlinecap
+stroke
+
+0.0 0.0 0.0 setrgbcolor
+xa ya moveto
+xb yb xc yc xd yd curveto
+1 setlinewidth
+0 setlinecap
+[4 4] 0 setdash
+stroke
+
+
+% reset dash
+[] 0 setdash
+
+% correct right path end points
+/xar xa dxa add def
+/yar ya dya add def
+/xdr xd dxd add def
+/ydr yd dyd add def
+
+% correct left path end points
+/xal xa dxa sub def
+/yal ya dya sub def
+/xdl xd dxd sub def
+/ydl yd dyd sub def
+
+
+/x1 xa xb add 0.5 mul def
+/y1 ya yb add 0.5 mul def
+/x2 xb xc add 0.5 mul def
+/y2 yb yc add 0.5 mul def
+/x3 xc xd add 0.5 mul def
+/y3 yc yd add 0.5 mul def
+/x4 xa xb 2 mul add xc add 4 div def
+/y4 ya yb 2 mul add yc add 4 div def
+/x5 xd xc 2 mul add xb add 4 div def
+/y5 yd yc 2 mul add yb add 4 div def
+/x6 xa xb 3 mul add xc 3 mul add xd add 8 div def
+/y6 ya yb 3 mul add yc 3 mul add yd add 8 div def
+
+0 0 0 setrgbcolor
+newpath xa ya 4.0 0 360 arc closepath fill
+newpath xb yb 4.0 0 360 arc closepath fill
+newpath xc yc 4.0 0 360 arc closepath fill
+newpath xd yd 4.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x1 y1 3.0 0 360 arc closepath fill
+newpath x2 y2 3.0 0 360 arc closepath fill
+newpath x3 y3 3.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x4 y4 2.0 0 360 arc closepath fill
+newpath x5 y5 2.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x6 y6 4.0 0 360 arc closepath stroke
+
+
+% compute right-side normal vector
+/nabs diameter x5 x4 sub dup mul y5 y4 sub dup mul add sqrt div def
+
+/nxr y5 y4 sub nabs mul def
+/nyr x4 x5 sub nabs mul def
+
+0 0 0 setrgbcolor
+newpath x6 nxr add y6 nyr add 4.0 0 360 arc closepath stroke
+newpath x6 nxr sub y6 nyr sub 4.0 0 360 arc closepath stroke
+
+% calculate location and direction vectors of lines to intersect
+/bloc1x 4 nxr x6 add mul xar 2 mul sub xdr add 3 div def
+/bloc1y 4 nyr y6 add mul yar 2 mul sub ydr add 3 div def
+/bdir1x xc xd add xa sub xb sub def
+/bdir1y yc yd add ya sub yb sub def
+/bloc2x xar def
+/bloc2y yar def
+/bdir2x xb xa sub def
+/bdir2y yb ya sub def
+
+% calculate determinant and inverse
+/bdet bdir2x bdir1y mul bdir2y bdir1x mul sub def
+
+%bdet 0.0 eq
+bdet abs 0.001 le
+{
+ /xbr xb nxr add def
+ /ybr yb nyr add def
+ /bnu 0.0 def
+ /bmu 0.0 def
+}
+{
+ /binvdet 1 bdet div def
+
+ % calculate inverse of dir matrix
+ /binvdir2x bdir1y binvdet mul def
+ /binvdir2y bdir2y binvdet mul neg def
+ /binvdir1x bdir1x binvdet mul neg def
+ /binvdir1y bdir2x binvdet mul def
+
+ % calculate mu and nu value (nu actually is not required)
+ /bmu binvdir2x bloc1x bloc2x sub mul binvdir1x bloc1y bloc2y sub mul add def
+ /bnu binvdir2y bloc1x bloc2x sub mul binvdir1y bloc1y bloc2y sub mul add def
+
+ /xbr bloc2x bmu bdir2x mul add def
+ /ybr bloc2y bmu bdir2y mul add def
+}
+ifelse
+
+
+
+% calculate location and direction vectors of lines to intersect
+/cloc1x 4 nxr x6 add mul xar add xdr 2 mul sub 3 div def
+/cloc1y 4 nyr y6 add mul yar add ydr 2 mul sub 3 div def
+/cdir1x xc xd add xa sub xb sub def
+/cdir1y yc yd add ya sub yb sub def
+/cloc2x xdr def
+/cloc2y ydr def
+/cdir2x xc xd sub def
+/cdir2y yc yd sub def
+
+% calculate determinant and inverse
+/cdet cdir2x cdir1y mul cdir2y cdir1x mul sub def
+
+%cdet 0.0 eq
+cdet abs 0.001 le
+{
+ % curve is just a straight line
+ /xcr xc nxr add def
+ /ycr yc nyr add def
+ /cmu 0.0 def
+}
+{
+ /cinvdet 1 cdet div def
+
+ % calculate inverse of dir matrix
+ /cinvdir2x cdir1y cinvdet mul def
+ /cinvdir2y cdir2y cinvdet mul neg def
+ /cinvdir1x cdir1x cinvdet mul neg def
+ /cinvdir1y cdir2x cinvdet mul def
+
+ % calculate mu and nu value (mu actually is not required)
+ /cmu cinvdir2x cloc1x cloc2x sub mul cinvdir1x cloc1y cloc2y sub mul add def
+ /cnu cinvdir2y cloc1x cloc2x sub mul cinvdir1y cloc1y cloc2y sub mul add def
+
+ /xcr cloc2x cmu cdir2x mul add def
+ /ycr cloc2y cmu cdir2y mul add def
+}
+ifelse
+
+
+% Analyse coefficients and decide how to compute displacements
+bmu 0.1 le
+{
+ /xbr 8 nxr x6 add mul xar sub xdr sub 3 div xcr sub def
+ /ybr 8 nyr y6 add mul yar sub ydr sub 3 div ycr sub def
+}
+if
+
+cmu 0.1 le
+{
+ /xcr 8 nxr x6 add mul xar sub xdr sub 3 div xbr sub def
+ /ycr 8 nyr y6 add mul yar sub ydr sub 3 div ybr sub def
+}
+if
+
+
+% define delta values
+/dxb xbr xb sub def
+/dyb ybr yb sub def
+/dxc xcr xc sub def
+/dyc ycr yc sub def
+
+
+0.5 setlinewidth
+
+% show tangent at t=0.5 and their shifted counterparts
+[32 32] 0 setdash
+x4 y4 moveto
+x5 y5 lineto
+stroke
+x4 nxr add y4 nyr add moveto
+x5 nxr add y5 nyr add lineto
+x4 nxr sub y4 nyr sub moveto
+x5 nxr sub y5 nyr sub lineto
+stroke
+[] 0 setdash
+
+0 0 0 setrgbcolor
+1 setlinewidth
+
+% stroke right curve
+xar yar moveto
+xb dxb add yb dyb add xc dxc add yc dyc add xdr ydr curveto
+stroke
+% stroke left curve
+xal yal moveto
+xb dxb sub yb dyb sub xc dxc sub yc dyc sub xdl ydl curveto
+stroke
+
+%0.2 0.5 0.8 setrgbcolor
+%newpath bloc2x bloc2y 5.0 0 360 arc closepath fill
+%bloc2x 10 bdir2x mul sub bloc2y 10 bdir2y mul sub moveto
+%bloc2x 10 bdir2x mul add bloc2y 10 bdir2y mul add lineto stroke
+
+%0.5 0.5 0.5 setrgbcolor
+%newpath bloc1x bloc1y 5.0 0 360 arc closepath fill
+%bloc1x 10 bdir1x mul sub bloc1y 10 bdir1y mul sub moveto
+%bloc1x 10 bdir1x mul add bloc1y 10 bdir1y mul add lineto stroke
+
+
+% draw tangents
+0 0 0 setrgbcolor
+%1 setlinewidth
+%[5 5] 0 setdash
+0.5 setlinewidth
+[4 4] 0 setdash
+xa ya moveto xb yb lineto stroke
+xd yd moveto xc yc lineto stroke
+[] 0 setdash
+xar yar moveto xb dxb add yb dyb add lineto stroke
+xdr ydr moveto xc dxc add yc dyc add lineto stroke
+xal yal moveto xb dxb sub yb dyb sub lineto stroke
+xdl ydl moveto xc dxc sub yc dyc sub lineto stroke
+
+% draw auxiliary lines
+[8 8] 0 setdash
+xb yb moveto xc yc lineto stroke
+[16 16] 0 setdash
+x1 y1 moveto x2 y2 lineto stroke
+x2 y2 moveto x3 y3 lineto stroke
+
+
+% draw resulting points
+0 0 0 setrgbcolor
+newpath xar yar 4.0 0 360 arc closepath fill
+newpath xb dxb add yb dyb add 4.0 0 360 arc closepath fill
+newpath xc dxc add yc dyc add 4.0 0 360 arc closepath fill
+newpath xdr ydr 4.0 0 360 arc closepath fill
+newpath xal yal 4.0 0 360 arc closepath fill
+newpath xb dxb sub yb dyb sub 4.0 0 360 arc closepath fill
+newpath xc dxc sub yc dyc sub 4.0 0 360 arc closepath fill
+newpath xdl ydl 4.0 0 360 arc closepath fill
+
+
+grestore
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.eps
new file mode 100644
index 00000000000..ccb61e87ee9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.eps
@@ -0,0 +1,850 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%For: Rainer Menzner
+%%CreationDate: Sun Feb 9 17:57:06 2003
+%%Title: parallelpath_sk.eps
+%%Creator: Sketch 0.6.8
+%%Pages: 1
+%%BoundingBox: 8 92 614 598
+%%Extensions: CMYK
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededResources: font Helvetica
+%%EndComments
+
+%%BeginProlog
+%%BeginResource: procset Linux-Sketch-Procset 1.0 2
+/SketchDict 100 dict def
+SketchDict begin
+/bd { bind def } bind def
+/x { exch } bd
+/xd { exch def } bd
+/PI 3.14159265358979323846264338327 def
+/radgrad { 180 mul PI div } bd
+/skstartmatrix matrix currentmatrix def
+/tmpmat matrix def
+/ISOLatin1Encoding dup where
+{ pop pop }
+{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period
+/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon
+/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J
+/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i
+/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve
+/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek
+/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen
+/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu
+/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
+/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex
+/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex
+/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve
+/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute
+/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute
+/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute
+/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde
+/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
+/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def
+}
+ifelse
+/arct dup where
+{pop pop}
+{
+/arct {arcto pop pop pop pop} bd
+}
+ifelse
+/size 0 def
+/fontname 0 def
+/newfont 0 def
+/sf {
+/size xd
+/fontname xd
+fontname findfont
+dup /Encoding get StandardEncoding eq
+{
+dup
+length dict /newfont xd
+{
+1 index
+/FID ne
+{ newfont 3 1 roll put }
+{ pop pop }
+ifelse
+} forall
+newfont /Encoding ISOLatin1Encoding put
+fontname newfont definefont
+}
+if
+size scalefont setfont
+} bd
+/pusht {matrix currentmatrix} bd
+/popt {setmatrix} bd
+/pushc {gsave} bd
+/popc {grestore} bd
+/rgb {setrgbcolor} bd
+/w { setlinewidth } bd
+/j { setlinejoin } bd
+/J { setlinecap } bd
+/d { setdash } bd
+/F { eofill } bd
+/f { closepath F } bd
+/S {
+pusht
+skstartmatrix setmatrix stroke
+popt
+} bd
+/s { closepath S } bd
+/m { moveto } bd
+/l { lineto } bd
+/c { curveto } bd
+/txt {
+/tmpmat tmpmat currentmatrix def
+dup type /arraytype eq {concat} {translate} ifelse
+0 0 m
+tmpmat
+} bd
+/T {txt x show popt} bd
+/P {txt x true charpath popt} bd
+/TP {txt x dup show 0 0 m true charpath popt} bd
+/C {newpath 0 360 arc} bd
+/R {
+2 copy m
+x 2 index l
+x 2 index x l
+l
+closepath
+} bd
+/ellipse {
+dup type /arraytype eq
+{
+pusht x concat
+0 0 1.0 C
+popt
+}
+{
+pusht 5 1 roll
+4 -1 roll concat
+newpath
+dup 2 eq {
+0 0 m
+} if
+3 1 roll
+radgrad x
+radgrad x
+0 0 1 5 -2 roll
+arc
+0 ne { closepath } if
+popt
+}
+ifelse
+} bd
+/radius1 0 def
+/radius2 0 def
+/factor 0 def
+/rect {
+dup type /arraytype eq
+{
+pusht x concat
+0 0 m 1 0 l 1 1 l 0 1 l closepath
+popt
+}
+{
+/radius2 xd
+/radius1 xd
+pusht x concat
+radius1 radius2 div 1 scale
+0 radius2 m
+0 1 radius2 1 radius2 arct
+radius2 radius1 div
+dup 1 1 index 0 radius2 arct
+0 0 0 radius2 arct
+0 0 0 1 radius2 arct
+closepath
+popt
+}
+ifelse
+} bd
+/buf 0 def
+/width 0 def
+/height 0 def
+/skcimg {
+/tmpmat tmpmat currentmatrix def
+{ concat } if
+/height xd
+/width xd
+/buf width 3 mul string def
+width height scale
+width height 8
+[width 0 0 height neg 0 height]
+{ currentfile buf readhexstring pop } bind
+false 3 colorimage
+tmpmat setmatrix
+} bd
+/skgimg {
+/tmpmat tmpmat currentmatrix def
+{ concat } if
+/height xd
+/width xd
+/buf width string def
+width height scale
+width height 8
+[width 0 0 height neg 0 height]
+{ currentfile buf readhexstring pop } bind
+image
+tmpmat setmatrix
+} bd
+/rclip {
+4 2 roll m
+dup 0 x rlineto
+x 0 rlineto
+neg 0 x rlineto
+closepath
+clip
+} bd
+/skeps {
+10 dict begin
+/sk_state save def
+concat
+3 index neg 3 index neg translate
+rclip
+0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
+10 setmiterlimit [ ] 0 setdash
+newpath
+/sk_dict_count countdictstack def
+/sk_count count 1 sub def
+userdict begin
+/showpage { } def
+/languagelevel where
+{
+pop
+languagelevel 1 ne
+{
+false setstrokeadjust
+false setoverprint
+} if
+} if
+} bd
+/skepsend {
+count sk_count sub { pop } repeat
+countdictstack sk_dict_count sub { end } repeat
+sk_state restore
+end
+} bd
+/gradidx 0 def
+/gradient {
+3 mul array
+/gradidx 0 def
+} bd
+/$ {
+3 index gradidx 5 -1 roll put
+2 index gradidx 1 add 4 -1 roll put
+1 index gradidx 2 add 3 -1 roll put
+/gradidx gradidx 3 add def
+} bd
+/! {
+3
+{
+dup dup gradidx dup 3 1 roll 3 sub get put
+/gradidx gradidx 1 add def
+}
+repeat
+} bd
+/gradcolor {
+3 mul dup 2 add 1 exch % idx 1 idx+2
+{
+1 index exch % array array i
+get % array component
+exch % component array
+}
+for
+4 1 roll
+} bd
+/x0 0 def /y0 0 def /x1 0 def /y1 0 def
+/left 0 def /right 0 def /top 0 def /bottom 0 def
+/numcolors 0 def
+/axial {
+/y1 xd /x1 xd /y0 xd /x0 xd
+dup length 3 idiv /numcolors xd
+pusht exch % ctm array
+x0 x1 ne y0 y1 ne or
+{
+x0 y0 translate
+[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat
+clippath flattenpath pathbbox
+/top xd /right xd /bottom xd /left xd
+newpath
+0 gradcolor rgb clippath f
+0 1 numcolors 1 sub
+{
+dup numcolors div
+3 1 roll
+gradcolor rgb
+exch
+bottom right top R f
+}
+for
+}
+if
+pop
+popt
+} bd
+/r0 0 def /r1 0 def /dr 0 def
+/radial {
+/r1 xd /r0 xd /y0 xd /x0 xd
+/dr r1 r0 sub def
+dup length 3 idiv /numcolors xd
+pusht exch % ctm array
+r0 r1 ne
+{
+x0 y0 translate
+clippath flattenpath pathbbox
+/top xd /right xd /bottom xd /left xd
+newpath
+dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb
+clippath f
+dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse
+{
+dup numcolors div dr mul r0 add
+3 1 roll
+gradcolor rgb
+exch
+0 0 3 -1 roll C f
+}
+for
+}
+if
+pop
+popt
+} bd
+/max {
+2 copy lt {exch} if pop
+} bd
+/conical {
+pusht 5 1 roll
+3 1 roll /y0 xd /x0 xd
+x0 y0 translate
+radgrad rotate
+dup length 3 idiv /numcolors xd
+clippath flattenpath pathbbox newpath
+4 { abs 4 1 roll} repeat
+3 { max } repeat
+2 mul
+dup scale
+0 gradcolor rgb
+0 0 1 0 360 arc f
+1 1 numcolors 1 sub
+{
+dup numcolors div 180 mul
+3 1 roll
+gradcolor rgb
+exch
+0 0 moveto
+0 0 1 4 -1 roll dup neg arc
+closepath f
+}
+for
+pop
+popt
+} bd
+/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def
+/tileimage2 {
+exch 4 2 roll
+/height xd
+/width xd
+mark
+/components 2 index
+/PatternType 1
+/PaintType 1
+/TilingType 1
+/BBox [0 0 width height]
+/XStep width
+/YStep height
+/PaintProc {
+begin
+XStep YStep 8
+matrix
+imagedata
+false
+components
+colorimage
+end
+}
+counttomark 2 div cvi dup dict begin
+{ def } repeat
+pop currentdict end
+dup
+/imagedata
+4 -1 roll
+width height mul mul string
+currentfile exch readhexstring pop
+put
+exch
+makepattern
+setpattern
+clippath
+eofill
+} bd
+/tileimage1 {
+concat
+/components xd
+/height xd
+/width xd
+/imagedata
+currentfile
+width height mul components mul string
+readhexstring pop
+def
+clippath flattenpath pathbbox
+/top xd /right xd /bottom xd /left xd
+left width div floor width mul
+bottom height div floor height mul
+translate
+top bottom sub height div ceiling cvi
+{
+gsave
+right left sub width div ceiling cvi
+{
+width height 8 matrix
+components 1 eq
+{
+{ imagedata }
+image
+}
+{
+imagedata
+false components
+colorimage
+}
+ifelse
+width 0 translate
+}
+repeat
+grestore
+0 height translate
+}
+repeat
+} bd
+/makepattern where
+{
+pop
+/tileimage /tileimage2 load def
+}
+{
+/tileimage /tileimage1 load def
+}
+ifelse
+end
+%%EndResource
+%%EndProlog
+
+%%BeginSetup
+%%IncludeResource: font Helvetica
+
+10.433 setmiterlimit
+%%EndSetup
+
+%%Page: 1 1
+SketchDict begin
+0 0 600 500 [1 0 0 1 11.0594 95.5815]
+skeps
+%%BeginDocument: /home/rmz/src/t1lib-5.0.0/doc/t1dump/parallelpath.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: (Created manually by RMz, 2003-01-15. Illustration of t1lib parallel path construction)
+%%Title: Parallel Path Construction
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 600 500
+%%EndComments
+%
+% 3.
+
+gsave
+
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 500 def
+/yc 750 def
+/xd 500 def
+/yd 100 def
+
+% 4.
+/xa 100 def
+/ya 300 def
+/xb 100 def
+/y5 400 def
+/xc 500 def
+/yc 300 def
+/xd 300 def
+/yd 300 def
+
+
+% 2.
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 300 def
+/yc 550 def
+/xd 500 def
+/yd 600 def
+
+% 1.
+/xa 55 def
+/ya 40 def
+/xb 120 def
+/yb 200 def
+/xc 300 def
+/yc 400 def
+/xd 550 def
+/yd 445 def
+
+/TimesRoman findfont 25 scalefont setfont
+/line1 20 string def
+
+
+
+
+
+/linewidth 100 def
+
+% compute distance from Bezier_A to Bezier_B
+/dista xb xa sub dup mul yb ya sub dup mul add sqrt def
+
+% compute distance from Bezier_C to Bezier_D
+/distd xd xc sub dup mul yd yc sub dup mul add sqrt def
+
+/diameter linewidth 2 div def
+
+% compute resulting limit values of thick curve at end points
+/dxa yb ya sub diameter mul dista div def
+/dya xb xa sub diameter mul dista div neg def
+/dxd yd yc sub diameter mul distd div def
+/dyd xd xc sub diameter mul distd div neg def
+
+% draw curve as rendered by ghostscript
+0.9 0.9 0.9 setrgbcolor
+xa ya moveto
+xb yb xc yc xd yd curveto
+%linewidth 40 div setlinewidth
+linewidth setlinewidth
+0 setlinecap
+stroke
+
+0.0 0.0 0.0 setrgbcolor
+xa ya moveto
+xb yb xc yc xd yd curveto
+1 setlinewidth
+0 setlinecap
+[4 4] 0 setdash
+stroke
+
+
+% reset dash
+[] 0 setdash
+
+% correct right path end points
+/xar xa dxa add def
+/yar ya dya add def
+/xdr xd dxd add def
+/ydr yd dyd add def
+
+% correct left path end points
+/xal xa dxa sub def
+/yal ya dya sub def
+/xdl xd dxd sub def
+/ydl yd dyd sub def
+
+
+/x1 xa xb add 0.5 mul def
+/y1 ya yb add 0.5 mul def
+/x2 xb xc add 0.5 mul def
+/y2 yb yc add 0.5 mul def
+/x3 xc xd add 0.5 mul def
+/y3 yc yd add 0.5 mul def
+/x4 xa xb 2 mul add xc add 4 div def
+/y4 ya yb 2 mul add yc add 4 div def
+/x5 xd xc 2 mul add xb add 4 div def
+/y5 yd yc 2 mul add yb add 4 div def
+/x6 xa xb 3 mul add xc 3 mul add xd add 8 div def
+/y6 ya yb 3 mul add yc 3 mul add yd add 8 div def
+
+0 0 0 setrgbcolor
+newpath xa ya 4.0 0 360 arc closepath fill
+newpath xb yb 4.0 0 360 arc closepath fill
+newpath xc yc 4.0 0 360 arc closepath fill
+newpath xd yd 4.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x1 y1 3.0 0 360 arc closepath fill
+newpath x2 y2 3.0 0 360 arc closepath fill
+newpath x3 y3 3.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x4 y4 2.0 0 360 arc closepath fill
+newpath x5 y5 2.0 0 360 arc closepath fill
+
+0 0 0 setrgbcolor
+newpath x6 y6 4.0 0 360 arc closepath stroke
+
+
+% compute right-side normal vector
+/nabs diameter x5 x4 sub dup mul y5 y4 sub dup mul add sqrt div def
+
+/nxr y5 y4 sub nabs mul def
+/nyr x4 x5 sub nabs mul def
+
+0 0 0 setrgbcolor
+newpath x6 nxr add y6 nyr add 4.0 0 360 arc closepath stroke
+newpath x6 nxr sub y6 nyr sub 4.0 0 360 arc closepath stroke
+
+% calculate location and direction vectors of lines to intersect
+/bloc1x 4 nxr x6 add mul xar 2 mul sub xdr add 3 div def
+/bloc1y 4 nyr y6 add mul yar 2 mul sub ydr add 3 div def
+/bdir1x xc xd add xa sub xb sub def
+/bdir1y yc yd add ya sub yb sub def
+/bloc2x xar def
+/bloc2y yar def
+/bdir2x xb xa sub def
+/bdir2y yb ya sub def
+
+% calculate determinant and inverse
+/bdet bdir2x bdir1y mul bdir2y bdir1x mul sub def
+
+%bdet 0.0 eq
+bdet abs 0.001 le
+{
+ /xbr xb nxr add def
+ /ybr yb nyr add def
+ /bnu 0.0 def
+ /bmu 0.0 def
+}
+{
+ /binvdet 1 bdet div def
+
+ % calculate inverse of dir matrix
+ /binvdir2x bdir1y binvdet mul def
+ /binvdir2y bdir2y binvdet mul neg def
+ /binvdir1x bdir1x binvdet mul neg def
+ /binvdir1y bdir2x binvdet mul def
+
+ % calculate mu and nu value (nu actually is not required)
+ /bmu binvdir2x bloc1x bloc2x sub mul binvdir1x bloc1y bloc2y sub mul add def
+ /bnu binvdir2y bloc1x bloc2x sub mul binvdir1y bloc1y bloc2y sub mul add def
+
+ /xbr bloc2x bmu bdir2x mul add def
+ /ybr bloc2y bmu bdir2y mul add def
+}
+ifelse
+
+
+
+% calculate location and direction vectors of lines to intersect
+/cloc1x 4 nxr x6 add mul xar add xdr 2 mul sub 3 div def
+/cloc1y 4 nyr y6 add mul yar add ydr 2 mul sub 3 div def
+/cdir1x xc xd add xa sub xb sub def
+/cdir1y yc yd add ya sub yb sub def
+/cloc2x xdr def
+/cloc2y ydr def
+/cdir2x xc xd sub def
+/cdir2y yc yd sub def
+
+% calculate determinant and inverse
+/cdet cdir2x cdir1y mul cdir2y cdir1x mul sub def
+
+%cdet 0.0 eq
+cdet abs 0.001 le
+{
+ % curve is just a straight line
+ /xcr xc nxr add def
+ /ycr yc nyr add def
+ /cmu 0.0 def
+}
+{
+ /cinvdet 1 cdet div def
+
+ % calculate inverse of dir matrix
+ /cinvdir2x cdir1y cinvdet mul def
+ /cinvdir2y cdir2y cinvdet mul neg def
+ /cinvdir1x cdir1x cinvdet mul neg def
+ /cinvdir1y cdir2x cinvdet mul def
+
+ % calculate mu and nu value (mu actually is not required)
+ /cmu cinvdir2x cloc1x cloc2x sub mul cinvdir1x cloc1y cloc2y sub mul add def
+ /cnu cinvdir2y cloc1x cloc2x sub mul cinvdir1y cloc1y cloc2y sub mul add def
+
+ /xcr cloc2x cmu cdir2x mul add def
+ /ycr cloc2y cmu cdir2y mul add def
+}
+ifelse
+
+
+% Analyse coefficients and decide how to compute displacements
+bmu 0.1 le
+{
+ /xbr 8 nxr x6 add mul xar sub xdr sub 3 div xcr sub def
+ /ybr 8 nyr y6 add mul yar sub ydr sub 3 div ycr sub def
+}
+if
+
+cmu 0.1 le
+{
+ /xcr 8 nxr x6 add mul xar sub xdr sub 3 div xbr sub def
+ /ycr 8 nyr y6 add mul yar sub ydr sub 3 div ybr sub def
+}
+if
+
+
+% define delta values
+/dxb xbr xb sub def
+/dyb ybr yb sub def
+/dxc xcr xc sub def
+/dyc ycr yc sub def
+
+
+0.5 setlinewidth
+
+% show tangent at t=0.5 and their shifted counterparts
+[32 32] 0 setdash
+x4 y4 moveto
+x5 y5 lineto
+stroke
+x4 nxr add y4 nyr add moveto
+x5 nxr add y5 nyr add lineto
+x4 nxr sub y4 nyr sub moveto
+x5 nxr sub y5 nyr sub lineto
+stroke
+[] 0 setdash
+
+0 0 0 setrgbcolor
+1 setlinewidth
+
+% stroke right curve
+xar yar moveto
+xb dxb add yb dyb add xc dxc add yc dyc add xdr ydr curveto
+stroke
+% stroke left curve
+xal yal moveto
+xb dxb sub yb dyb sub xc dxc sub yc dyc sub xdl ydl curveto
+stroke
+
+%0.2 0.5 0.8 setrgbcolor
+%newpath bloc2x bloc2y 5.0 0 360 arc closepath fill
+%bloc2x 10 bdir2x mul sub bloc2y 10 bdir2y mul sub moveto
+%bloc2x 10 bdir2x mul add bloc2y 10 bdir2y mul add lineto stroke
+
+%0.5 0.5 0.5 setrgbcolor
+%newpath bloc1x bloc1y 5.0 0 360 arc closepath fill
+%bloc1x 10 bdir1x mul sub bloc1y 10 bdir1y mul sub moveto
+%bloc1x 10 bdir1x mul add bloc1y 10 bdir1y mul add lineto stroke
+
+
+% draw tangents
+0 0 0 setrgbcolor
+%1 setlinewidth
+%[5 5] 0 setdash
+0.5 setlinewidth
+[4 4] 0 setdash
+xa ya moveto xb yb lineto stroke
+xd yd moveto xc yc lineto stroke
+[] 0 setdash
+xar yar moveto xb dxb add yb dyb add lineto stroke
+xdr ydr moveto xc dxc add yc dyc add lineto stroke
+xal yal moveto xb dxb sub yb dyb sub lineto stroke
+xdl ydl moveto xc dxc sub yc dyc sub lineto stroke
+
+% draw auxiliary lines
+[8 8] 0 setdash
+xb yb moveto xc yc lineto stroke
+[16 16] 0 setdash
+x1 y1 moveto x2 y2 lineto stroke
+x2 y2 moveto x3 y3 lineto stroke
+
+
+% draw resulting points
+0 0 0 setrgbcolor
+newpath xar yar 4.0 0 360 arc closepath fill
+newpath xb dxb add yb dyb add 4.0 0 360 arc closepath fill
+newpath xc dxc add yc dyc add 4.0 0 360 arc closepath fill
+newpath xdr ydr 4.0 0 360 arc closepath fill
+newpath xal yal 4.0 0 360 arc closepath fill
+newpath xb dxb sub yb dyb sub 4.0 0 360 arc closepath fill
+newpath xc dxc sub yc dyc sub 4.0 0 360 arc closepath fill
+newpath xdl ydl 4.0 0 360 arc closepath fill
+
+
+grestore
+%%EndDocument
+skepsend
+/Helvetica 12 sf
+(A)
+48 127 0 0 0 rgb
+T
+(A')
+108 98 T
+(B)
+117 293 T
+(C)
+306 501 T
+(D)
+572 541 T
+(D')
+582 485 T
+(C')
+348 434 T
+(B')
+177 248 T
+(P1)
+82 211 T
+(P2)
+204 394 T
+(P3)
+432 524 T
+(P4)
+146 308 T
+(P5)
+321 461 T
+(P6)
+256 376 T
+newpath
+130.394 294.803 m
+130.394 136.063 l
+65.1969 136.063 l
+1 w
+0 j
+0 J
+[4 4 ] 0 d
+S
+newpath
+68.0315 136.063 m
+113.386 116.22 l
+113.386 136.063 l
+S
+(w/2)
+74 115 T
+(P6')
+283 331 T
+(A'')
+14 138 T
+(B'')
+79 334 T
+(C'')
+274 549 T
+(D'')
+561 581 T
+(P6'')
+198 428 T
+%%PageTrailer
+showpage
+%%Trailer
+end
+%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2
+%%EOF
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.pdf
new file mode 100644
index 00000000000..79a12f1a68c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.sk b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.sk
new file mode 100644
index 00000000000..91e751533a5
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/parallelpath_sk.sk
@@ -0,0 +1,124 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Ebene 1',1,1,0,0,(0,0,0))
+eps((11.0594,95.5815),'parallelpath.eps')
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('A',(48.6889,127.34))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("A'",(108.399,98.9939))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('B',(117.18,293.277))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('C',(306.795,501.208))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('D',(572.904,541.071))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("D'",(582.6,485.048))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("C'",(348.812,434.412))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("B'",(177.512,248.028))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P1',(82.704,211.398))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P2',(204.094,394.016))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P3',(432.847,524.91))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P4',(146.899,308.758))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P5',(321.878,461.346))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('P6',(256.159,376.234))
+lw(1)
+ld((4, 4))
+b()
+bs(130.394,294.803,0)
+bs(130.394,136.063,0)
+bs(65.1969,136.063,0)
+lw(1)
+ld((4, 4))
+b()
+bs(68.0315,136.063,0)
+bs(113.386,116.22,0)
+bs(113.386,136.063,0)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('w/2',(74.8713,115.976))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("P6'",(283.465,331.654))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("A''",(14.1732,138.898))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("B''",(79.3701,334.488))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("C''",(274.961,549.921))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("D''",(561.26,581.102))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt("P6''",(198.425,428.031))
+guidelayer('Hilfslinien',1,0,0,1,(0,0,1))
+grid((0,0,2.83465,2.83465),1,(0,0,1),'Gitter')
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.eps
new file mode 100644
index 00000000000..79384002049
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.eps
@@ -0,0 +1,813 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: t1lib (edited manually by RMz, 2003-03-01)
+%%Title: Type1Char Character Dump
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 400 280
+%%DocumentPaperSizes: a4
+%%EndComments
+%!
+/T1LibDict 100 dict def
+T1LibDict begin
+% Setup the size from the type1 module
+/t1SetupSize {
+ /size exch def
+} def
+
+% Prepare the page. Compute scales and fill the charspace unit square
+% background
+/t1PreparePage {
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Start of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % Setup a standard linewidth
+ /t1dumpstdlinewidth 0.6 def
+ % Setup a scale for drawing direction arrows
+ /arrowscale 1.5 def
+
+ % Should we draw the device pixel grid? (1=yes, otherwise no)
+ /t1drawgrid 0 def
+ % Should we draw stems? (1=yes, otherwise no)
+ /t1drawstems 0 def
+ % Should we draw alignment zones? (1=yes, otherwise no)
+ /t1drawzones 0 def
+ % Should we fill the charspace unit square? (1=yes, otherwise no)
+ /t1fillunitsquare 0 def
+ % Should we fill the device page? (1=yes, otherwise no)
+ /t1fillpage 0 def
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)
+ /t1showoncurvepoints 0 def
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)
+ /t1showoffcurvepoints 0 def
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)
+ /t1showbeziertangents 0 def
+
+ % Define a few colors
+ /t1linecolor { 0.0 0.0 0.0 } def
+ /t1hlinecolor { 1.0 0.0 0.0 } def
+ /t1slinecolor { 0.0 0.0 0.0 } def
+ /t1movecolor { 1.0 1.0 1.0 } def
+ /t1hmovecolor { 1.0 0.0 0.0 } def
+ /t1smovecolor { 1.0 1.0 1.0 } def
+ /t1curvecolor { 0.0 0.0 0.0 } def
+ /t1hcurvecolor { 1.0 0.0 0.0 } def
+ /t1scurvecolor { 0.0 0.0 0.0 } def
+ /t1sprolongatecolor { 0.0 0.0 0.0 } def
+ /t1stemcolor { 0.0 0.0 1.0 } def
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def
+ /t1topzonecolor { 1.0 1.0 0.0 } def
+ /t1arrowcolor { 0.0 0.0 0.0 } def
+ /t1harrowcolor { 1.0 0.0 0.0 } def
+ /t1sarrowcolor { 0.0 0.0 0.0 } def
+ /t1sbwcolor { 0.0 0.0 0.0 } def
+ /t1closepathcolor { 0.0 0.0 0.0 } def
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def
+ /t1sclosepathcolor { 0.0 0.0 0.0 } def
+ /t1pagecolor { 0.7 0.7 0.7 } def
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def
+ /t1gridcolor { 0.0 0.0 0.0 } def
+
+ % Line scale relative to the standard linewidth
+ /t1linescale 2.5 def
+ /t1hlinescale 0.4 def
+ /t1slinescale 1.0 def
+ /t1movescale 0.0 def
+ /t1hmovescale 0.0 def
+ /t1smovescale 0.0 def
+ /t1curvescale 2.5 def
+ /t1hcurvescale 0.4 def
+ /t1scurvescale 1.0 def
+ /t1curvetangentscale 0.5 def
+ /t1sprolongatescale 1.0 def
+ /t1stemscale 0.5 def
+ /t1alignedstemscale 0.5 def
+ /t1bottomzonescale 0.5 def
+ /t1topzonescale 0.5 def
+ /t1closepathscale 0.4 def
+ /t1hclosepathscale 0.4 def
+ /t1sclosepathscale 0.4 def
+ /t1gridscale 0.5 def
+
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [2 2] 0 } def
+ /t1hlinedash { [] 0 } def
+ /t1slinedash { [] 0 } def
+ /t1movedash { [2 2] 0 } def
+ /t1hmovedash { [2 2] 0 } def
+ /t1smovedash { [2 2] 0 } def
+ /t1curvedash { [2 2] 0 } def
+ /t1hcurvedash { [] 0 } def
+ /t1scurvedash { [] 0 } def
+ /t1sprolongatedash { [3 3] 0 }def
+ /t1closepathdash { [] 0 } def
+ /t1hclosepathdash { [] 0 } def
+ /t1sclosepathdash { [] 0 } def
+ /t1griddash { [3 3] 0 } def
+
+ % Define a clipping rectangle ROI (in charspace coordinates)
+ /t1ROIxmin 405 def
+ /t1ROIxmax 505 def
+ /t1ROIymin 320 def
+ /t1ROIymax 340 def
+% /t1ROIxmin 0 def
+% /t1ROIxmax 600 def
+% /t1ROIymin -100 def
+% /t1ROIymax 800 def
+
+ % Device values (in bp). These must match the Bounding Box Statement!
+ /xmindev 0 neg def
+ /xmaxdev 400 def
+ /ymindev 0 neg def
+ /ymaxdev 280 def
+ /dxdev 1 def
+ /dydev 1 def
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % End of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % logical pixel values
+ /xminpixel t1ROIxmin 1000.0 div size mul def
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def
+ /yminpixel t1ROIymin 1000.0 div size mul def
+ /ymaxpixel t1ROIymax 1000.0 div size mul def
+ /dxpixel 1 def
+ /dypixel 1 def
+
+ % compute scales and set minimum scale
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse
+
+ % Fill device page
+ xmindev ymindev moveto
+ xmaxdev 0 rlineto
+ 0 ymaxdev rlineto
+ xmaxdev neg 0 rlineto
+ 0 ymaxdev neg rlineto
+ closepath
+ clip
+ t1fillpage 1 eq
+ {
+ t1pagecolor setrgbcolor
+ fill
+ } if
+
+ % reassign device values
+ /xmindev xminpixel scale mul def
+ /xmaxdev xmaxpixel scale mul def
+ /ymindev yminpixel scale mul def
+ /ymaxdev ymaxpixel scale mul def
+ /dxdev dxpixel scale mul def
+ /dydev dypixel scale mul def
+
+ % translate coordinate system
+ xminpixel scale mul neg yminpixel scale mul neg translate
+
+ % Fill unit square of charspace coordinate system
+ t1fillunitsquare 1 eq
+ {
+ t1unitsquarecolor setrgbcolor
+ 0 0 moveto
+ size scale mul 0 rlineto
+ 0 size scale mul rlineto
+ size scale mul neg 0 rlineto
+ 0 size scale mul neg rlineto
+ closepath fill
+ } if
+} def
+
+/t1FinishPage {
+ t1drawgrid 1 eq
+ {
+ t1gridcolor setrgbcolor
+ t1gridscale setlinewidth
+ t1griddash setdash
+ % draw grid and align to the point (0,0)
+ 0 dxdev xmaxdev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dxdev neg xmindev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dydev ymaxdev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ 0 dydev neg ymindev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ } if
+} def
+
+% Define three arrow routines available for later providing the output with directions
+/t1arrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1arrowcolor setrgbcolor
+ currx curry translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1harrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1harrowcolor setrgbcolor
+ currhx currhy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1sarrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1sarrowcolor setrgbcolor
+ currsx currsy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale t1dumpstdlinewidth neg mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul neg 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+
+/t1rlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1linecolor setrgbcolor
+ t1linedash setdash
+ t1linescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+} def
+
+/t1srlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1slinecolor setrgbcolor
+ t1slinedash setdash
+ t1slinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1sprolongate {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1sprolongatecolor setrgbcolor
+ t1sprolongatedash setdash
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1hintedrlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hlinecolor setrgbcolor
+ t1hlinedash setdash
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+} def
+
+/t1rmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1movecolor setrgbcolor
+ t1movedash setdash
+ t1movescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+ /startx currx def
+ /starty curry def
+} def
+
+/t1srmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1smovecolor setrgbcolor
+ t1smovedash setdash
+ t1smovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+ /startsx currsx def
+ /startsy currsy def
+} def
+
+/t1hintedrmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hmovecolor setrgbcolor
+ t1hmovedash setdash
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+ /starthx currhx def
+ /starthy currhy def
+} def
+
+/t1rrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1curvecolor setrgbcolor
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currx curry moveto
+ currx x2 add curry y2 add lineto
+ stroke
+ currx x2 x3 add add curry y2 y3 add add moveto
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ currx curry moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currx currx x2 x3 x4 add add add def
+ /curry curry y2 y3 y4 add add add def
+} def
+
+/t1srrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1scurvecolor setrgbcolor
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currsx currsy moveto
+ currsx x2 add currsy y2 add lineto
+ stroke
+ currsx x2 x3 add add currsy y2 y3 add add moveto
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ currsx currsy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currsx currsx x2 x3 x4 add add add def
+ /currsy currsy y2 y3 y4 add add add def
+} def
+
+/t1hintedrrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hcurvecolor setrgbcolor
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currhx currhy moveto
+ currhx x2 add currhy y2 add lineto
+ stroke
+ currhx x2 x3 add add currhy y2 y3 add add moveto
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ currhx currhy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currhx currhx x2 x3 x4 add add add def
+ /currhy currhy y2 y3 y4 add add add def
+} def
+
+/t1sbw {
+ /wy exch scale mul def
+ /wx exch scale mul def
+ /sby exch scale mul def
+ /sbx exch scale mul def
+ t1sbwcolor setrgbcolor
+ newpath sbx sby 3 0 360 arc closepath fill
+ newpath wx wy 3 0 360 arc closepath fill
+ /currx sbx def
+ /curry sby def
+ /currhx sbx def
+ /currhy sby def
+ /currsx sbx def
+ /currsy sby def
+} def
+
+/t1closepath {
+ t1closepathdash setdash
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth
+ t1closepathcolor setrgbcolor
+ currx curry moveto
+ startx starty lineto
+ stroke
+} def
+
+/t1sclosepath {
+ t1sclosepathdash setdash
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1sclosepathcolor setrgbcolor
+ currsx currsy moveto
+ startsx startsy lineto
+ stroke
+} def
+
+/t1hintedclosepath {
+ t1hclosepathdash setdash
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1hclosepathcolor setrgbcolor
+ currhx currhy moveto
+ starthx starthy lineto
+ stroke
+} def
+
+/t1vstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1alignedvstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1hstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1alignedhstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1bottomzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth
+ t1bottomzonecolor setrgbcolor
+ [] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+/t1topzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth
+ t1topzonecolor setrgbcolor
+ [2 2] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+end
+
+% Next follows drawing code from charstring commands:
+T1LibDict begin
+
+gsave
+15.000001 t1SetupSize
+t1PreparePage
+-0.329987 0.000000 t1bottomzone
+10.244583 10.574570 t1topzone
+6.464737 6.719727 t1topzone
+9.989594 10.154587 t1topzone
+-3.089874 -2.909882 t1bottomzone
+0.539978 0.000000 0.539978 0.000000 t1sbw
+2.789886 5.489777 t1srmoveto
+0.112495 -0.000000 t1sprolongate
+0.000000 3.689850 t1srlineto
+0.000000 0.426294 -0.027113 0.061186 0.649588 0.000000 t1srrcurveto
+1.859924 0.000000 t1srlineto
+1.370460 0.000000 0.496964 -1.199817 0.000000 -0.757604 t1srrcurveto
+0.000000 -0.906489 -0.692951 -1.200926 -1.594456 0.000000 t1srrcurveto
+-2.174911 0.000000 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+t1sclosepath
+-0.112495 -0.112495 t1srmoveto
+0.112495 -0.000000 t1sprolongate
+2.174911 0.000000 t1srlineto
+1.735409 0.000000 0.776989 1.318972 0.000000 1.013433 t1srrcurveto
+0.000000 0.832331 -0.552993 1.350080 -1.539422 0.000000 t1srrcurveto
+-1.859924 0.000000 t1srlineto
+-0.760355 0.000000 -0.087111 -0.148805 0.000000 -0.563666 t1srrcurveto
+0.000000 -3.689850 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+t1sclosepath
+2.287407 0.112495 t1srmoveto
+1.364944 -0.134995 t1srmoveto
+0.021624 -0.110398 t1sarrowhead t1sprolongate
+1.486204 0.291112 t1sarrowhead 1.094566 0.991078 0.000000 1.183112 t1srrcurveto
+0.000000 1.384597 -1.449269 1.262795 -1.993091 0.000000 t1srrcurveto
+-5.489777 0.000000 t1srlineto
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.112495 t1sprolongate
+0.000000 -0.464981 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+0.359985 0.000000 t1srlineto
+1.121659 0.000000 -0.049202 -0.140224 0.000000 -0.452251 t1srrcurveto
+0.000000 -7.904678 t1srlineto
+0.000000 -0.452251 0.049202 -0.140224 -1.121659 0.000000 t1srrcurveto
+-0.359985 0.000000 t1srlineto
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.112495 t1sprolongate
+0.000000 -0.464981 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+5.879761 0.000000 t1srlineto
+2.045333 0.000000 1.412026 1.374159 0.000000 1.483225 t1srrcurveto
+0.000000 1.378456 -1.290667 1.158998 -1.704620 0.184283 t1srrcurveto
+-0.012091 -0.111844 t1sarrowhead t1sprolongate
+t1sclosepath
+-0.749328 -0.032142 t1srmoveto
+0.737237 -0.079701 t1sprolongate
+1.625245 -0.175702 t1sarrowhead 1.169233 -1.090910 0.000000 -1.231438 t1srrcurveto
+0.000000 -1.336660 -1.287864 -1.295733 -1.944504 0.000000 t1srrcurveto
+-5.879761 0.000000 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+0.000000 0.464981 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.359985 0.000000 t1srlineto
+1.188247 0.000000 0.109200 0.189762 0.000000 0.627705 t1srrcurveto
+0.000000 7.904678 t1srlineto
+0.000000 0.627705 -0.109200 0.189762 -1.188247 0.000000 t1srrcurveto
+-0.359985 0.000000 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+0.000000 0.464981 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+5.489777 0.000000 t1srlineto
+1.906750 0.000000 1.310619 -1.197105 0.000000 -1.225297 t1srrcurveto
+0.000000 -1.036798 -0.975350 -0.928844 -1.423677 -0.278865 t1srrcurveto
+-0.727704 -0.142540 t1sarrowhead t1sprolongate
+t1sclosepath
+0.749328 0.032142 t1srmoveto
+-0.929962 -4.777306 t1srmoveto
+-1.874924 0.000000 t1srlineto
+-0.649588 0.000000 0.027113 0.061186 0.000000 0.426294 t1srrcurveto
+0.000000 4.094833 t1srlineto
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.112495 t1sprolongate
+2.819885 0.000000 t1srlineto
+1.397939 0.000000 0.604479 -1.316665 0.000000 -0.970742 t1srrcurveto
+0.000000 -1.013388 -0.739705 -1.169023 -1.472705 0.000000 t1srrcurveto
+t1sclosepath
+-0.000000 -0.224991 t1srmoveto
+1.617169 0.000000 0.820232 1.290877 0.000000 1.116525 t1srrcurveto
+0.000000 1.039176 -0.655469 1.473221 -1.571940 0.000000 t1srrcurveto
+-2.819885 0.000000 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.000000 -4.094833 t1srlineto
+0.000000 -0.563666 0.087111 -0.148805 0.760355 0.000000 t1srrcurveto
+1.874924 0.000000 t1srlineto
+t1sclosepath
+0.000000 0.112495 t1srmoveto
+t1FinishPage
+0.539978 0.000000 0.539978 0.000000 t1sbw
+2.789886 5.489777 t1rmoveto
+0.000000 3.689850 t1rlineto
+0.000000 0.494980 0.029999 0.104996 0.704971 0.000000 t1rrcurveto
+1.859924 0.000000 t1rlineto
+1.454941 0.000000 0.524979 -1.274948 0.000000 -0.794968 t1rrcurveto
+0.000000 -0.959961 -0.734970 -1.259949 -1.664932 0.000000 t1rrcurveto
+t1closepath
+1.364944 -0.134995 t1rmoveto
+1.454941 0.284988 1.034958 0.959961 0.000000 1.109955 t1rrcurveto
+0.000000 1.304947 -1.379944 1.229950 -1.949921 0.000000 t1rrcurveto
+-5.489777 0.000000 t1rlineto
+0.000000 -0.464981 t1rlineto
+0.359985 0.000000 t1rlineto
+1.154953 0.000000 0.029999 -0.164993 0.000000 -0.539978 t1rrcurveto
+0.000000 -7.904678 t1rlineto
+0.000000 -0.539978 -0.029999 -0.164993 -1.154953 0.000000 t1rrcurveto
+-0.359985 0.000000 t1rlineto
+0.000000 -0.464981 t1rlineto
+5.879761 0.000000 t1rlineto
+1.994919 0.000000 1.349945 1.334946 0.000000 1.409943 t1rrcurveto
+0.000000 1.304947 -1.229950 1.124954 -1.664932 0.179993 t1rrcurveto
+t1closepath
+-0.929962 -4.889801 t1rmoveto
+-1.874924 0.000000 t1rlineto
+-0.704971 0.000000 -0.029999 0.104996 0.000000 0.494980 t1rrcurveto
+0.000000 4.094833 t1rlineto
+2.819885 0.000000 t1rlineto
+1.484940 0.000000 0.629974 -1.394943 0.000000 -1.004959 t1rrcurveto
+0.000000 -1.064957 -0.779968 -1.229950 -1.544937 0.000000 t1rrcurveto
+t1closepath
+t1FinishPage
+grestore
+
+end
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.pdf
new file mode 100644
index 00000000000..46c9267a59e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_B.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.eps
new file mode 100644
index 00000000000..115c41696bc
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.eps
@@ -0,0 +1,708 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: t1lib (edited manually by RMz, 2003-01-15)
+%%Title: Type1Char Character Dump
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 280 400
+%%EndComments
+%!
+/T1LibDict 100 dict def
+T1LibDict begin
+% Setup the size from the type1 module
+/t1SetupSize {
+ /size exch def
+} def
+
+% Prepare the page. Compute scales and fill the charspace unit square
+% background
+/t1PreparePage {
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Start of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % Setup a standard linewidth
+ /t1dumpstdlinewidth 1.0 def
+ % Setup a scale for drawing direction arrows
+ /arrowscale 1.5 def
+
+ % Should we draw the device pixel grid? (1=yes, otherwise no)
+ /t1drawgrid 0 def
+ % Should we draw stems? (1=yes, otherwise no)
+ /t1drawstems 0 def
+ % Should we draw alignment zones? (1=yes, otherwise no)
+ /t1drawzones 0 def
+ % Should we fill the charspace unit square? (1=yes, otherwise no)
+ /t1fillunitsquare 0 def
+ % Should we fill the device page? (1=yes, otherwise no)
+ /t1fillpage 0 def
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)
+ /t1showoncurvepoints 0 def
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)
+ /t1showoffcurvepoints 0 def
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)
+ /t1showbeziertangents 0 def
+
+ % Define a few colors
+ /t1linecolor { 0.0 0.0 0.0 } def
+ /t1hlinecolor { 1.0 0.0 0.0 } def
+ /t1slinecolor { 1.0 1.0 1.0 } def
+ /t1movecolor { 0.0 0.0 0.0 } def
+ /t1hmovecolor { 1.0 0.0 0.0 } def
+ /t1smovecolor { 1.0 1.0 1.0 } def
+ /t1curvecolor { 0.0 0.0 0.0 } def
+ /t1hcurvecolor { 1.0 0.0 0.0 } def
+ /t1scurvecolor { 0.0 0.0 1.0 } def
+ /t1sprolongatecolor { 1.0 0.0 1.0 } def
+ /t1stemcolor { 0.0 0.0 1.0 } def
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def
+ /t1topzonecolor { 1.0 1.0 0.0 } def
+ /t1arrowcolor { 0.0 0.0 0.0 } def
+ /t1harrowcolor { 1.0 0.0 0.0 } def
+ /t1sarrowcolor { 0.0 0.0 1.0 } def
+ /t1sbwcolor { 0.0 0.0 0.0 } def
+ /t1closepathcolor { 0.0 0.0 0.0 } def
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def
+ /t1sclosepathcolor { 0.0 0.0 1.0 } def
+ /t1pagecolor { 0.7 0.7 0.7 } def
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def
+ /t1gridcolor { 0.0 0.0 0.0 } def
+
+ % Line scale relative to the standard linewidth
+ /t1linescale 0.8 def
+ /t1hlinescale 0.4 def
+ /t1slinescale 0.4 def
+ /t1movescale 0.4 def
+ /t1hmovescale 0.4 def
+ /t1smovescale 0.4 def
+ /t1curvescale 0.8 def
+ /t1hcurvescale 0.4 def
+ /t1scurvescale 0.4 def
+ /t1curvetangentscale 0.5 def
+ /t1sprolongatescale 0.4 def
+ /t1stemscale 0.5 def
+ /t1alignedstemscale 0.5 def
+ /t1bottomzonescale 0.5 def
+ /t1topzonescale 0.5 def
+ /t1closepathscale 0.8 def
+ /t1hclosepathscale 0.4 def
+ /t1sclosepathscale 0.4 def
+ /t1gridscale 0.5 def
+
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [] 0 } def
+ /t1hlinedash { [] 0 } def
+ /t1slinedash { [] 0 } def
+ /t1movedash { [2 2] 0 } def
+ /t1hmovedash { [2 2] 0 } def
+ /t1smovedash { [2 2] 0 } def
+ /t1curvedash { [] 0 } def
+ /t1hcurvedash { [] 0 } def
+ /t1scurvedash { [] 0 } def
+ /t1sprolongatedash { [1 1] 0 }def
+ /t1closepathdash { [] 0 } def
+ /t1hclosepathdash { [] 0 } def
+ /t1sclosepathdash { [] 0 } def
+ /t1griddash { [3 3] 0 } def
+
+ % Define a clipping rectangle ROI (in charspace coordinates)
+ /t1ROIxmin 0 def
+ /t1ROIxmax 500 def
+ /t1ROIymin -50 def
+ /t1ROIymax 700 def
+
+ % Device values (in bp). These must match the Bounding Box Statement!
+ /xmindev 0 neg def
+ /xmaxdev 280 def
+ /ymindev 0 neg def
+ /ymaxdev 400 def
+ /dxdev 1 def
+ /dydev 1 def
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % End of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % logical pixel values
+ /xminpixel t1ROIxmin 1000.0 div size mul def
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def
+ /yminpixel t1ROIymin 1000.0 div size mul def
+ /ymaxpixel t1ROIymax 1000.0 div size mul def
+ /dxpixel 1 def
+ /dypixel 1 def
+
+ % compute scales and set minimum scale
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse
+
+ % Fill device page
+ xmindev ymindev moveto
+ xmaxdev 0 rlineto
+ 0 ymaxdev rlineto
+ xmaxdev neg 0 rlineto
+ 0 ymaxdev neg rlineto
+ closepath
+ clip
+ t1fillpage 1 eq
+ {
+ t1pagecolor setrgbcolor
+ fill
+ } if
+
+ % reassign device values
+ /xmindev xminpixel scale mul def
+ /xmaxdev xmaxpixel scale mul def
+ /ymindev yminpixel scale mul def
+ /ymaxdev ymaxpixel scale mul def
+ /dxdev dxpixel scale mul def
+ /dydev dypixel scale mul def
+
+ % translate coordinate system
+ xminpixel scale mul neg yminpixel scale mul neg translate
+
+ % Fill unit square of charspace coordinate system
+ t1fillunitsquare 1 eq
+ {
+ t1unitsquarecolor setrgbcolor
+ 0 0 moveto
+ size scale mul 0 rlineto
+ 0 size scale mul rlineto
+ size scale mul neg 0 rlineto
+ 0 size scale mul neg rlineto
+ closepath fill
+ } if
+} def
+
+/t1FinishPage {
+ t1drawgrid 1 eq
+ {
+ t1gridcolor setrgbcolor
+ t1gridscale setlinewidth
+ t1griddash setdash
+ % draw grid and align to the point (0,0)
+ 0 dxdev xmaxdev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dxdev neg xmindev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dydev ymaxdev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ 0 dydev neg ymindev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ } if
+} def
+
+% Define three arrow routines available for later providing the output with directions
+/t1arrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1arrowcolor setrgbcolor
+ currx curry translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1harrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1harrowcolor setrgbcolor
+ currhx currhy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1sarrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1sarrowcolor setrgbcolor
+ currsx currsy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+
+/t1rlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1linecolor setrgbcolor
+ t1linedash setdash
+ t1linescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+} def
+
+/t1srlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1slinecolor setrgbcolor
+ t1slinedash setdash
+ t1slinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1sprolongate {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1sprolongatecolor setrgbcolor
+ t1sprolongatedash setdash
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1hintedrlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hlinecolor setrgbcolor
+ t1hlinedash setdash
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+} def
+
+/t1rmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1movecolor setrgbcolor
+ t1movedash setdash
+ t1movescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+ /startx currx def
+ /starty curry def
+} def
+
+/t1srmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1smovecolor setrgbcolor
+ t1smovedash setdash
+ t1smovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+ /startsx currsx def
+ /startsy currsy def
+} def
+
+/t1hintedrmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hmovecolor setrgbcolor
+ t1hmovedash setdash
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+ /starthx currhx def
+ /starthy currhy def
+} def
+
+/t1rrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1curvecolor setrgbcolor
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currx curry moveto
+ currx x2 add curry y2 add lineto
+ stroke
+ currx x2 x3 add add curry y2 y3 add add moveto
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ currx curry moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currx currx x2 x3 x4 add add add def
+ /curry curry y2 y3 y4 add add add def
+} def
+
+/t1srrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1scurvecolor setrgbcolor
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currsx currsy moveto
+ currsx x2 add currsy y2 add lineto
+ stroke
+ currsx x2 x3 add add currsy y2 y3 add add moveto
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ currsx currsy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currsx currsx x2 x3 x4 add add add def
+ /currsy currsy y2 y3 y4 add add add def
+} def
+
+/t1hintedrrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hcurvecolor setrgbcolor
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currhx currhy moveto
+ currhx x2 add currhy y2 add lineto
+ stroke
+ currhx x2 x3 add add currhy y2 y3 add add moveto
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ currhx currhy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currhx currhx x2 x3 x4 add add add def
+ /currhy currhy y2 y3 y4 add add add def
+} def
+
+/t1sbw {
+ /wy exch scale mul def
+ /wx exch scale mul def
+ /sby exch scale mul def
+ /sbx exch scale mul def
+ t1sbwcolor setrgbcolor
+ newpath sbx sby 3 0 360 arc closepath fill
+ newpath wx wy 3 0 360 arc closepath fill
+ /currx sbx def
+ /curry sby def
+ /currhx sbx def
+ /currhy sby def
+ /currsx sbx def
+ /currsy sby def
+} def
+
+/t1closepath {
+ t1closepathdash setdash
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth
+ t1closepathcolor setrgbcolor
+ currx curry moveto
+ startx starty lineto
+ stroke
+} def
+
+/t1sclosepath {
+ t1sclosepathdash setdash
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1sclosepathcolor setrgbcolor
+ currsx currsy moveto
+ startsx startsy lineto
+ stroke
+} def
+
+/t1hintedclosepath {
+ t1hclosepathdash setdash
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1hclosepathcolor setrgbcolor
+ currhx currhy moveto
+ starthx starthy lineto
+ stroke
+} def
+
+/t1vstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1alignedvstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1hstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1alignedhstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1bottomzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth
+ t1bottomzonecolor setrgbcolor
+ [] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+/t1topzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth
+ t1topzonecolor setrgbcolor
+ [2 2] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+end
+
+% Next follows drawing code from charstring commands:
+T1LibDict begin
+
+gsave
+20.000001 t1SetupSize
+t1PreparePage
+-0.439758 0.000000 t1bottomzone
+13.652496 14.092255 t1topzone
+8.615265 8.955078 t1topzone
+13.312683 13.532562 t1topzone
+-4.117737 -3.877869 t1bottomzone
+0.839539 0.000000 0.839539 0.000000 t1sbw
+2.418671 9.134979 t1arrowhead t1rmoveto
+-0.919495 0.599670 t1arrowhead -0.079956 0.679626 0.000000 0.339813 t1rrcurveto
+0.000000 1.219330 t1arrowhead 1.299286 0.839539 1.419220 0.000000 t1rrcurveto
+1.459198 0.000000 t1arrowhead 1.279297 -1.039429 0.000000 -1.439209 t1rrcurveto
+0.000000 -1.139374 t1arrowhead -0.779572 -0.959473 -1.199341 -0.699615 t1rrcurveto
+t1closepath
+0.439758 -0.299835 t1arrowhead t1rmoveto
+1.439209 0.739594 t1arrowhead 0.979462 1.039429 0.000000 1.319275 t1rrcurveto
+0.000000 1.838989 t1arrowhead -1.779022 1.139374 -1.819000 0.000000 t1rrcurveto
+-1.998901 0.000000 t1arrowhead -1.619110 -1.479187 0.000000 -1.858978 t1rrcurveto
+0.000000 -0.359802 t1arrowhead 0.039978 -0.899506 0.839539 -0.939484 t1rrcurveto
+0.219879 -0.239868 t1arrowhead 0.739594 -0.499725 0.499725 -0.339813 t1rrcurveto
+-1.159363 -0.579681 t1arrowhead -1.719055 -1.119385 0.000000 -1.978912 t1rrcurveto
+0.000000 -2.118835 t1arrowhead 2.038879 -1.339264 2.098846 0.000000 t1rrcurveto
+2.258759 0.000000 t1arrowhead 1.898956 1.659088 0.000000 2.138824 t1rrcurveto
+0.000000 0.719604 t1arrowhead -0.219879 0.899506 -0.759583 0.839539 t1rrcurveto
+-0.379791 0.419769 t1arrowhead -0.319824 0.199890 -1.279297 0.799561 t1rrcurveto
+t1closepath
+-1.998901 -0.839539 t1arrowhead t1rmoveto
+0.559692 -0.339813 t1arrowhead 0.939484 -0.599670 0.959473 -0.619659 t1rrcurveto
+0.559692 -0.379791 t1arrowhead 0.939484 -0.599670 0.000000 -1.219330 t1rrcurveto
+0.000000 -1.479187 t1arrowhead -1.499176 -1.039429 -1.639099 0.000000 t1rrcurveto
+-1.719055 0.000000 t1arrowhead -1.439209 1.239319 0.000000 1.659088 t1rrcurveto
+0.000000 1.159363 t1arrowhead 0.639648 1.279297 1.699066 0.939484 t1rrcurveto
+t1closepath
+t1FinishPage
+grestore
+
+end
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.pdf
new file mode 100644
index 00000000000..a8d982eff02
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_eight.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.eps
new file mode 100644
index 00000000000..8c6509e5524
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.eps
@@ -0,0 +1,747 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: t1lib (edited manually by RMz, 2003-03-01)
+%%Title: Type1Char Character Dump
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 280 400
+%%EndComments
+%!
+/T1LibDict 100 dict def
+T1LibDict begin
+% Setup the size from the type1 module
+/t1SetupSize {
+ /size exch def
+} def
+
+% Prepare the page. Compute scales and fill the charspace unit square
+% background
+/t1PreparePage {
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Start of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % Setup a standard linewidth
+ /t1dumpstdlinewidth 1.0 def
+ % Setup a scale for drawing direction arrows
+ /arrowscale 1.2 def
+
+ % Should we draw the device pixel grid? (1=yes, otherwise no)
+ /t1drawgrid 0 def
+ % Should we draw stems? (1=yes, otherwise no)
+ /t1drawstems 0 def
+ % Should we draw alignment zones? (1=yes, otherwise no)
+ /t1drawzones 0 def
+ % Should we fill the charspace unit square? (1=yes, otherwise no)
+ /t1fillunitsquare 0 def
+ % Should we fill the device page? (1=yes, otherwise no)
+ /t1fillpage 0 def
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)
+ /t1showoncurvepoints 0 def
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)
+ /t1showoffcurvepoints 0 def
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)
+ /t1showbeziertangents 0 def
+
+ % Define a few colors
+ /t1linecolor { 0.0 0.0 0.0 } def
+ /t1hlinecolor { 1.0 0.0 0.0 } def
+ /t1slinecolor { 1.0 1.0 1.0 } def
+ /t1movecolor { 0.0 0.0 0.0 } def
+ /t1hmovecolor { 1.0 0.0 0.0 } def
+ /t1smovecolor { 0.0 0.0 0.0 } def
+ /t1curvecolor { 0.0 0.0 0.0 } def
+ /t1hcurvecolor { 1.0 0.0 0.0 } def
+ /t1scurvecolor { 0.0 0.0 0.0 } def
+ /t1sprolongatecolor { 1.0 0.0 1.0 } def
+ /t1stemcolor { 0.0 0.0 1.0 } def
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def
+ /t1topzonecolor { 1.0 1.0 0.0 } def
+ /t1arrowcolor { 0.0 0.0 0.0 } def
+ /t1harrowcolor { 1.0 0.0 0.0 } def
+ /t1sarrowcolor { 0.0 0.0 0.0 } def
+ /t1sbwcolor { 0.0 0.0 0.0 } def
+ /t1closepathcolor { 0.0 0.0 0.0 } def
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def
+ /t1sclosepathcolor { 0.0 0.0 1.0 } def
+ /t1pagecolor { 0.7 0.7 0.7 } def
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def
+ /t1gridcolor { 0.0 0.0 0.0 } def
+
+ % Line scale relative to the standard linewidth
+ /t1linescale 0.4 def
+ /t1hlinescale 0.4 def
+ /t1slinescale 0.4 def
+ /t1movescale 0.1 def
+ /t1hmovescale 0.4 def
+ /t1smovescale 0.1 def
+ /t1curvescale 0.4 def
+ /t1hcurvescale 0.4 def
+ /t1scurvescale 0.4 def
+ /t1curvetangentscale 0.5 def
+ /t1sprolongatescale 0.4 def
+ /t1stemscale 0.5 def
+ /t1alignedstemscale 0.5 def
+ /t1bottomzonescale 0.5 def
+ /t1topzonescale 0.5 def
+ /t1closepathscale 0.4 def
+ /t1hclosepathscale 0.4 def
+ /t1sclosepathscale 0.4 def
+ /t1gridscale 0.5 def
+
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [4 4] 0 } def
+ /t1hlinedash { [] 0 } def
+ /t1slinedash { [] 0 } def
+ /t1movedash { [2 2] 0 } def
+ /t1hmovedash { [2 2] 0 } def
+ /t1smovedash { [2 2] 0 } def
+ /t1curvedash { [4 4] 0 } def
+ /t1hcurvedash { [] 0 } def
+ /t1scurvedash { [] 0 } def
+ /t1sprolongatedash { [1 1] 0 }def
+ /t1closepathdash { [] 0 } def
+ /t1hclosepathdash { [] 0 } def
+ /t1sclosepathdash { [] 0 } def
+ /t1griddash { [3 3] 0 } def
+
+ % Define a clipping rectangle ROI (in charspace coordinates)
+ /t1ROIxmin 0 def
+ /t1ROIxmax 400 def
+ /t1ROIymin -50 def
+ /t1ROIymax 700 def
+
+ % Device values (in bp). These must match the Bounding Box Statement!
+ /xmindev 0 neg def
+ /xmaxdev 280 def
+ /ymindev 0 neg def
+ /ymaxdev 400 def
+ /dxdev 1 def
+ /dydev 1 def
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % End of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % logical pixel values
+ /xminpixel t1ROIxmin 1000.0 div size mul def
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def
+ /yminpixel t1ROIymin 1000.0 div size mul def
+ /ymaxpixel t1ROIymax 1000.0 div size mul def
+ /dxpixel 1 def
+ /dypixel 1 def
+
+ % compute scales and set minimum scale
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse
+
+ % Fill device page
+ xmindev ymindev moveto
+ xmaxdev 0 rlineto
+ 0 ymaxdev rlineto
+ xmaxdev neg 0 rlineto
+ 0 ymaxdev neg rlineto
+ closepath
+ clip
+ t1fillpage 1 eq
+ {
+ t1pagecolor setrgbcolor
+ fill
+ } if
+
+ % reassign device values
+ /xmindev xminpixel scale mul def
+ /xmaxdev xmaxpixel scale mul def
+ /ymindev yminpixel scale mul def
+ /ymaxdev ymaxpixel scale mul def
+ /dxdev dxpixel scale mul def
+ /dydev dypixel scale mul def
+
+ % translate coordinate system
+ xminpixel scale mul neg yminpixel scale mul neg translate
+
+ % Fill unit square of charspace coordinate system
+ t1fillunitsquare 1 eq
+ {
+ t1unitsquarecolor setrgbcolor
+ 0 0 moveto
+ size scale mul 0 rlineto
+ 0 size scale mul rlineto
+ size scale mul neg 0 rlineto
+ 0 size scale mul neg rlineto
+ closepath fill
+ } if
+} def
+
+/t1FinishPage {
+ t1drawgrid 1 eq
+ {
+ t1gridcolor setrgbcolor
+ t1gridscale setlinewidth
+ t1griddash setdash
+ % draw grid and align to the point (0,0)
+ 0 dxdev xmaxdev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dxdev neg xmindev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dydev ymaxdev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ 0 dydev neg ymindev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ } if
+} def
+
+% Define three arrow routines available for later providing the output with directions
+/t1arrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1arrowcolor setrgbcolor
+ currx curry translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale t1dumpstdlinewidth neg mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul neg 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1harrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1harrowcolor setrgbcolor
+ currhx currhy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1sarrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1sarrowcolor setrgbcolor
+ currsx currsy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale t1dumpstdlinewidth neg mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ 6 arrowscale t1dumpstdlinewidth mul mul neg 2 arrowscale t1dumpstdlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+
+/t1rlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1linecolor setrgbcolor
+ t1linedash setdash
+ t1linescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+} def
+
+/t1srlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1slinecolor setrgbcolor
+ t1slinedash setdash
+ t1slinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1sprolongate {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1sprolongatecolor setrgbcolor
+ t1sprolongatedash setdash
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1hintedrlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hlinecolor setrgbcolor
+ t1hlinedash setdash
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+} def
+
+/t1rmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1movecolor setrgbcolor
+ t1movedash setdash
+ t1movescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+ /startx currx def
+ /starty curry def
+} def
+
+/t1srmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1smovecolor setrgbcolor
+ t1smovedash setdash
+ t1smovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+ /startsx currsx def
+ /startsy currsy def
+} def
+
+/t1hintedrmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hmovecolor setrgbcolor
+ t1hmovedash setdash
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+ /starthx currhx def
+ /starthy currhy def
+} def
+
+/t1rrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1curvecolor setrgbcolor
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currx curry moveto
+ currx x2 add curry y2 add lineto
+ stroke
+ currx x2 x3 add add curry y2 y3 add add moveto
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ currx curry moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currx currx x2 x3 x4 add add add def
+ /curry curry y2 y3 y4 add add add def
+} def
+
+/t1srrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1scurvecolor setrgbcolor
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currsx currsy moveto
+ currsx x2 add currsy y2 add lineto
+ stroke
+ currsx x2 x3 add add currsy y2 y3 add add moveto
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ currsx currsy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currsx currsx x2 x3 x4 add add add def
+ /currsy currsy y2 y3 y4 add add add def
+} def
+
+/t1hintedrrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hcurvecolor setrgbcolor
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currhx currhy moveto
+ currhx x2 add currhy y2 add lineto
+ stroke
+ currhx x2 x3 add add currhy y2 y3 add add moveto
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ currhx currhy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currhx currhx x2 x3 x4 add add add def
+ /currhy currhy y2 y3 y4 add add add def
+} def
+
+/t1sbw {
+ /wy exch scale mul def
+ /wx exch scale mul def
+ /sby exch scale mul def
+ /sbx exch scale mul def
+ t1sbwcolor setrgbcolor
+ newpath sbx sby 3 0 360 arc closepath fill
+ newpath wx wy 3 0 360 arc closepath fill
+ /currx sbx def
+ /curry sby def
+ /currhx sbx def
+ /currhy sby def
+ /currsx sbx def
+ /currsy sby def
+} def
+
+/t1closepath {
+ t1closepathdash setdash
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth
+ t1closepathcolor setrgbcolor
+ currx curry moveto
+ startx starty lineto
+ stroke
+} def
+
+/t1sclosepath {
+ t1sclosepathdash setdash
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1sclosepathcolor setrgbcolor
+ currsx currsy moveto
+ startsx startsy lineto
+ stroke
+} def
+
+/t1hintedclosepath {
+ t1hclosepathdash setdash
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1hclosepathcolor setrgbcolor
+ currhx currhy moveto
+ starthx starthy lineto
+ stroke
+} def
+
+/t1vstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1alignedvstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1hstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1alignedhstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1bottomzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth
+ t1bottomzonecolor setrgbcolor
+ [] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+/t1topzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth
+ t1topzonecolor setrgbcolor
+ [2 2] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+end
+
+% Next follows drawing code from charstring commands:
+T1LibDict begin
+
+gsave
+20.000001 t1SetupSize
+t1PreparePage
+-0.439758 0.000000 t1bottomzone
+13.652496 14.092255 t1topzone
+8.615265 8.955078 t1topzone
+13.312683 13.532562 t1topzone
+-4.117737 -3.877869 t1bottomzone
+0.559692 0.000000 0.559692 0.000000 t1sbw
+9.005051 4.277649 t1srmoveto
+0.000000 2.635088 -2.059844 2.192259 -2.507646 0.000000 t1srrcurveto
+-2.589196 0.000000 t1sarrowhead -1.998282 -2.253895 0.000000 -2.573452 t1srrcurveto
+0.000000 -2.662721 2.147325 -1.984725 2.420165 0.000000 t1srrcurveto
+2.501468 0.000000 t1sarrowhead 2.086011 2.026044 0.000000 2.621402 t1srrcurveto
+t1sclosepath
+-0.299835 0.000000 t1srmoveto
+0.000000 -2.455808 -1.951770 -1.891803 -2.335873 0.000000 t1srrcurveto
+-2.257264 0.000000 t1sarrowhead -2.010390 1.853166 0.000000 2.494445 t1srrcurveto
+0.000000 2.423801 1.879586 2.103710 2.408057 0.000000 t1srrcurveto
+2.329696 0.000000 t1sarrowhead 1.937959 -2.045412 0.000000 -2.482100 t1srrcurveto
+t1sclosepath
+0.149918 -0.000000 t1srmoveto
+-4.417572 -3.847885 t1srmoveto
+-0.808825 0.000000 -0.829075 0.393694 -0.511556 0.871540 t1srrcurveto
+-0.129291 -0.075888 t1sprolongate
+0.130347 0.074061 t1sprolongate
+-0.475605 0.837065 t1sarrowhead -0.004550 1.172020 0.000000 0.735306 t1srrcurveto
+0.000000 0.791693 0.003844 1.036104 0.457587 0.838909 t1srrcurveto
+-0.131612 0.071788 t1sprolongate
+0.129291 -0.075888 t1sprolongate
+0.510742 0.870153 t1sarrowhead 0.888167 0.395081 0.750547 0.000000 t1srrcurveto
+0.828025 0.000000 0.810390 -0.413156 0.492055 -0.813783 t1srrcurveto
+0.493212 -0.815696 t1sarrowhead 0.004874 -1.109989 0.000000 -0.775217 t1srrcurveto
+0.000000 -0.730684 -0.003321 -1.039578 -0.420610 -0.841221 t1srrcurveto
+-0.000299 -0.000599 t1sprolongate
+-0.000294 -0.000601 t1sprolongate
+-0.415892 -0.850688 t1sarrowhead -0.828838 -0.544427 -0.939312 0.000000 t1srrcurveto
+t1sclosepath
+-0.000000 -0.299835 t1srmoveto
+1.059589 0.000000 0.930195 0.614936 0.463625 0.948323 t1srrcurveto
+-0.134684 0.065845 t1sprolongate
+0.134090 -0.067045 t1sprolongate
+0.458906 0.917812 t1sarrowhead -0.003321 1.119235 0.000000 0.708525 t1srrcurveto
+0.000000 0.743948 0.004874 1.208737 -0.546217 0.903359 t1srrcurveto
+-0.547374 0.905273 t1sarrowhead -0.908665 0.466361 -0.931008 0.000000 t1srrcurveto
+-0.848574 0.000000 -0.990800 -0.444457 -0.568665 -0.968836 t1srrcurveto
+-0.001193 -0.002032 t1sprolongate
+-0.001128 -0.002068 t1sprolongate
+-0.501886 -0.920124 t1sarrowhead 0.003844 -1.122710 0.000000 -0.767450 t1srrcurveto
+0.000000 -0.703903 -0.004550 -1.266640 0.523846 -0.921968 t1srrcurveto
+0.000521 -0.000918 t1sprolongate
+0.000534 -0.000910 t1sprolongate
+0.567850 -0.967449 t1sarrowhead 0.929958 -0.445844 0.910231 0.000000 t1srrcurveto
+t1sclosepath
+0.000000 0.149918 t1srmoveto
+t1FinishPage
+0.559692 0.000000 0.559692 0.000000 t1sbw
+8.855133 4.277649 t1rmoveto
+0.000000 2.558594 t1arrowhead -1.998901 2.118835 -2.418671 0.000000 t1rrcurveto
+-2.498627 0.000000 -1.938934 -2.178802 0.000000 -2.498627 t1rrcurveto
+0.000000 -2.578583 t1arrowhead 2.078857 -1.918945 2.338715 0.000000 t1rrcurveto
+2.418671 0.000000 2.018890 1.958923 0.000000 2.538605 t1rrcurveto
+t1closepath
+-4.417572 -3.997803 t1rmoveto
+-0.859528 0.000000 t1arrowhead -0.879517 0.419769 -0.539703 0.919495 t1rrcurveto
+-0.499725 0.879517 0.000000 1.219330 0.000000 0.719604 t1rrcurveto
+0.000000 0.779572 t1arrowhead 0.000000 1.079407 0.479736 0.879517 t1rrcurveto
+0.539703 0.919495 0.939484 0.419769 0.799561 0.000000 t1rrcurveto
+0.879517 0.000000 t1arrowhead 0.859528 -0.439758 0.519714 -0.859528 t1rrcurveto
+0.519714 -0.859528 0.000000 -1.159363 0.000000 -0.759583 t1rrcurveto
+0.000000 -0.719604 t1arrowhead 0.000000 -1.079407 -0.439758 -0.879517 t1rrcurveto
+-0.439758 -0.899506 -0.879517 -0.579681 -0.999451 0.000000 t1rrcurveto
+t1closepath
+t1FinishPage
+grestore
+
+end
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.pdf
new file mode 100644
index 00000000000..5d5230bcb9c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_o.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.eps
new file mode 100644
index 00000000000..e818872f398
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.eps
@@ -0,0 +1,799 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: t1lib (edited manually by RMz, 2003-01-15)
+%%Title: Type1Char Character Dump
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 280 400
+%%DocumentPaperSizes: a4
+%%EndComments
+%!
+/T1LibDict 100 dict def
+T1LibDict begin
+% Setup the size from the type1 module
+/t1SetupSize {
+ /size exch def
+} def
+
+% Prepare the page. Compute scales and fill the charspace unit square
+% background
+/t1PreparePage {
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Start of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % Setup a standard linewidth
+ /t1dumpstdlinewidth 1.0 def
+ % Setup a scale for drawing direction arrows
+ /arrowscale 3.0 def
+
+ % Should we draw the device pixel grid? (1=yes, otherwise no)
+ /t1drawgrid 0 def
+ % Should we draw stems? (1=yes, otherwise no)
+ /t1drawstems 0 def
+ % Should we draw alignment zones? (1=yes, otherwise no)
+ /t1drawzones 0 def
+ % Should we fill the charspace unit square? (1=yes, otherwise no)
+ /t1fillunitsquare 0 def
+ % Should we fill the device page? (1=yes, otherwise no)
+ /t1fillpage 0 def
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)
+ /t1showoncurvepoints 0 def
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)
+ /t1showoffcurvepoints 0 def
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)
+ /t1showbeziertangents 0 def
+
+ % Define a few colors
+ /t1linecolor { 0.0 0.0 0.0 } def
+ /t1hlinecolor { 1.0 0.0 0.0 } def
+ /t1slinecolor { 0.0 0.0 0.0 } def
+ /t1movecolor { 0.0 0.0 0.0 } def
+ /t1hmovecolor { 0.0 0.0 0.0 } def
+ /t1smovecolor { 0.0 0.0 0.0 } def
+ /t1curvecolor { 0.0 0.0 0.0 } def
+ /t1hcurvecolor { 1.0 0.0 0.0 } def
+ /t1scurvecolor { 0.0 0.0 0.0 } def
+ /t1sprolongatecolor { 1.0 1.0 1.0 } def
+ /t1stemcolor { 0.0 0.0 1.0 } def
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def
+ /t1topzonecolor { 1.0 1.0 0.0 } def
+ /t1arrowcolor { 0.0 0.0 0.0 } def
+ /t1harrowcolor { 1.0 0.0 0.0 } def
+ /t1sarrowcolor { 0.0 0.0 1.0 } def
+ /t1sbwcolor { 0.0 0.0 0.0 } def
+ /t1closepathcolor { 0.0 0.0 0.0 } def
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def
+ /t1sclosepathcolor { 0.0 0.0 1.0 } def
+ /t1pagecolor { 0.7 0.7 0.7 } def
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def
+ /t1gridcolor { 0.0 0.0 0.0 } def
+
+ % Line scale relative to the standard linewidth
+ /t1linescale 1.2 def
+ /t1hlinescale 0.4 def
+ /t1slinescale 0.4 def
+ /t1movescale 0.4 def
+ /t1hmovescale 0.4 def
+ /t1smovescale 0.4 def
+ /t1curvescale 1.2 def
+ /t1hcurvescale 0.4 def
+ /t1scurvescale 0.4 def
+ /t1curvetangentscale 0.5 def
+ /t1sprolongatescale 0.0 def
+ /t1stemscale 0.5 def
+ /t1alignedstemscale 0.5 def
+ /t1bottomzonescale 0.5 def
+ /t1topzonescale 0.5 def
+ /t1closepathscale 0.8 def
+ /t1hclosepathscale 0.4 def
+ /t1sclosepathscale 0.4 def
+ /t1gridscale 0.5 def
+
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [2 2] 0 } def
+ /t1hlinedash { [] 0 } def
+ /t1slinedash { [] 0 } def
+ /t1movedash { [2 2] 0 } def
+ /t1hmovedash { [2 2] 0 } def
+ /t1smovedash { [2 2] 0 } def
+ /t1curvedash { [2 2] 0 } def
+ /t1hcurvedash { [] 0 } def
+ /t1scurvedash { [] 0 } def
+ /t1sprolongatedash { [1 1] 0 }def
+ /t1closepathdash { [2 2] 0 } def
+ /t1hclosepathdash { [] 0 } def
+ /t1sclosepathdash { [] 0 } def
+ /t1griddash { [3 3] 0 } def
+
+ % Define a clipping rectangle ROI (in charspace coordinates)
+ /t1ROIxmin 0 def
+ /t1ROIxmax 300 def
+ /t1ROIymin -50 def
+ /t1ROIymax 650 def
+
+ % Device values (in bp). These must match the Bounding Box Statement!
+ /xmindev 0 neg def
+ /xmaxdev 280 def
+ /ymindev 0 neg def
+ /ymaxdev 400 def
+ /dxdev 1 def
+ /dydev 1 def
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % End of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % logical pixel values
+ /xminpixel t1ROIxmin 1000.0 div size mul def
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def
+ /yminpixel t1ROIymin 1000.0 div size mul def
+ /ymaxpixel t1ROIymax 1000.0 div size mul def
+ /dxpixel 1 def
+ /dypixel 1 def
+
+ % compute scales and set minimum scale
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse
+
+ % Fill device page
+ xmindev ymindev moveto
+ xmaxdev 0 rlineto
+ 0 ymaxdev rlineto
+ xmaxdev neg 0 rlineto
+ 0 ymaxdev neg rlineto
+ closepath
+ clip
+ t1fillpage 1 eq
+ {
+ t1pagecolor setrgbcolor
+ fill
+ } if
+
+ % reassign device values
+ /xmindev xminpixel scale mul def
+ /xmaxdev xmaxpixel scale mul def
+ /ymindev yminpixel scale mul def
+ /ymaxdev ymaxpixel scale mul def
+ /dxdev dxpixel scale mul def
+ /dydev dypixel scale mul def
+
+ % translate coordinate system
+ xminpixel scale mul neg yminpixel scale mul neg translate
+
+ % Fill unit square of charspace coordinate system
+ t1fillunitsquare 1 eq
+ {
+ t1unitsquarecolor setrgbcolor
+ 0 0 moveto
+ size scale mul 0 rlineto
+ 0 size scale mul rlineto
+ size scale mul neg 0 rlineto
+ 0 size scale mul neg rlineto
+ closepath fill
+ } if
+} def
+
+/t1FinishPage {
+ t1drawgrid 1 eq
+ {
+ t1gridcolor setrgbcolor
+ t1gridscale setlinewidth
+ t1griddash setdash
+ % draw grid and align to the point (0,0)
+ 0 dxdev xmaxdev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dxdev neg xmindev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dydev ymaxdev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ 0 dydev neg ymindev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ } if
+} def
+
+% Define three arrow routines available for later providing the output with directions
+/t1arrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1arrowcolor setrgbcolor
+ currx curry translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1harrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1harrowcolor setrgbcolor
+ currhx currhy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1sarrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1sarrowcolor setrgbcolor
+ currsx currsy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+
+/t1rlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1linecolor setrgbcolor
+ t1linedash setdash
+ t1linescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+} def
+
+/t1srlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1slinecolor setrgbcolor
+ t1slinedash setdash
+ t1slinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1sprolongate {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1sprolongatecolor setrgbcolor
+ t1sprolongatedash setdash
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1hintedrlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hlinecolor setrgbcolor
+ t1hlinedash setdash
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+} def
+
+/t1rmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1movecolor setrgbcolor
+ t1movedash setdash
+ t1movescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+ /startx currx def
+ /starty curry def
+} def
+
+/t1srmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1smovecolor setrgbcolor
+ t1smovedash setdash
+ t1smovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+ /startsx currsx def
+ /startsy currsy def
+} def
+
+/t1hintedrmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hmovecolor setrgbcolor
+ t1hmovedash setdash
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+ /starthx currhx def
+ /starthy currhy def
+} def
+
+/t1rrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1curvecolor setrgbcolor
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currx curry moveto
+ currx x2 add curry y2 add lineto
+ stroke
+ currx x2 x3 add add curry y2 y3 add add moveto
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ currx curry moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currx currx x2 x3 x4 add add add def
+ /curry curry y2 y3 y4 add add add def
+} def
+
+/t1srrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1scurvecolor setrgbcolor
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currsx currsy moveto
+ currsx x2 add currsy y2 add lineto
+ stroke
+ currsx x2 x3 add add currsy y2 y3 add add moveto
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ currsx currsy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currsx currsx x2 x3 x4 add add add def
+ /currsy currsy y2 y3 y4 add add add def
+} def
+
+/t1hintedrrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hcurvecolor setrgbcolor
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currhx currhy moveto
+ currhx x2 add currhy y2 add lineto
+ stroke
+ currhx x2 x3 add add currhy y2 y3 add add moveto
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ currhx currhy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currhx currhx x2 x3 x4 add add add def
+ /currhy currhy y2 y3 y4 add add add def
+} def
+
+/t1sbw {
+ /wy exch scale mul def
+ /wx exch scale mul def
+ /sby exch scale mul def
+ /sbx exch scale mul def
+ t1sbwcolor setrgbcolor
+ newpath sbx sby 3 0 360 arc closepath fill
+ newpath wx wy 3 0 360 arc closepath fill
+ /currx sbx def
+ /curry sby def
+ /currhx sbx def
+ /currhy sby def
+ /currsx sbx def
+ /currsy sby def
+} def
+
+/t1closepath {
+ t1closepathdash setdash
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth
+ t1closepathcolor setrgbcolor
+ currx curry moveto
+ startx starty lineto
+ stroke
+} def
+
+/t1sclosepath {
+ t1sclosepathdash setdash
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1sclosepathcolor setrgbcolor
+ currsx currsy moveto
+ startsx startsy lineto
+ stroke
+} def
+
+/t1hintedclosepath {
+ t1hclosepathdash setdash
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1hclosepathcolor setrgbcolor
+ currhx currhy moveto
+ starthx starthy lineto
+ stroke
+} def
+
+/t1vstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1alignedvstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1hstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1alignedhstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1bottomzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth
+ t1bottomzonecolor setrgbcolor
+ [] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+/t1topzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth
+ t1topzonecolor setrgbcolor
+ [2 2] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+end
+
+% Next follows drawing code from charstring commands:
+T1LibDict begin
+
+gsave
+15.000001 t1SetupSize
+t1PreparePage
+-0.329987 0.000000 t1bottomzone
+10.244583 10.574570 t1topzone
+6.464737 6.719727 t1topzone
+9.989594 10.154587 t1topzone
+-3.089874 -2.909882 t1bottomzone
+-0.164993 0.374985 t1hstem
+0.000000 1.000000 t1alignedhstem
+2.414902 0.299988 t1hstem
+2.000000 1.000000 t1alignedhstem
+5.999756 0.464981 t1hstem
+5.000000 1.000000 t1alignedhstem
+8.924637 0.299988 t1hstem
+9.000000 1.000000 t1alignedhstem
+1.559937 1.034958 t1vstem
+2.000000 1.000000 t1alignedvstem
+4.604813 0.374985 t1vstem
+4.000000 1.000000 t1alignedvstem
+0.284988 0.000000 0.284988 0.000000 t1sbw
+2.309906 5.999756 t1srmoveto
+0.000000 -0.112495 t1sprolongate
+2.144913 0.000000 t1srlineto
+0.112495 0.000000 t1sprolongate
+0.000000 0.112495 t1sprolongate
+0.000000 0.464981 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-2.144913 0.000000 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+0.112495 -0.000000 t1sprolongate
+0.000000 2.759888 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-0.374985 0.000000 t1srlineto
+-0.111132 0.000000 t1sprolongate
+-0.001355 -0.111124 t1sprolongate
+-0.014942 -1.225209 -0.444926 -1.502841 -1.367155 -0.055802 t1srrcurveto
+-0.107908 -0.004404 t1sprolongate
+0.000000 -0.107997 t1sprolongate
+0.000000 -0.329987 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+1.274948 0.000000 t1srlineto
+-0.000000 0.112495 t1sprolongate
+-0.112495 -0.000000 t1sprolongate
+0.000000 -4.139832 t1srlineto
+0.000000 -1.938169 1.481412 -0.199244 0.566005 0.000000 t1srrcurveto
+1.163073 0.000000 0.434362 1.158258 0.000000 0.979156 t1srrcurveto
+0.000000 0.854965 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-0.374985 0.000000 t1srlineto
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.112495 t1sprolongate
+0.000000 -0.824966 t1srlineto
+0.000000 -1.086171 -0.432363 -0.481265 -0.460100 0.000000 t1srrcurveto
+-0.872319 0.000000 -0.020145 1.203144 0.000000 0.304295 t1srrcurveto
+0.000000 4.169830 t1srlineto
+-0.112495 0.000000 t1sprolongate
+t1sclosepath
+-0.112495 0.112495 t1srmoveto
+-0.000000 -0.112495 t1sprolongate
+0.000000 -4.169830 t1srlineto
+0.000000 -0.205685 -0.020145 -1.526745 1.137599 0.000000 t1srrcurveto
+0.649854 0.000000 0.467600 0.658688 0.000000 1.133739 t1srrcurveto
+0.000000 0.824966 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.374985 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.854965 t1srlineto
+0.000000 -0.940766 -0.405604 -0.971656 -0.966840 0.000000 t1srrcurveto
+-0.513951 0.000000 -1.308475 0.160742 0.000000 1.751680 t1srrcurveto
+0.000000 4.139832 t1srlineto
+-0.000000 0.112495 t1sprolongate
+-0.112495 -0.000000 t1sprolongate
+-1.274948 0.000000 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+0.000000 0.329987 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+0.004588 -0.112402 t1sprolongate
+1.572725 0.064193 0.455038 1.707028 0.015057 1.234691 t1srrcurveto
+-0.112487 0.001372 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.374985 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -2.759888 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+0.112495 -0.000000 t1sprolongate
+2.144913 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.464981 t1srlineto
+0.112495 -0.000000 t1sprolongate
+-0.000000 0.112495 t1sprolongate
+-2.144913 0.000000 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+t1sclosepath
+0.112495 -4.282326 t1srmoveto
+t1FinishPage
+0.284988 0.000000 0.284988 0.000000 t1sbw
+2.309906 5.999756 t1rmoveto
+2.144913 0.000000 t1rlineto
+0.000000 0.464981 t1rlineto
+-2.144913 0.000000 t1rlineto
+0.000000 2.759888 t1rlineto
+-0.374985 0.000000 t1rlineto
+-0.014999 -1.229950 -0.449982 -1.604935 -1.469940 -0.059998 t1rrcurveto
+0.000000 -0.329987 t1rlineto
+1.274948 0.000000 t1rlineto
+0.000000 -4.139832 t1rlineto
+0.000000 -1.844925 1.394943 -0.179993 0.539978 0.000000 t1rrcurveto
+1.064957 0.000000 0.419983 1.064957 0.000000 0.959961 t1rrcurveto
+0.000000 0.854965 t1rlineto
+-0.374985 0.000000 t1rlineto
+0.000000 -0.824966 t1rlineto
+0.000000 -1.109955 -0.449982 -0.569977 -0.554977 0.000000 t1rrcurveto
+-1.004959 0.000000 0.000000 1.364944 0.000000 0.254990 t1rrcurveto
+t1closepath
+t1FinishPage
+grestore
+
+end
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.pdf
new file mode 100644
index 00000000000..394ac9e1389
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_1.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.eps b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.eps
new file mode 100644
index 00000000000..50c2e102146
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.eps
@@ -0,0 +1,799 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: t1lib (edited manually by RMz, 2003-02-08)
+%%Title: Type1Char Character Dump
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 280 400
+%%DocumentPaperSizes: a4
+%%EndComments
+%!
+/T1LibDict 100 dict def
+T1LibDict begin
+% Setup the size from the type1 module
+/t1SetupSize {
+ /size exch def
+} def
+
+% Prepare the page. Compute scales and fill the charspace unit square
+% background
+/t1PreparePage {
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Start of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % Setup a standard linewidth
+ /t1dumpstdlinewidth 1.0 def
+ % Setup a scale for drawing direction arrows
+ /arrowscale 3.0 def
+
+ % Should we draw the device pixel grid? (1=yes, otherwise no)
+ /t1drawgrid 0 def
+ % Should we draw stems? (1=yes, otherwise no)
+ /t1drawstems 0 def
+ % Should we draw alignment zones? (1=yes, otherwise no)
+ /t1drawzones 0 def
+ % Should we fill the charspace unit square? (1=yes, otherwise no)
+ /t1fillunitsquare 0 def
+ % Should we fill the device page? (1=yes, otherwise no)
+ /t1fillpage 0 def
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)
+ /t1showoncurvepoints 0 def
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)
+ /t1showoffcurvepoints 0 def
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)
+ /t1showbeziertangents 0 def
+
+ % Define a few colors
+ /t1linecolor { 0.0 0.0 0.0 } def
+ /t1hlinecolor { 1.0 0.0 0.0 } def
+ /t1slinecolor { 1.0 1.0 1.0 } def
+ /t1movecolor { 0.0 0.0 0.0 } def
+ /t1hmovecolor { 0.0 0.0 0.0 } def
+ /t1smovecolor { 1.0 1.0 1.0 } def
+ /t1curvecolor { 0.0 0.0 0.0 } def
+ /t1hcurvecolor { 1.0 0.0 0.0 } def
+ /t1scurvecolor { 1.0 1.0 1.0 } def
+ /t1sprolongatecolor { 0.0 0.0 0.0 } def
+ /t1stemcolor { 0.0 0.0 1.0 } def
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def
+ /t1topzonecolor { 1.0 1.0 0.0 } def
+ /t1arrowcolor { 0.0 0.0 0.0 } def
+ /t1harrowcolor { 1.0 0.0 0.0 } def
+ /t1sarrowcolor { 0.0 0.0 1.0 } def
+ /t1sbwcolor { 0.0 0.0 0.0 } def
+ /t1closepathcolor { 0.0 0.0 0.0 } def
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def
+ /t1sclosepathcolor { 0.0 0.0 1.0 } def
+ /t1pagecolor { 0.7 0.7 0.7 } def
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def
+ /t1gridcolor { 0.0 0.0 0.0 } def
+
+ % Line scale relative to the standard linewidth
+ /t1linescale 1.2 def
+ /t1hlinescale 0.4 def
+ /t1slinescale 0.0 def
+ /t1movescale 0.4 def
+ /t1hmovescale 0.4 def
+ /t1smovescale 0.0 def
+ /t1curvescale 1.2 def
+ /t1hcurvescale 0.4 def
+ /t1scurvescale 0.0 def
+ /t1curvetangentscale 0.5 def
+ /t1sprolongatescale 0.4 def
+ /t1stemscale 0.5 def
+ /t1alignedstemscale 0.5 def
+ /t1bottomzonescale 0.5 def
+ /t1topzonescale 0.5 def
+ /t1closepathscale 0.8 def
+ /t1hclosepathscale 0.4 def
+ /t1sclosepathscale 0.4 def
+ /t1gridscale 0.5 def
+
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [2 2] 0 } def
+ /t1hlinedash { [] 0 } def
+ /t1slinedash { [] 0 } def
+ /t1movedash { [2 2] 0 } def
+ /t1hmovedash { [2 2] 0 } def
+ /t1smovedash { [2 2] 0 } def
+ /t1curvedash { [2 2] 0 } def
+ /t1hcurvedash { [] 0 } def
+ /t1scurvedash { [] 0 } def
+ /t1sprolongatedash { [] 0 }def
+ /t1closepathdash { [2 2] 0 } def
+ /t1hclosepathdash { [] 0 } def
+ /t1sclosepathdash { [] 0 } def
+ /t1griddash { [3 3] 0 } def
+
+ % Define a clipping rectangle ROI (in charspace coordinates)
+ /t1ROIxmin 0 def
+ /t1ROIxmax 300 def
+ /t1ROIymin -50 def
+ /t1ROIymax 650 def
+
+ % Device values (in bp). These must match the Bounding Box Statement!
+ /xmindev 0 neg def
+ /xmaxdev 280 def
+ /ymindev 0 neg def
+ /ymaxdev 400 def
+ /dxdev 1 def
+ /dydev 1 def
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % End of Customizable Section
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ % logical pixel values
+ /xminpixel t1ROIxmin 1000.0 div size mul def
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def
+ /yminpixel t1ROIymin 1000.0 div size mul def
+ /ymaxpixel t1ROIymax 1000.0 div size mul def
+ /dxpixel 1 def
+ /dypixel 1 def
+
+ % compute scales and set minimum scale
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse
+
+ % Fill device page
+ xmindev ymindev moveto
+ xmaxdev 0 rlineto
+ 0 ymaxdev rlineto
+ xmaxdev neg 0 rlineto
+ 0 ymaxdev neg rlineto
+ closepath
+ clip
+ t1fillpage 1 eq
+ {
+ t1pagecolor setrgbcolor
+ fill
+ } if
+
+ % reassign device values
+ /xmindev xminpixel scale mul def
+ /xmaxdev xmaxpixel scale mul def
+ /ymindev yminpixel scale mul def
+ /ymaxdev ymaxpixel scale mul def
+ /dxdev dxpixel scale mul def
+ /dydev dypixel scale mul def
+
+ % translate coordinate system
+ xminpixel scale mul neg yminpixel scale mul neg translate
+
+ % Fill unit square of charspace coordinate system
+ t1fillunitsquare 1 eq
+ {
+ t1unitsquarecolor setrgbcolor
+ 0 0 moveto
+ size scale mul 0 rlineto
+ 0 size scale mul rlineto
+ size scale mul neg 0 rlineto
+ 0 size scale mul neg rlineto
+ closepath fill
+ } if
+} def
+
+/t1FinishPage {
+ t1drawgrid 1 eq
+ {
+ t1gridcolor setrgbcolor
+ t1gridscale setlinewidth
+ t1griddash setdash
+ % draw grid and align to the point (0,0)
+ 0 dxdev xmaxdev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dxdev neg xmindev {
+ /xval exch def
+ xval ymindev moveto
+ xval ymaxdev lineto
+ stroke
+ } for
+ 0 dydev ymaxdev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ 0 dydev neg ymindev {
+ /yval exch def
+ xmindev yval moveto
+ xmaxdev yval lineto
+ stroke
+ } for
+ } if
+} def
+
+% Define three arrow routines available for later providing the output with directions
+/t1arrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1arrowcolor setrgbcolor
+ currx curry translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1harrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1harrowcolor setrgbcolor
+ currhx currhy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+/t1sarrowhead {
+ /tmpy exch def
+ /tmpx exch def
+ gsave
+ t1sarrowcolor setrgbcolor
+ currsx currsy translate
+ tmpy tmpx atan rotate
+ newpath
+ 0 0 moveto
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto
+ closepath
+ fill
+ grestore
+ tmpx
+ tmpy
+} def
+
+/t1rlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1linecolor setrgbcolor
+ t1linedash setdash
+ t1linescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+} def
+
+/t1srlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1slinecolor setrgbcolor
+ t1slinedash setdash
+ t1slinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1sprolongate {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1sprolongatecolor setrgbcolor
+ t1sprolongatedash setdash
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+} def
+
+/t1hintedrlineto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hlinecolor setrgbcolor
+ t1hlinedash setdash
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+} def
+
+/t1rmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1movecolor setrgbcolor
+ t1movedash setdash
+ t1movescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currx curry moveto
+ x2 y2 rlineto
+ stroke
+ /currx currx x2 add def
+ /curry curry y2 add def
+ /startx currx def
+ /starty curry def
+} def
+
+/t1srmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1smovecolor setrgbcolor
+ t1smovedash setdash
+ t1smovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currsx currsy moveto
+ x2 y2 rlineto
+ stroke
+ /currsx currsx x2 add def
+ /currsy currsy y2 add def
+ /startsx currsx def
+ /startsy currsy def
+} def
+
+/t1hintedrmoveto {
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hmovecolor setrgbcolor
+ t1hmovedash setdash
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ currhx currhy moveto
+ x2 y2 rlineto
+ stroke
+ /currhx currhx x2 add def
+ /currhy currhy y2 add def
+ /starthx currhx def
+ /starthy currhy def
+} def
+
+/t1rrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1curvecolor setrgbcolor
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currx curry moveto
+ currx x2 add curry y2 add lineto
+ stroke
+ currx x2 x3 add add curry y2 y3 add add moveto
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1curvedash setdash
+ t1curvescale t1dumpstdlinewidth mul setlinewidth
+ currx curry moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currx currx x2 x3 x4 add add add def
+ /curry curry y2 y3 y4 add add add def
+} def
+
+/t1srrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1scurvecolor setrgbcolor
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoffcurvepoints 1 eq
+ {
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currsx currsy moveto
+ currsx x2 add currsy y2 add lineto
+ stroke
+ currsx x2 x3 add add currsy y2 y3 add add moveto
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1scurvedash setdash
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth
+ currsx currsy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currsx currsx x2 x3 x4 add add add def
+ /currsy currsy y2 y3 y4 add add add def
+} def
+
+/t1hintedrrcurveto {
+ /y4 exch scale mul def
+ /x4 exch scale mul def
+ /y3 exch scale mul def
+ /x3 exch scale mul def
+ /y2 exch scale mul def
+ /x2 exch scale mul def
+ t1hcurvecolor setrgbcolor
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showoncurvepoints 1 eq
+ {
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill
+ } if
+ t1showbeziertangents 1 eq
+ {
+ [2 2] 0 setdash
+ t1curvetangentscale currentlinewidth mul setlinewidth
+ currhx currhy moveto
+ currhx x2 add currhy y2 add lineto
+ stroke
+ currhx x2 x3 add add currhy y2 y3 add add moveto
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto
+ stroke
+ } if
+ t1hcurvedash setdash
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth
+ currhx currhy moveto
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto
+ stroke
+ /currhx currhx x2 x3 x4 add add add def
+ /currhy currhy y2 y3 y4 add add add def
+} def
+
+/t1sbw {
+ /wy exch scale mul def
+ /wx exch scale mul def
+ /sby exch scale mul def
+ /sbx exch scale mul def
+ t1sbwcolor setrgbcolor
+ newpath sbx sby 3 0 360 arc closepath fill
+ newpath wx wy 3 0 360 arc closepath fill
+ /currx sbx def
+ /curry sby def
+ /currhx sbx def
+ /currhy sby def
+ /currsx sbx def
+ /currsy sby def
+} def
+
+/t1closepath {
+ t1closepathdash setdash
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth
+ t1closepathcolor setrgbcolor
+ currx curry moveto
+ startx starty lineto
+ stroke
+} def
+
+/t1sclosepath {
+ t1sclosepathdash setdash
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1sclosepathcolor setrgbcolor
+ currsx currsy moveto
+ startsx startsy lineto
+ stroke
+} def
+
+/t1hintedclosepath {
+ t1hclosepathdash setdash
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth
+ t1hclosepathcolor setrgbcolor
+ currhx currhy moveto
+ starthx starthy lineto
+ stroke
+} def
+
+/t1vstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1alignedvstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ stemstart ymindev moveto
+ stemstart ymaxdev lineto
+ stroke
+ [2 2] 0 setdash
+ stemwidth stemstart add ymindev moveto
+ stemwidth stemstart add ymaxdev lineto
+ stroke
+ } if
+} def
+
+/t1hstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1stemscale t1dumpstdlinewidth mul setlinewidth
+ t1stemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1alignedhstem {
+ t1drawstems 1 eq
+ {
+ /stemwidth exch scale mul def
+ /stemstart exch scale mul def
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth
+ t1alignedstemcolor setrgbcolor
+ [] 0 setdash
+ xmindev stemstart moveto
+ xmaxdev stemstart lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev stemwidth stemstart add moveto
+ xmaxdev stemwidth stemstart add lineto
+ stroke
+ } if
+} def
+
+/t1bottomzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth
+ t1bottomzonecolor setrgbcolor
+ [] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [2 2] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+/t1topzone {
+ t1drawzones 1 eq
+ {
+ /bottom exch scale mul def
+ /top exch scale mul def
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth
+ t1topzonecolor setrgbcolor
+ [2 2] 0 setdash
+ xmindev bottom moveto
+ xmaxdev bottom lineto
+ stroke
+ [] 0 setdash
+ xmindev top moveto
+ xmaxdev top lineto
+ stroke
+ } if
+} def
+
+end
+
+% Next follows drawing code from charstring commands:
+T1LibDict begin
+
+gsave
+15.000001 t1SetupSize
+t1PreparePage
+-0.329987 0.000000 t1bottomzone
+10.244583 10.574570 t1topzone
+6.464737 6.719727 t1topzone
+9.989594 10.154587 t1topzone
+-3.089874 -2.909882 t1bottomzone
+-0.164993 0.374985 t1hstem
+0.000000 1.000000 t1alignedhstem
+2.414902 0.299988 t1hstem
+2.000000 1.000000 t1alignedhstem
+5.999756 0.464981 t1hstem
+5.000000 1.000000 t1alignedhstem
+8.924637 0.299988 t1hstem
+9.000000 1.000000 t1alignedhstem
+1.559937 1.034958 t1vstem
+2.000000 1.000000 t1alignedvstem
+4.604813 0.374985 t1vstem
+4.000000 1.000000 t1alignedvstem
+0.284988 0.000000 0.284988 0.000000 t1sbw
+2.309906 5.999756 t1srmoveto
+0.000000 -0.112495 t1sprolongate
+2.144913 0.000000 t1srlineto
+0.112495 0.000000 t1sprolongate
+0.000000 0.112495 t1sprolongate
+0.000000 0.464981 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-2.144913 0.000000 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+0.112495 -0.000000 t1sprolongate
+0.000000 2.759888 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-0.374985 0.000000 t1srlineto
+-0.111132 0.000000 t1sprolongate
+-0.001355 -0.111124 t1sprolongate
+-0.014942 -1.225209 -0.444926 -1.502841 -1.367155 -0.055802 t1srrcurveto
+-0.107908 -0.004404 t1sprolongate
+0.000000 -0.107997 t1sprolongate
+0.000000 -0.329987 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+1.274948 0.000000 t1srlineto
+-0.000000 0.112495 t1sprolongate
+-0.112495 -0.000000 t1sprolongate
+0.000000 -4.139832 t1srlineto
+0.000000 -1.938169 1.481412 -0.199244 0.566005 0.000000 t1srrcurveto
+1.163073 0.000000 0.434362 1.158258 0.000000 0.979156 t1srrcurveto
+0.000000 0.854965 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+-0.374985 0.000000 t1srlineto
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.112495 t1sprolongate
+0.000000 -0.824966 t1srlineto
+0.000000 -1.086171 -0.432363 -0.481265 -0.460100 0.000000 t1srrcurveto
+-0.872319 0.000000 -0.020145 1.203144 0.000000 0.304295 t1srrcurveto
+0.000000 4.169830 t1srlineto
+-0.112495 0.000000 t1sprolongate
+t1sclosepath
+-0.112495 0.112495 t1srmoveto
+-0.000000 -0.112495 t1sprolongate
+0.000000 -4.169830 t1srlineto
+0.000000 -0.205685 -0.020145 -1.526745 1.137599 0.000000 t1srrcurveto
+0.649854 0.000000 0.467600 0.658688 0.000000 1.133739 t1srrcurveto
+0.000000 0.824966 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.374985 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.854965 t1srlineto
+0.000000 -0.940766 -0.405604 -0.971656 -0.966840 0.000000 t1srrcurveto
+-0.513951 0.000000 -1.308475 0.160742 0.000000 1.751680 t1srrcurveto
+0.000000 4.139832 t1srlineto
+-0.000000 0.112495 t1sprolongate
+-0.112495 -0.000000 t1sprolongate
+-1.274948 0.000000 t1srlineto
+0.000000 -0.112495 t1sprolongate
+0.112495 0.000000 t1sprolongate
+0.000000 0.329987 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+0.004588 -0.112402 t1sprolongate
+1.572725 0.064193 0.455038 1.707028 0.015057 1.234691 t1srrcurveto
+-0.112487 0.001372 t1sprolongate
+-0.000000 -0.112495 t1sprolongate
+0.374985 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -2.759888 t1srlineto
+-0.000000 -0.112495 t1sprolongate
+0.112495 -0.000000 t1sprolongate
+2.144913 0.000000 t1srlineto
+0.000000 0.112495 t1sprolongate
+-0.112495 0.000000 t1sprolongate
+0.000000 -0.464981 t1srlineto
+0.112495 -0.000000 t1sprolongate
+-0.000000 0.112495 t1sprolongate
+-2.144913 0.000000 t1srlineto
+-0.112495 -0.000000 t1sprolongate
+t1sclosepath
+0.112495 -4.282326 t1srmoveto
+t1FinishPage
+0.284988 0.000000 0.284988 0.000000 t1sbw
+2.309906 5.999756 t1rmoveto
+2.144913 0.000000 t1rlineto
+0.000000 0.464981 t1rlineto
+-2.144913 0.000000 t1rlineto
+0.000000 2.759888 t1rlineto
+-0.374985 0.000000 t1rlineto
+-0.014999 -1.229950 -0.449982 -1.604935 -1.469940 -0.059998 t1rrcurveto
+0.000000 -0.329987 t1rlineto
+1.274948 0.000000 t1rlineto
+0.000000 -4.139832 t1rlineto
+0.000000 -1.844925 1.394943 -0.179993 0.539978 0.000000 t1rrcurveto
+1.064957 0.000000 0.419983 1.064957 0.000000 0.959961 t1rrcurveto
+0.000000 0.854965 t1rlineto
+-0.374985 0.000000 t1rlineto
+0.000000 -0.824966 t1rlineto
+0.000000 -1.109955 -0.449982 -0.569977 -0.554977 0.000000 t1rrcurveto
+-1.004959 0.000000 0.000000 1.364944 0.000000 0.254990 t1rrcurveto
+t1closepath
+t1FinishPage
+grestore
+
+end
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.pdf
new file mode 100644
index 00000000000..bb5f24dec0f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1dump/t1dump_t_2.pdf
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.pdf b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.pdf
new file mode 100644
index 00000000000..2e46706773f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.pdf
@@ -0,0 +1,17329 @@
+%PDF-1.2
+6 0 obj
+<< /S /GoTo /D (section.1) >>
+endobj
+8 0 obj
+(Introduction)
+endobj
+10 0 obj
+<< /S /GoTo /D (subsection.1.1) >>
+endobj
+12 0 obj
+(What Does t1lib Do?)
+endobj
+14 0 obj
+<< /S /GoTo /D (subsection.1.2) >>
+endobj
+16 0 obj
+(Copyrights and Credits)
+endobj
+18 0 obj
+<< /S /GoTo /D (subsection.1.3) >>
+endobj
+20 0 obj
+(Motivation)
+endobj
+22 0 obj
+<< /S /GoTo /D (subsection.1.4) >>
+endobj
+24 0 obj
+(How to Reach the Author/How to Get t1lib)
+endobj
+26 0 obj
+<< /S /GoTo /D (section.2) >>
+endobj
+28 0 obj
+(Getting Started)
+endobj
+30 0 obj
+<< /S /GoTo /D (subsection.2.1) >>
+endobj
+32 0 obj
+(Building, Installing and Removing the t1lib-Package)
+endobj
+34 0 obj
+<< /S /GoTo /D (subsection.2.2) >>
+endobj
+36 0 obj
+(Notes on Using GNU libtool)
+endobj
+38 0 obj
+<< /S /GoTo /D (subsection.2.3) >>
+endobj
+40 0 obj
+(Runtime-Setup)
+endobj
+42 0 obj
+<< /S /GoTo /D (subsubsection.2.3.1) >>
+endobj
+44 0 obj
+(Searchpath and Environment Setup)
+endobj
+46 0 obj
+<< /S /GoTo /D (subsubsection.2.3.2) >>
+endobj
+48 0 obj
+(The t1lib Configuration File)
+endobj
+50 0 obj
+<< /S /GoTo /D (subsubsection.2.3.3) >>
+endobj
+52 0 obj
+(The Font Database File)
+endobj
+54 0 obj
+<< /S /GoTo /D (subsubsection.2.3.4) >>
+endobj
+56 0 obj
+(Alternative Runtime Setups)
+endobj
+58 0 obj
+<< /S /GoTo /D (subsection.2.4) >>
+endobj
+60 0 obj
+(A Very Simple Programming Example)
+endobj
+62 0 obj
+<< /S /GoTo /D (section.3) >>
+endobj
+64 0 obj
+(The Program xglyph)
+endobj
+66 0 obj
+<< /S /GoTo /D (subsection.3.1) >>
+endobj
+68 0 obj
+(Common Parameter Dialogs and Toggle Buttons)
+endobj
+70 0 obj
+<< /S /GoTo /D (subsection.3.2) >>
+endobj
+72 0 obj
+(Buttons that Influence the X11 Rastering Functions)
+endobj
+74 0 obj
+<< /S /GoTo /D (subsection.3.3) >>
+endobj
+76 0 obj
+(Buttons that Generate Actions)
+endobj
+78 0 obj
+<< /S /GoTo /D (subsection.3.4) >>
+endobj
+80 0 obj
+(The Message Window)
+endobj
+82 0 obj
+<< /S /GoTo /D (subsection.3.5) >>
+endobj
+84 0 obj
+(The Output Window)
+endobj
+86 0 obj
+<< /S /GoTo /D (subsection.3.6) >>
+endobj
+88 0 obj
+(xglyph Commandline Parameters)
+endobj
+90 0 obj
+<< /S /GoTo /D (subsection.3.7) >>
+endobj
+92 0 obj
+(Fonts Included in the t1lib-Package)
+endobj
+94 0 obj
+<< /S /GoTo /D (subsection.3.8) >>
+endobj
+96 0 obj
+(Some General Remarks on xglyph)
+endobj
+98 0 obj
+<< /S /GoTo /D (section.4) >>
+endobj
+100 0 obj
+(The Program type1afm)
+endobj
+102 0 obj
+<< /S /GoTo /D (section.5) >>
+endobj
+104 0 obj
+(Using t1lib)
+endobj
+106 0 obj
+<< /S /GoTo /D (subsection.5.1) >>
+endobj
+108 0 obj
+(Compiling and Linking t1lib-Programs)
+endobj
+110 0 obj
+<< /S /GoTo /D (subsection.5.2) >>
+endobj
+112 0 obj
+(Querying and Setting Fundamental Configuration Parameters of t1lib)
+endobj
+114 0 obj
+<< /S /GoTo /D (subsection.5.3) >>
+endobj
+116 0 obj
+(Initialization of t1lib and Related Things)
+endobj
+118 0 obj
+<< /S /GoTo /D (subsubsection.5.3.1) >>
+endobj
+120 0 obj
+(Standard Initialization)
+endobj
+122 0 obj
+<< /S /GoTo /D (subsubsection.5.3.2) >>
+endobj
+124 0 obj
+(Fine Control over Font Databases and File Search Paths)
+endobj
+126 0 obj
+<< /S /GoTo /D (subsubsection.5.3.3) >>
+endobj
+128 0 obj
+(Adding Fonts to the Database)
+endobj
+130 0 obj
+<< /S /GoTo /D (subsubsection.5.3.4) >>
+endobj
+132 0 obj
+(Summary of Search Path Handling)
+endobj
+134 0 obj
+<< /S /GoTo /D (subsubsection.5.3.5) >>
+endobj
+136 0 obj
+(Bypassing the t1lib File Search Machinery)
+endobj
+138 0 obj
+<< /S /GoTo /D (subsection.5.4) >>
+endobj
+140 0 obj
+(The t1lib-Logfile)
+endobj
+142 0 obj
+<< /S /GoTo /D (subsection.5.5) >>
+endobj
+144 0 obj
+(Generating Bitmaps)
+endobj
+146 0 obj
+<< /S /GoTo /D (subsection.5.6) >>
+endobj
+148 0 obj
+(Loading Fonts Explicitly)
+endobj
+150 0 obj
+<< /S /GoTo /D (subsection.5.7) >>
+endobj
+152 0 obj
+(Functions for Encoding Handling)
+endobj
+154 0 obj
+<< /S /GoTo /D (subsection.5.8) >>
+endobj
+156 0 obj
+(Deleting Data)
+endobj
+158 0 obj
+<< /S /GoTo /D (subsection.5.9) >>
+endobj
+160 0 obj
+(Underlining, Overlining and Overstriking)
+endobj
+162 0 obj
+<< /S /GoTo /D (subsection.5.10) >>
+endobj
+164 0 obj
+(Common Information on Fonts and Characters)
+endobj
+166 0 obj
+<< /S /GoTo /D (subsubsection.5.10.1) >>
+endobj
+168 0 obj
+(Information from FontInfo-Dictionary)
+endobj
+170 0 obj
+<< /S /GoTo /D (subsubsection.5.10.2) >>
+endobj
+172 0 obj
+(Metric Information on Glyphs)
+endobj
+174 0 obj
+<< /S /GoTo /D (subsubsection.5.10.3) >>
+endobj
+176 0 obj
+(Character-Encoding Relation)
+endobj
+178 0 obj
+<< /S /GoTo /D (subsubsection.5.10.4) >>
+endobj
+180 0 obj
+(Administrative Information)
+endobj
+182 0 obj
+<< /S /GoTo /D (subsection.5.11) >>
+endobj
+184 0 obj
+(Transformation of Fonts)
+endobj
+186 0 obj
+<< /S /GoTo /D (subsubsection.5.11.1) >>
+endobj
+188 0 obj
+(Fontlevel Transformations)
+endobj
+190 0 obj
+<< /S /GoTo /D (subsubsection.5.11.2) >>
+endobj
+192 0 obj
+(Transformation at Rastering Time)
+endobj
+194 0 obj
+<< /S /GoTo /D (subsubsection.5.11.3) >>
+endobj
+196 0 obj
+(t1lib and PostScript: Notes on Transformation Matrices)
+endobj
+198 0 obj
+<< /S /GoTo /D (subsection.5.12) >>
+endobj
+200 0 obj
+(Stroking of Character Outlines)
+endobj
+202 0 obj
+<< /S /GoTo /D (subsection.5.13) >>
+endobj
+204 0 obj
+(Antialiasing)
+endobj
+206 0 obj
+<< /S /GoTo /D (subsubsection.5.13.1) >>
+endobj
+208 0 obj
+(General Description)
+endobj
+210 0 obj
+<< /S /GoTo /D (subsubsection.5.13.2) >>
+endobj
+212 0 obj
+(Setting Operating Parameters)
+endobj
+214 0 obj
+<< /S /GoTo /D (subsubsection.5.13.3) >>
+endobj
+216 0 obj
+(Smart Antialiasing)
+endobj
+218 0 obj
+<< /S /GoTo /D (subsubsection.5.13.4) >>
+endobj
+220 0 obj
+(Caching of Antialiased Character Glyphs)
+endobj
+222 0 obj
+<< /S /GoTo /D (subsection.5.14) >>
+endobj
+224 0 obj
+(Interface to Outlines)
+endobj
+226 0 obj
+<< /S /GoTo /D (subsubsection.5.14.1) >>
+endobj
+228 0 obj
+(Outline Format)
+endobj
+230 0 obj
+<< /S /GoTo /D (subsubsection.5.14.2) >>
+endobj
+232 0 obj
+(Using Outlines)
+endobj
+234 0 obj
+<< /S /GoTo /D (subsubsection.5.14.3) >>
+endobj
+236 0 obj
+(Manipulation of Outlines)
+endobj
+238 0 obj
+<< /S /GoTo /D (subsection.5.15) >>
+endobj
+240 0 obj
+(Logical Fonts)
+endobj
+242 0 obj
+<< /S /GoTo /D (subsection.5.16) >>
+endobj
+244 0 obj
+(Missing or Invalid AFM Files)
+endobj
+246 0 obj
+<< /S /GoTo /D (subsubsection.5.16.1) >>
+endobj
+248 0 obj
+(Remarks on AFM Files)
+endobj
+250 0 obj
+<< /S /GoTo /D (subsubsection.5.16.2) >>
+endobj
+252 0 obj
+(Generation of AFM Information)
+endobj
+254 0 obj
+<< /S /GoTo /D (subsubsection.5.16.3) >>
+endobj
+256 0 obj
+(Writing AFM Files)
+endobj
+258 0 obj
+<< /S /GoTo /D (subsection.5.17) >>
+endobj
+260 0 obj
+(Font Subsetting)
+endobj
+262 0 obj
+<< /S /GoTo /D (subsubsection.5.17.1) >>
+endobj
+264 0 obj
+(Font File Organization and Subsetting)
+endobj
+266 0 obj
+<< /S /GoTo /D (subsubsection.5.17.2) >>
+endobj
+268 0 obj
+(Functions for Subsetting)
+endobj
+270 0 obj
+<< /S /GoTo /D (subsubsection.5.17.3) >>
+endobj
+272 0 obj
+(Further Functions for Subsetting)
+endobj
+274 0 obj
+<< /S /GoTo /D (subsection.5.18) >>
+endobj
+276 0 obj
+(Composite Characters)
+endobj
+278 0 obj
+<< /S /GoTo /D (subsubsection.5.18.1) >>
+endobj
+280 0 obj
+(General remarks)
+endobj
+282 0 obj
+<< /S /GoTo /D (subsubsection.5.18.2) >>
+endobj
+284 0 obj
+(Accessing Composite Character Data)
+endobj
+286 0 obj
+<< /S /GoTo /D (subsubsection.5.18.3) >>
+endobj
+288 0 obj
+(Transparent Handling of Composite Characters and User Extensions)
+endobj
+290 0 obj
+<< /S /GoTo /D (subsubsection.5.18.4) >>
+endobj
+292 0 obj
+(Caveats)
+endobj
+294 0 obj
+<< /S /GoTo /D (subsection.5.19) >>
+endobj
+296 0 obj
+(Error Handling)
+endobj
+298 0 obj
+<< /S /GoTo /D (subsubsection.5.19.1) >>
+endobj
+300 0 obj
+(Type 1 Font File Scan-Errors)
+endobj
+302 0 obj
+<< /S /GoTo /D (subsubsection.5.19.2) >>
+endobj
+304 0 obj
+(Path Generation Errors)
+endobj
+306 0 obj
+<< /S /GoTo /D (subsubsection.5.19.3) >>
+endobj
+308 0 obj
+(t1lib-Errors)
+endobj
+310 0 obj
+<< /S /GoTo /D (subsection.5.20) >>
+endobj
+312 0 obj
+(Other Useful Functions)
+endobj
+314 0 obj
+<< /S /GoTo /D (section.6) >>
+endobj
+316 0 obj
+(The X11-Interface)
+endobj
+318 0 obj
+<< /S /GoTo /D (subsection.6.1) >>
+endobj
+320 0 obj
+(Why a Special X11-Interface?)
+endobj
+322 0 obj
+<< /S /GoTo /D (subsection.6.2) >>
+endobj
+324 0 obj
+(Initialization of the X11-Interface)
+endobj
+326 0 obj
+<< /S /GoTo /D (subsection.6.3) >>
+endobj
+328 0 obj
+(Rastering Functions)
+endobj
+330 0 obj
+<< /S /GoTo /D (subsection.6.4) >>
+endobj
+332 0 obj
+(Creating XPM-Files from t1lib-Glyphs)
+endobj
+334 0 obj
+<< /S /GoTo /D (subsection.6.5) >>
+endobj
+336 0 obj
+(Limits of the X11 Interface)
+endobj
+338 0 obj
+<< /S /GoTo /D (section.7) >>
+endobj
+340 0 obj
+(Internals \(incomplete\))
+endobj
+342 0 obj
+<< /S /GoTo /D (subsection.7.1) >>
+endobj
+344 0 obj
+(Level 0: Global Data)
+endobj
+346 0 obj
+<< /S /GoTo /D (subsection.7.2) >>
+endobj
+348 0 obj
+(Level 1: Size-Independent Font Data)
+endobj
+350 0 obj
+<< /S /GoTo /D (subsection.7.3) >>
+endobj
+352 0 obj
+(Level 2: Size-Dependent Font Data)
+endobj
+354 0 obj
+<< /S /GoTo /D (section.8) >>
+endobj
+356 0 obj
+(Stroked Characters)
+endobj
+358 0 obj
+<< /S /GoTo /D (subsection.8.1) >>
+endobj
+360 0 obj
+(Approach)
+endobj
+362 0 obj
+<< /S /GoTo /D (subsection.8.2) >>
+endobj
+364 0 obj
+(Computation of Parallel Paths)
+endobj
+366 0 obj
+<< /S /GoTo /D (subsection.8.3) >>
+endobj
+368 0 obj
+(Connection of Path Segments and Prolongation)
+endobj
+370 0 obj
+<< /S /GoTo /D (equation.20) >>
+endobj
+372 0 obj
+(Function Index)
+endobj
+374 0 obj
+<< /S /GoTo /D [373 0 R /Fit ] >>
+endobj
+378 0 obj <<
+/Length 379 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ¥R;OÃ0Þû+<:Rsõ_ÉØ"ŠtA bHÛ"”¤J³þ<ç8€y¸‡¿ï»‡BñAáIøÌùL욊x^ćwùˆ4Vƒ5!ú˜’& ²"Õ2gÆÿ¢¡Hå"õrEAbUÌkÌð™Åa„ûYàm½M‹ëÅšXÆ€6.ܧ–ÀêÐOzÄÞ'ɪ?Õ]›¤š¼´€ ‚kå[0NnÊz=Ìæñ†”²S-С `ƵH¤¼A§ÜX`É o%wÔ—ý9Zº>:WU[õåP·OAMhð–ÙZáwì‹ç²/wC5áWõДÇÓ¤ÒwÍHã0wßxË}·e”’UÀ:Y$åùÈÆ”•Í:Éäá5Éá4Íd¾,w¥4‹{d¢ø]Y·±£\nªö5Lœ]Ÿï…¹T^¤Ž‚Ô¿?Ó;˜@“‡endstream
+endobj
+379 0 obj
+339
+endobj
+373 0 obj <<
+/Type /Page
+/Contents 378 0 R
+/Resources 377 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+>> endobj
+1 0 obj
+ << /Type /Encoding /Differences [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] >>
+endobj
+2 0 obj
+ << /Type /Font /Subtype /Type1 /Name /ZaDb /BaseFont /ZapfDingbats >>
+endobj
+3 0 obj
+ << /Type /Font /Subtype /Type1 /Name /Helv /BaseFont /Helvetica /Encoding 1 0 R >>
+endobj
+4 0 obj
+ << /Fields [] /DR << /Font << /ZaDb 2 0 R /Helv 3 0 R >> >> /DA (/Helv 10 Tf 0 g ) /NeedAppearances true >>
+endobj
+376 0 obj <<
+/D [373 0 R /XYZ 72 786.278 null]
+>> endobj
+375 0 obj <<
+/D [373 0 R /XYZ 72 761.372 null]
+>> endobj
+377 0 obj <<
+/Font << /F19 380 0 R /F21 381 0 R /F23 380 0 R /F24 382 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+388 0 obj <<
+/Length 389 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚí\]sÛ¸}ϯУ4Sa‰oà©c;qÖÝd7ngÚ>p%ZâX"=•ûë{I4MÀM»¦ek2ë¢܃{Ï=÷BxäÁ?<’d$•@DªÑlýÌ¿«QùèxÍŒdœ"βg;NË‘SÊ‘<|ñî§SÂG˜!ÊÄèâ2{1ÿ×ø$Ž&”ŒÓÀüÙLþsñ·w.ª«y£)aˆñüþÌ |mùè—âÒb„=¤=]¿4žL5áã3så$žLáï|;KCøÎÆ×(Ž8Ñ»'GF’™q÷3k^~Êh6HŒ¦Ö†·Îs×\Ì{„Œ_ú)Ì„Òñ{˜‘ã _3¸Yûœ"ˆKQ|8Å«ð3èÎÅ)ÓbÐûø¯Í»Æ”"©ÔîUáˆz¸¶(Î) É”{^íÓÚ~ñ‘ï zéÆòM üþå»­,
+ýgNçOãjÒØDº¯?›@¨[š§é20Ž¶é2N~Ê>£›Ÿù¤Ž¸Hà¥ÍÀxg2‚˜èÀÒd_¢^ÓG?€Åz^”´°/Ÿ#†ÏaÓ0Z€•Ÿ§~’sk~E”wˆAÙnÑx'¡“í„®äIÅ获áj3ú‹ «gÑ&õW+3Ex^ÅÛ¯Á:ÎvÁ÷â-³\Ljc¾ƒüä¤dˆÓ/Ù®3›ì*÷á‹ÀO),w¯©FZ‹—àÁ-bw†{ÅW9˜g$û5Nƒ‚‚AxÍíÿmSAáã¯ßPÀ€R\Y€ÆñÊZé!B:– 7˜›Èç°W´ìõ$Àá}pSò²¯Û(§ïá:˜žéöºyKZ"OtHìÐu}Èò
+³_8y—ÀiM‰ÞŠ{ÿö0[l“:ðø4\vHrÙEiÂø¡æj,¹ê=(ph 8¹ 8¨œ¦€ë(ÕJ?õÿð7åû.0Õíž%ÒB¾†@ô
+ÔÈI-vØš¢PÝ4E–'e¯£XnB"©ž OeJ‘çȸ„LÉyv®¯W…°ó%‰‰¿^WIð‡~þ®E*DZÕE«yèÚw\4ç½öù· ôGÂ%G?\É¡FÉ1ÑBUævpÍV¸øØÅêæziÝ6Qí‚gÅÆÁ›1Nvi=˜ÛbL4ÃOoèÓJì9‰×kÄØ؈.0ñ
+Xpªm”ׯmÛKŠ4Õ]Ô¹•]Y Ý+aÆrHcÓvc ¢
+¾¨®* Gž¶™sS®S•T·^ß\…Q™‚ÕÉ©«dTe•¯•t¿æÖ°&~¨(êÃïY8ºhW¤ gÑlµEFmuç¬ØhBÖÓÖ=Œ<ÑE~%ÒÏ=™>zöÁ!Cú&U€ë<.%>C†WekÏÚO®nëÚXqŽXž³´h
+臅[!Á®¥º”—<®ö9X”…Û‡»6\èà•‚ö÷mÜØýpçU# `¨Çæ~ÞŠ
+Sï4¤¦b/9„Õ§ôŒõêS!b¸¢2¯7(¥`b?™›mÝ€’¥-Ãçî"’(Ìßh§#E„‘}DDÙ»tZ)'E*›ÄE(È|Ïþ+Ëm§yaÍÕ¦Ò,Áå +¦NmzâªÓ_2EÎO—–C¡G^—C…Àfñÿ_”kv}šÓ~––ÃZºl6:šÏ+Rà.ʃ U]­ê@²ê.º]¶èÀÚ>t=,Êæ¢óízí—$Àê;UÕvªW}¬?¹sáÒ›:ñ
+µU'`Ž’Ë8)OeÍÌïÂÜ‚ê>¦‹$S‚vëžf‡"þNpè!ÁQZß«àVÏ’^Wê/:y ÂÎÃkõ”hXº^]¬  !]@è[4ðåàño…lf^lbÊ77i^¹2jà9‚ŠNÜXªýt4O—R3:$°3jœS8‹ º¬ë器Vt»ËVª¢îÉÒOü™«wŒ°¬viÖ`
+¿tÅqRê~?úņÔRà5<™
+æ0÷e¯mƒgæïÃœ„ø g¿
+ש%Gk¹§?£#E;o16cóž¶&ÆÖŸðÙ³òDÊ=ÛücÖrå8® d
+ßøUœ½{òÆ<&ÞðÔ€ rÕÓ"yPµä!¯œ»ª©’uK2‘Ìï0¿Øü̘ÿh¾Vä­q6»î¬('ÚëÄ·ÆÇLú-ï·Ã òxvÐ0#{ùùÒÄ6Í
+å!.y§ßËÓê B=
+Åñ#»tÉhJÒkíúÉ/ÂÇv¦dÄÞ±¶æÛÿ`42Æendstream
+endobj
+389 0 obj
+2480
+endobj
+387 0 obj <<
+/Type /Page
+/Contents 388 0 R
+/Resources 386 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+/Annots [ 390 0 R 392 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R ]
+>> endobj
+390 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 725.955 157.529 733.53]
+/Subtype /Link
+/A << /S /GoTo /D (section.1) >>
+>> endobj
+392 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 712.405 222.151 719.981]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.1.1) >>
+>> endobj
+395 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 696.735 224.848 706.432]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.1.2) >>
+>> endobj
+396 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 685.307 165.575 692.762]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.1.3) >>
+>> endobj
+397 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 669.031 330.832 679.94]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.1.4) >>
+>> endobj
+398 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 645.179 175.355 654.875]
+/Subtype /Link
+/A << /S /GoTo /D (section.2) >>
+>> endobj
+399 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 631.629 370.18 641.326]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.1) >>
+>> endobj
+400 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 618.08 258.59 627.656]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.2) >>
+>> endobj
+401 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 604.531 185.424 614.107]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.3) >>
+>> endobj
+402 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 590.982 318.878 600.679]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.2.3.1) >>
+>> endobj
+403 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 577.433 290.211 587.13]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.2.3.2) >>
+>> endobj
+404 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 566.005 261.908 573.581]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.2.3.3) >>
+>> endobj
+405 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 550.335 281.939 560.031]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.2.3.4) >>
+>> endobj
+406 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 536.785 297.181 546.482]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.4) >>
+>> endobj
+407 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 512.024 200.544 522.024]
+/Subtype /Link
+/A << /S /GoTo /D (section.3) >>
+>> endobj
+408 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 498.778 346.211 508.475]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.1) >>
+>> endobj
+409 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 485.229 362.302 494.926]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.2) >>
+>> endobj
+410 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 473.801 261.711 481.377]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.3) >>
+>> endobj
+411 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 458.131 218.121 467.827]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.4) >>
+>> endobj
+412 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 444.581 214.06 454.278]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.5) >>
+>> endobj
+413 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 430.729 275.059 440.729]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.6) >>
+>> endobj
+414 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 417.483 289.423 427.18]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.7) >>
+>> endobj
+415 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 403.631 278.166 413.631]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.8) >>
+>> endobj
+416 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 379.173 211.998 389.173]
+/Subtype /Link
+/A << /S /GoTo /D (section.4) >>
+>> endobj
+417 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 355.018 152.508 364.714]
+/Subtype /Link
+/A << /S /GoTo /D (section.5) >>
+>> endobj
+418 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 341.468 305.241 351.165]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.1) >>
+>> endobj
+419 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 327.919 453.483 337.616]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2) >>
+>> endobj
+420 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 314.37 316.847 324.067]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+421 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 302.942 256.575 310.518]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.1) >>
+>> endobj
+422 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 289.393 418.484 296.969]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.2) >>
+>> endobj
+423 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 273.723 292.727 283.42]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.3) >>
+>> endobj
+424 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 260.173 314.939 269.87]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.4) >>
+>> endobj
+425 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 246.624 357.787 256.321]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.5) >>
+>> endobj
+426 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 233.075 199.817 242.772]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.4) >>
+>> endobj
+427 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 219.526 209.833 229.102]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+428 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 205.977 231.242 215.674]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.6) >>
+>> endobj
+429 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 192.428 271.727 202.125]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+430 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 178.879 180.424 188.576]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.8) >>
+>> endobj
+431 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 165.329 309.999 175.026]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.9) >>
+>> endobj
+432 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 153.902 337.757 161.477]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.10) >>
+>> endobj
+433 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 138.231 328.757 147.928]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.10.1) >>
+>> endobj
+434 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 124.682 292.196 134.379]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.10.2) >>
+>> endobj
+435 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 111.133 287.817 120.83]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.10.3) >>
+>> endobj
+436 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 99.705 279.696 107.281]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.10.4) >>
+>> endobj
+437 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 86.156 228.939 93.732]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+385 0 obj <<
+/D [387 0 R /XYZ 72 786.278 null]
+>> endobj
+384 0 obj <<
+/D [387 0 R /XYZ 72 739.61 null]
+>> endobj
+386 0 obj <<
+/Font << /F25 380 0 R /F26 391 0 R /F15 393 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+441 0 obj <<
+/Length 442 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚí\]sÛ6}ϯÐ#õ ”ÀÅg_:Ù4Îfo:µ2éL»ŒB[œP”‡¢;m~ýHÉ$%Á´Æ6Çú0mAÄÁ½çœ{< õž2’#"äd±z'öçˤzö‹~Ï^I FÍ«#Î(&(”b2†$gæzó¾ùí—Iõì—ÿš¿øá ³ ‘
+Õd~Y¾?ÿüGÀÆOgœÒàl*i°Î¦DEÿeãt: Á|*!È£ls¹ÎWQ‘¬³Íôóÿ¼x=¯Ç‚™BX’ãƒfHj/Û?.4±0Üy Jµß¼çïàÏ7…€™ð7åÀÌàÖ¶×ÜØàHõD±¨hO½ ¢Â<Bð[´)â<É®ìËy²Š[W
+1ýAGG.ÄߧDVë’TõšwxÞËÏÿገ €º!˜«
+œ&ŸìE·þ upEÙg‹“_MYoŠ‹Ež\?êû¦Aõßuolh±x‚=8ÃÁyTäÉ"nÅ•F‹TaIsëE¯‰gý'Â:¯”ß/ èÕÎ .Š|ýÅ-f¬/íܼZFy´ÐËܾ|S¤IÖž,ˆß:—H)ñTSÀžL@)¬0øi€Ñ3"€EÆKK ’(M¢AHøDƒÈƒ³p2õ(cü@ÿº÷@ê ß/µÈAS TDóMœÅy”Ú`òs¼)3ƒ øÍÑAˆpÈO! ü)Ä“¾  kVÍ%(ϼˆ‹¢f‘ﯧ3"’¢NF%‘ÐyhëDÔ‘{$"ÔC~
+!\ ÊF˜e#ïÖWÉ¢ò,lJ±ü¤5ÿR"!¥—/-ž¥(¹¯Æ¢i,‰pP,q‹¥ód³Í<k§M,ÝýkÊx %ŒÓ//ÏΉIÒŽHÃuròñÇ¢?ϵw¶…+'È@¼"³¿Å«(ÿÒ¨–9`À`PŽ„¢Õ IѱóXAvýóm)¾¶@*P¼Í¶EÔ戥B¼<uªÇ 漇ôrFRÕòŠŠ~4ý9y²uÄ¢ƒ‰¼Œîè}ÜQAåÂòŠÝ. Œ‹›OWWi/ÔÓ.}Ðj¶wá@0¸W…VÐA3Œèj܆KAÞçWZÝQÄ®×çÜ–Zí*Ÿî@x,•ÜV’kE÷8§ìLûM¶° žå”^Vúä@(aXq¯PÂ(ŒlÓl`PÀ.(òbYUÑö£„B‰ÂˆJê#VßA¬~ÆÆ ‰ç°_ÒÒŠWë•iÇ0]œIá’@]XmÓNÀ^E‰B&Ç>°NÃk°œ ^ÈÎî®Ü™Í‘éâ>Ý‚IŽŸ±IÚ’(qŇ„ë‰G1^.qí~²Ã±Å5FEÔ¦“px™l¦©¸|~„R   ±yä:Êc-'T%'þ­5CÚî3?œiÊkj±ñacBƒ×q¶éÚ”\ã„a/Ù!ï “–îCúM—xºêæ*[ƒ0;¿¢veK¿K±Ý˜1Zn¨A9¢²ñužW ^Úa)qX íð#z¾ zä°% U‘ƹ‰9ÿØàÛøŽmpßoEAp±ˆ²Y ½Ž~pæç~sÄù2%N×>84c´}ÿÅÒµð6j_{fŸê¤¨¾`d܉æ <0$zïM%Òµñ™‹ö„ %ü4…f·0VDNß<,ñ€`Ih‰Ìû­Ï©ÆåMÚåy¶,/~8ÈÖ7 ÉFÏëtž—¼Gݵ<dƒLf„"ÊäAÌÞÕ—8)‚ùÒ-sÇxö6›®÷,´L/î×K zH·=ðÎÈVÕhF͆(€þQ¶ì:¡^—%%s¢Ûñ-·-o‘Dî`÷¥·5~j7© ?ÕÈžÏâ8]“š¤Ã©¿²©ÄÊÛ,)7^}íhJ*–Ž¬· ÒnMb~[È)’‚Óß76Àa£q>LÙ:½7‘’Ðo?§ÒŸ7:L@ÁØ¡2¯ò8Úîÿý×ó™mp³¥æ|½êP˜…n×…¿ س b굉ðqwUwª{õÕK1uçˆ9ؼKVIQõI»M:.û”De·Ï~_
+bÔ·qZâçÅä;Oœß,÷%íÂ’vÃÓ‰A¥Kßÿ Y˜d‹õê:‹X¿j«Qˆùlì½(‘Gù»:=5wû¿Ð¼õ&]²ätVV1Ñ<\xu ËÑyˆ<`=GÔŒ¾ìÐs‘|5‰ÿ;§^?»åÌ·¼úÎâ}èUUœ¶|û;+2$> d?—èP:\ÍŸz¢ÃH„—_@§wX(DÞMz
+ÐÀ‡­‹“à"¾Z™l+‚JoOàÍ×é:»êÜJ˜–*Œúd[J¾÷hÕª<蛨z‘p¥:wn󞾚ËfgSÅ+×ÔdRþwÇáÃûäP­dÕ­SX;?UïD–ç·Ï€  ôhÅSß…ÝbmÞ£UxÏÿ9Hçªendstream
+endobj
+442 0 obj
+2232
+endobj
+440 0 obj <<
+/Type /Page
+/Contents 441 0 R
+/Resources 439 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+/Annots [ 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R ]
+>> endobj
+443 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 750.413 272.636 757.989]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.11.1) >>
+>> endobj
+444 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 734.742 312.969 744.439]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.11.2) >>
+>> endobj
+445 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 721.193 423.271 730.89]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.11.3) >>
+>> endobj
+446 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 707.644 260.878 717.341]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.12) >>
+>> endobj
+447 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 694.095 170.484 703.792]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.13) >>
+>> endobj
+448 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 680.546 243.56 690.243]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.1) >>
+>> endobj
+449 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 666.997 291.696 676.572]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.2) >>
+>> endobj
+450 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 653.448 238.151 663.144]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.3) >>
+>> endobj
+451 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 639.898 344.681 649.595]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.4) >>
+>> endobj
+452 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 628.47 212.03 636.046]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.14) >>
+>> endobj
+453 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 614.921 222.484 622.497]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.14.1) >>
+>> endobj
+454 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 599.251 219.09 608.948]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.14.2) >>
+>> endobj
+455 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 585.702 268.424 595.399]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.14.3) >>
+>> endobj
+456 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 572.153 177.151 581.85]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+457 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 558.604 253.969 568.3]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.16) >>
+>> endobj
+458 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 547.176 260.181 554.751]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.1) >>
+>> endobj
+459 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 533.626 302.59 541.202]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.2) >>
+>> endobj
+460 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 517.956 239.666 527.653]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.3) >>
+>> endobj
+461 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 504.407 189.121 514.104]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.17) >>
+>> endobj
+462 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 490.858 332.393 500.555]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.17.1) >>
+>> endobj
+463 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 477.309 265.333 487.006]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.17.2) >>
+>> endobj
+464 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 463.76 304.939 473.456]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.17.3) >>
+>> endobj
+465 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 450.21 219.393 459.907]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.18) >>
+>> endobj
+466 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 438.782 227.075 446.358]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.18.1) >>
+>> endobj
+467 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 423.112 326.636 432.809]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.18.2) >>
+>> endobj
+468 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 409.563 476.605 419.26]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.18.3) >>
+>> endobj
+469 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 398.135 185.696 405.589]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.18.4) >>
+>> endobj
+470 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 382.465 186.121 392.162]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.19) >>
+>> endobj
+471 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 368.915 288.666 378.612]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.19.1) >>
+>> endobj
+472 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 357.488 261.348 365.063]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.19.2) >>
+>> endobj
+473 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [113.454 343.938 210.635 351.393]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.19.3) >>
+>> endobj
+474 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 330.389 224.666 337.965]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.20) >>
+>> endobj
+475 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 305.931 188.635 313.507]
+/Subtype /Link
+/A << /S /GoTo /D (section.6) >>
+>> endobj
+476 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 290.261 255.605 299.958]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.1) >>
+>> endobj
+477 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 278.833 273.484 286.408]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.2) >>
+>> endobj
+478 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 263.162 209.06 272.738]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3) >>
+>> endobj
+479 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 249.613 305.378 259.31]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4) >>
+>> endobj
+480 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 238.185 243.09 245.761]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.5) >>
+>> endobj
+481 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 211 210.568 221.909]
+/Subtype /Link
+/A << /S /GoTo /D (section.7) >>
+>> endobj
+482 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 200.178 214.136 207.754]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.1) >>
+>> endobj
+483 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 184.508 289.363 194.204]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2) >>
+>> endobj
+484 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 170.958 281.636 180.655]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.3) >>
+>> endobj
+485 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 148.621 194.538 156.197]
+/Subtype /Link
+/A << /S /GoTo /D (section.8) >>
+>> endobj
+486 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 132.951 159.545 142.648]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.8.1) >>
+>> endobj
+487 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 119.402 259.605 129.099]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.8.2) >>
+>> endobj
+488 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [88.363 105.853 340.817 115.55]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.8.3) >>
+>> endobj
+489 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 83.516 167.764 91.091]
+/Subtype /Link
+/A << /S /GoTo /D (equation.20) >>
+>> endobj
+438 0 obj <<
+/D [440 0 R /XYZ 72 786.278 null]
+>> endobj
+439 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+493 0 obj <<
+/Length 494 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZK“㶾ûü…¹…S5¢ €Ïäà²co¼±7å²åØ©$ i˜¥H$w<þõé(R£õTnÞÔT A°4úù¡!u“ÀŸº)ôMQæ±.Ê›úø‘ºá¿·7¡õô1eš™8KñíÂM Ü˜,.ó é?Û~ôñ+ݨ46i~³Ýív÷ÏHÝn”Òiôº»5*}»çnªÇ¦ïnÿ½ýëǯLq£T\eÛè4.2Å£ã0þ‡;ÂÐ">ç)Ü £ËÅh•¨8+µ¬=ª¶¹¿²ð­S#DŸ÷Ÿ0‰’$®’
+I6Êäq ;Úè$Ϊôr>•-ˆ’Jæk`/7‘ÅGÁoý¾¨èÑ7ãè:&hä9>8nü™'ß¼=›îÀ­í“=•ŽlÛö·ºŒçïv=Îy™·ççÁuÎÛÑ!ã 3æö£0€áûf<Úpê"Úûþˆ­<út×ßßn Ëñ—%Y²}ÿ¿o‘‰§Ó™¤ŒäË««h”)ššQæpvhÚ§ÛÒDñí¦ÐY´}pƒ ^°‘GÖK¯wãä;·Ã·ŒD†óX~ììhiW ï'­hCÃèÁ¼&œÂj|àÖ¸bù¹Ò«"ÎuÐã_¾þÇ7_^Q¶.ãÜäBóÄÛÒzQFÎ^F®nl{e…¼Œ3ó?­°93]FŽáÅ@ íÐsÏ4 ˆè['{}íÿ¨ƒÙõ¨˜GaõiÝÛÚ
+Y‡Ö&NÓ•4wn¨}sÖ×`‚õ-ðÁz[hlØ%Ú‹Q1IôzB´„2mÓ ÜCl`[±©e‰Ì
+È¥ûôÐÔ`S´¨ÛÏœ¡«9¿·µ‹Y‰*‹ ØÏr·iÞ‘DaÚ
+C½ØǽÅpô\Ídk\C*ÂȺkÀ¥Yâ+¯oÂlÃgó…ïÃ:€ò0<ùÞóç=Gu[×Ó9”½qœ¾â¾t¼J*™‡±A9\¤’½³q„ì\•D°bÙ[êýHÁ˜9™I2J£zò^8S@J¤æ$5í¯„+øƒÒ^ˆWP >úb;Ÿ#é›$Nê¿pâ
+•úàn²Ð9b§\°>rt
+«}bM*8žï†z<Á…,° ¹%Íò¨¶OvÆÐ;;@&!ž}‘s¶| ºn†‹S¾)ÃüÐ8Ï/Þù¢u CÏj”r¢XÊH2<ɹñg&¥¤W΂¨Â&Ëå&a\#Ï"es Ô8n
+2™«å/TĆ€ï"1[YzFŸCs߆õÄUSÉÉ赈+{€³²¦Šp&Uå²DB¢X¤øi{QùQTaÃÇþ|„€·³ (© ©jŽö€2ªè37Àqo@Ƶ^©I¦¯#×ä°Iš[.q% €‹‡Ô&‰cIÓZÍ€³aâFÕ~< Ú‘
+NWiAP(y±æ¥ÓeÍ §gý銞s!™W¥p00‡K»‡¯bÃÀq@$ÃÉÖÏTQÅyº¬àù0‹
+È"ÇÙ¢T­R룊ú#[Ö‚nLq²lB~â¼å¥D©s‡T¸Ï’´ÆS\$µøŠf¿
+sê’Ïqk'ïÇù|`CÆ~©È01a<X‡"A`îûi¢ú,—4±ãî T-9I׻ΚyÊù&èù>VF9—ž‡ÙùL. ÝšõÓ¸
+ÿœ«W¶U~ÝDWÆäFcä—p8â–T ð0tF6¹DÅpÙfŠY~’
+ˆï‰S
+´k»Ð×.¥¬Ey&”Z:üîÞæ:Ð…F%º¦Ñ ~ò!%¿íÇÙ-̲8B~Õ@?ê°Ý°r¡æçÛL¢M3¬ŠÓy¨´¼O\ZÇ`Øß”¸.n–_Æ×Å|³¨/ Ë[ß±´`‡àz© >”a¸ À#Á6÷œšŸ]»«w'0d¹ ÑÞ†’┌<Ù%.éåny×Oè4ág#¸…+÷±»(.6ÁaƒOÙⶲ¦ô"i,»Ýˆæ‘ò³ hí!”O@¦%ÊÈkÊÛR-màØŠÿ_:z½çYžˆÝéJø”«¬DŒ5«¨¿ºçänéض›j.ч+g¯ÂÄ&Ó/ÛF–…;¸¿Ç<_›üâb´¨£<‹_ tLQ÷mïÃòö¹è³2
+ð5ŽuüÊ#É`ùâ=à­Ê6ru®›h½a}7µ¾I¾7W—0ÅÉ®/›VQÓüJÔ,T\–/ÞÁA6NRóRdK/—ѺŠÓª|$ø/áùùûendstream
+endobj
+494 0 obj
+3220
+endobj
+492 0 obj <<
+/Type /Page
+/Contents 493 0 R
+/Resources 491 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+>> endobj
+490 0 obj <<
+/D [492 0 R /XYZ 72 786.278 null]
+>> endobj
+5 0 obj <<
+/D [492 0 R /XYZ 72 761.372 null]
+>> endobj
+9 0 obj <<
+/D [492 0 R /XYZ 72 739.61 null]
+>> endobj
+491 0 obj <<
+/Font << /F25 380 0 R /F37 380 0 R /F38 495 0 R /F27 394 0 R /F15 393 0 R /F39 496 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+501 0 obj <<
+/Length 502 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZÝã¶Oö_Ø·È@¬I}ö©IÚC.¹‡d hŠ‚kÑkveÉ äÛÛKÿøΗdy­½m€´ÍÁ¢†CŠäÌüæƒVW üÔU¡¯Š2uQ^möŸ¨+þÝ]­o€Æœifâ,Å·g×#çÚdq™gÏñ«<6¹áy¿¸þäÅKc®TWIuu½%žëúoÑV¿þú“¿\Oò8ͲçWƒlélr•-Lþª]­µÖ‘­k?øŽÞ’hè˜:ÛöÛ.ìíا¢NF ;ÇŸ•=¬Ê4ú ÞÓ4VºŒîWºˆ>0 1=ै\ÿ/Ü"l¿š­Ðàé$FÖÙ7¶|{ËŒg[1Uœ%Zøl[/Ì¥ÇíºwƒkëåyÒ4®t!Œ´"¨NâÂ諵BÁVü‰
+Ë0¬ª?ãÀçæ(¼£ãâ8(‘€*™E —s,Ø•‡o¸2
+} n“©{;2ÊŽø…ãy3c+¡GýŸ4®BÅ&ýl‹ 5å,SEŒ¢&àŸëÛO¥Ç>É^Dã\¨· •“  È Oø<LXÉ•
+²›)ÕN26›$;±Î•-aœY¦$Úo<EDÀõéãà+ÖžsøL\h¡ׇ»õAn³ÈÝÜR4c21J\#F3—ºq8Éþz±i¶}Ád¬üÇRÉ2õÝ1lœp‚É©ÿTg¥þ_=õøÿHý2Pe\êRX
+F‹½m»0%[cô7«’ðeýì£üXîlÆHqKhÊÂh¨PvþÈÓš*zNìæÏÁr‰ÿkÉÊèkZ‹ÒO süªAmkí> Ö2‰U©ÎÄŠ½•) Õ9‘òæaØQUÂÑÙ=wÝȘôó™rƒ.åï
+LD*“)ÜA,Uá—N@c1åôÙŸâÌ&
+endobj
+502 0 obj
+3100
+endobj
+500 0 obj <<
+/Type /Page
+/Contents 501 0 R
+/Resources 499 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+/Annots [ 503 0 R 504 0 R ]
+>> endobj
+503 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [347.484 707.644 366.878 717.341]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+504 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [411.12 707.644 422.029 717.341]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+498 0 obj <<
+/D [500 0 R /XYZ 72 786.278 null]
+>> endobj
+13 0 obj <<
+/D [500 0 R /XYZ 72 310.83 null]
+>> endobj
+499 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F39 496 0 R /F27 394 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+508 0 obj <<
+/Length 509 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕYKsܸ¾où Ê)T•‰!@ u’×OÙëlÊÖn9µ»Ì3ƒˆCNø°$W~|ºÑàˆ#Q–+·-l
+nr§QÜËÆmçÝPßvKfËaN¡©¾‡—gd¿~ø¼ÿ }f}>¯ì `ÖŒ#í>¦ÏÜËE{»>I„ÐÅù¶ýº–¬âÒ´»®7eÏʹ´ÀµhKªõçO q§WJ¥±P ŸB¼÷¼umÓwÃàB½7WÃÆ`J¿FÀ2HMO¤’ó%[vå7_›óU³ÛP2°¦ÝÌ:gZ¨É­ép(0]Á£nØnO“릥Á›ü2w^°,ï
+¹ŠÖC:QƒN¾#õ=4Ç4¾9˜4ÇBIƒ’o$¹oÇ~6‰}DÉR©¦±¹5õ•·ª¢ü ¿Æ÷HØÚŸ&϶;²¤LQø"WC<¥]Î3jˆ‘ÂÞ«¹uË¡oÚp4µ "ÓQÍ¿ Ü °#¦ fÎ
+¬¡XÒhNQ0u
+l…¼fô„HXVdA Ã"r¥Å"4Í©üƒßëÖ…ú.Õ¡nB2Xµ5èe2Uˆ<:2±(7Dè‰y}Z¹Kl%ìç>>®»pÙõÖQ3Îõhx®›¡öHƒ|Ñíñ—…b3=ƒÞ¯%”¹ÖﱡŸus&øj d–ÆTjá8‹®tIDm|å´ÐÂh=Ô+T«©\š&Q8­ßúfS§ÑgΉ„RšØjÔ ò/Ô@3ÐüÎPWôPŠi
+A`ìs|6Þ†,Qo:¢"y°ÅÅÌvè¦ð¡ÆþP!ïF&TgÓIê‰\šÞ,Mæð• ³T7«+±ê–h«
+ü›>p¢‚~¬œ‰â‚7è¾n‡.:
+ð€”¶›‰úãu³©n÷Û¹W(¨a‹Ió‘tÖ>hëñ Vgú$NK”D3Ñ;TÖGï¿Ñf§s=¼|¼‡œ#lîùœ/½×à|×Ë› oácÒ‡Ò’Ó²
+ñ¸_®}£t~»k† ë~æºÙKF%¹Ñ‚°
+vœ-ÝPw®· ŠI|‚Yì‡åâ'W7 ¸r·
+¢ÒžF$€Û}ªcT4’›=õšåXe Àt Ž/µ~êULÉ™>õ.¦îŸ# ÝÊ"<dÿL¶Cendstream
+endobj
+509 0 obj
+2582
+endobj
+507 0 obj <<
+/Type /Page
+/Contents 508 0 R
+/Resources 506 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 383 0 R
+/Annots [ 511 0 R ]
+>> endobj
+511 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [131.878 261.92 137.332 272.829]
+/Subtype /Link
+/A << /S /GoTo /D (section.3) >>
+>> endobj
+505 0 obj <<
+/D [507 0 R /XYZ 72 786.278 null]
+>> endobj
+17 0 obj <<
+/D [507 0 R /XYZ 72 515.97 null]
+>> endobj
+21 0 obj <<
+/D [507 0 R /XYZ 72 357.77 null]
+>> endobj
+506 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F20 510 0 R /F37 380 0 R /F38 495 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+520 0 obj <<
+/Length 521 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZ[ë¶~Oú}‰ sÅ›Dõ­)rkÒ6H¶@Š¦(´¶v-¬,’|výï;Ã!)ɦwOŠ4Ákš ‡œÛ7Có›þøM.nr“1‘››Íþ~CO7~ô Ì¥Ò’i…ßÞ \{ʵÔÌdé?»ûäö ¡o¸bRe7w–önû¯D¬Öœ •|YcÝ>®Ö2WÉcÙÕvõÜ~!óÎY¡5½¶ŠåšÓËŒ»×?;ÖÍÞ‡ Dòu;ŒeÓ8†")Û-tò}µïVR$ïÃZã®rë˜Ù:"KY.µräM}‘F‘.Ñú;d\nV’'O«L&å£ãÌaã)+ÒßY‹‚3U(¤LÃ'¾û§„QEÒ=à§IÞ¯„Iª~¨»–&R&Ö÷«µÈ“j,q“ZN’‹|ÆŸƒP*ÍœPåqì6]ûDvxî…?€àÀýi¥3+¸§hõãPmifìhxþ”rõxì-iîNžÜ£&h´spz}ÙŸVF',"²P†eF8Qê}ù=8š/R}³æ`_šhRkÛ‘2›®}¬zÇÃÁžX‡¶ÄVkåÉ+#“c’õû®¯ð$ ¢½‹x®Ç–j€‰”«ƒj ¥¿üÛ?"[’º`Zx-ÀþÇ®kbJPŒçžÌïÆ7¬÷Ðõøì=•,Oí]–|_¶å#I-¥?ãõ€›Î’jS£‚6ø7xü=ùž±Bf >_UV‰@f
+®Ž7Öνgqj ›H¤t!8„‡ºœ{—G¯)4 »Ð…°"ü@ÁâÈà ƒLÄž9ÜGí5˜ëPÞ7ÕÚI{y
+(Úû:ŵó˜ù\óK†´Ó8Ã~KØ™p@ø! Aí!>nT4ÑFÆ…àq÷ÄÄ)3ï}¯™!ä ÎŒZFQg}™°‰§¯<éL9 À´³(Ê%
+2BDkµ3±îé•°•óà‹DJù!Ö‰ÑH JŒT§ÖwåHëY<3[Ê­¥%`œs‹Û”­ËÌd5Sš£ÛÛYîp€ØÔ÷¤Ù“§<ñúsaæëvÓõ˜Àà”RÉwMUzÝõÕñ ÂO©NÏ Øœ ë°lÆ1SPŽO!¡øÑ7¯æ&qΣÅõìtHHh
+uÇY첈 qˆ@uÙÐ íÜ,ñ4ÆBB™E40\ðýóŽÐ¤ÁýZà9}ª¤z94õ¦­TF€™D°­†šÜÕø(ƒlg1ü"T9Ž@o
+ÓËCµúá)Ô—
+úºõ!ÓCôó?=å±FòÃCß=öe̪¸âP²z«zylN‡]̬òЪ¦(›Áù7ém^@À…á$ªÝÓ¶ª¶N\Øð%‚U©bJ
+i`®ËµÚ;ó¶]‰"S=)s¤S®T^¹àÃS} ´ëÑ /߃_SàµòOâ1}$ßQ¿¨ïÜ\ç ëB1#ôÅÉ/z Æ9àÿ4ôèàÜäO_Ü©â¬mo™ÐÞ™"Oþ‰•uwüÔ“Cܼ‡’ã„ß„ _ô¶çà‘¢|H[é!?ô4ú5<•ìÌcêYOÒ!;W™L²ij½á$"AütTë½v[ö[z¹é¬(kXQª4O¾ê0ƒ=[Ç}¿²@€ PjZ ³–­å¾tØŸ„Œ‡_g„¥ÅÅHkóº«3çÉØmŽÌWØÞUO#+GI6<  E~bŸGÊÍè‰Á ©Âc”·µIDØ]ì‰Èâä‰Ø±¨÷•õ=‘üйM¹©Â
+îmÂ(—›˜Â"øá\üe "Éš}™óÐ5 !ÂàÌá”mźk3X
+bS¦ÜûX׃¥¡•c áè=¤ŒIèôß>ÄRXÊd€ûÍ•tέäT‹(™-€åà»’Ç¡$v S`n,ÄèT®ù“4å8ÚH§s‹?ÁÇT‘:\ˆ#à¸*Q §=~£ØÒ5دÂi‚Oƒcî_¥EòIJ½¸7xS¬Œ‡ÖákZ…boò ÷ñsM9Ÿ,)²V0,+–5¸_ô­¦•É((ÈA¾½ˆ÷† ÛƒœóŒI-^‘¼
+õs¯ïÞ[ðÐ×Ø0*žÝFôoU}Ï»:œ¤”¡¼Ÿuü\—:²^ØÀíqèo›nS6·ñ†I7|—(Ü-‡’Uò_W²Š\ëˆÕʽi op¦$èhšoíâü®k¶–DxìxQ°k¨-åyöz‰æÃP¾â¯¶Øñ^\r‹‡Í…r~•É‡ØéžPÿε½À–€|fáBæØÓ¡z }]HÐp`»5HREÕ?XT‰SÇv08÷%=> ½ -7ٵ͉˜ÎŒýúp¶Ö¼9ÁªOSÒÆ»a¨ï›jqO4ëÕøk Ì917ƒóÉ
+Á±Š!¸<µ]z׃=*^>ìßJ3¡CîošË½•‡CS‡Î™¿xŠ€g|~1k=)ïú  L^Í øÛì®gØoQo«Àß0©7Ûëùù2BLÙ]Yà¿×hÈ<endstream
+endobj
+521 0 obj
+3242
+endobj
+519 0 obj <<
+/Type /Page
+/Contents 520 0 R
+/Resources 518 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+/Annots [ 522 0 R ]
+>> endobj
+522 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [462.484 526.401 476.423 537.31]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.2) >>
+>> endobj
+517 0 obj <<
+/D [519 0 R /XYZ 72 786.278 null]
+>> endobj
+25 0 obj <<
+/D [519 0 R /XYZ 72 761.372 null]
+>> endobj
+29 0 obj <<
+/D [519 0 R /XYZ 72 736.82 null]
+>> endobj
+513 0 obj <<
+/D [519 0 R /XYZ 72 659.937 null]
+>> endobj
+514 0 obj <<
+/D [519 0 R /XYZ 72 635.3 null]
+>> endobj
+515 0 obj <<
+/D [519 0 R /XYZ 72 463.541 null]
+>> endobj
+516 0 obj <<
+/D [519 0 R /XYZ 72 427.552 null]
+>> endobj
+518 0 obj <<
+/Font << /F25 380 0 R /F37 380 0 R /F38 495 0 R /F15 393 0 R /F27 394 0 R /F28 523 0 R /F30 512 0 R /F33 497 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+528 0 obj <<
+/Length 529 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZK䶾;‡ü…I.Ñ
+\Ôñ\ö®kxÑQÝRçxpÔXmPF'xdQd*ø+ îèùp ƒOó Ï7 b%²4gŠóØ•]»ßàÔ€BÈ°V -q*´T7;‰ú•ó)Ù$*úºxh¶Ö31œHØqUŒìgk5˜PJ&û)¶qåöŹ·gLò £»óÐß5]Y4wáèÝÆÔ¹‰¶óÔòv§¥‰Š¶Â†Š
+z ú¾Ç¦{(lëÎç§XšÇs_Œu×b§Œ°gs¿;%aA‡–gäõMàA×[JV%õB+tŽŠ0ŒEÓ „uî¥Ù;q»K”‰¾ëFGDã¡Ãxøð9¿¹œfm;¦ïöÔQ´¬2ørh }3’Ä™5¿ëù;0•AåëèIv GƒϧÐOxxmÆ΢:Öm=ŒÀ[×óÏ3j»²Þ?ñ
+á«S1†5õ46< £;þ‡µŒîý¢§%KÒï$^ dß‘ý੘œuÁdÑ«×ßRƒä†ùù'wM³ìͦÜp:I.lž-ΆôµF"×–?†ªnW¬€`L£ìëÒ1ÍÐ ëá“ÆAVa/E4úX'«#x®&ʵ†vJ*OR•¬4_÷ü‰®hÀUOÔé>€=ÏFG÷‡0Wx¢‘ìÔ»_ý¡ú3ä‰ö}w¤Våç™{.A¯¿Úë¯úçi´!U—¡hÎh—g"Sù§ìL‚]¶ˆÏ•-MEšZu冦)%”² ?ƒsOÑÇ$}°“¬+YE“Èè=z!"H‚¯ô“]*•Iâ…¯ Ʊˆãµ&ön¨+´5¥•÷ýƒÃ؇Â%ßÒÝÂ?ÒôߨU2­rôÉ> ¢kžzÓ™Y~Zg|1G¤ÈÉLtïyLDœ žÍü}5ußÌ?Þî¤#Å ^š½Œ†>âNê‰ÿ¼±º6ƒ÷‰fW‘á—ç#«qTÿ¹¤ãT.½ÊÏ oQýZoÅ–Îd
+÷|ȳ#÷Ð[P‡ŒZç*BQ€ ã\äh3sxì‹Ó¡.2¼ÙS‹·o°½¥«Ðz
+^Ævnˆ v&ÁÈP"ùoŠ-%±åb#©eR“7sïKbS$¶ä#ÄF4»¡;÷%íßFˆ@üæÈiêEÿÓ¦'2fÒŸ€'úýmb ΡAžé…woµ*õÑ0÷.z¼›‡gïŽ ÞŠ”Z‹\D¤LdÂD%ˆ%@ÄçžÞ`;  zK'€• ­àKQ"W‡š÷QØÁµX6‰7€žL
+ˆå"È¿`2&H@Ȥ½‡21|ۨѰ‚4ç‘d"·Š÷ø-È_7[iˆ…’!øîÏ=úDœ£û k2@‘›˜Ù÷,ý£ƒÞ-“ÉE*CfU6®h·$
+¨S*xXÊWÏ›Iõ….P–‘Apµ•W›µ‘M:9{Ì«jG
+º2@¥{L%±×}(Ž§Æq7&(Ø;tG×µ~¸œföuÀY¼¯á젉Ы¤^/U߉兊fo×}íXϳT$ù:°+R&æJŽÎ£üµÑ
+qÇúñÀŠk¤ ,RÝÔyð¬4sÕ ÚÄÝ£k;ô‡D{<AxîéÍWP’,g
+<åžHñùV(Éî¾xýæÕ×o· àòÖæ¥YÞ|¹Å‡…û%”¬¦ý›/¯±bây"±é
+¥;|#<ÐÈâš¾ ½T!è[ó²~,Ƴ¯ü"zl#‹]€EžïU±l*zPb¢é
+ĉùF]žÁoPÊ¿çÝl\b¥A®"þˆ_müˆõ´/^ë݆5å\ùæI~ndrÒ «/tòcÅá·¢/J§°«;
+endobj
+529 0 obj
+3398
+endobj
+527 0 obj <<
+/Type /Page
+/Contents 528 0 R
+/Resources 526 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+>> endobj
+525 0 obj <<
+/D [527 0 R /XYZ 72 786.278 null]
+>> endobj
+33 0 obj <<
+/D [527 0 R /XYZ 72 458.656 null]
+>> endobj
+37 0 obj <<
+/D [527 0 R /XYZ 72 313.702 null]
+>> endobj
+41 0 obj <<
+/D [527 0 R /XYZ 72 292.809 null]
+>> endobj
+526 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F27 394 0 R /F39 496 0 R /F28 523 0 R /F30 512 0 R /F37 380 0 R /F38 495 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+540 0 obj <<
+/Length 541 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZ[ܶ~ÏKÿ¼Eveñ&Qúà$Þ`Ç)РТ-íŒvGˆæRIcgûë{nÔe¤õبS´@°ÀŠ"ÈCžÃï|<µJàO­2½Ê|ëֻ̯/ÔŠÿ~^…ÒwPÇ’Ö™ØY|» x$¯‹}êPþ«»/^Þ(·RIœ'ùêîdï6‹n÷/®¶Ñ¡Ù” MÔ¸ª+ëúÅ?îþøòFg£/3ûÜÉ窫{štot¬2%Bï·eSJŸÛ²¥¢‹þž([—-×A †ÁµÖEWn¸¦Ú÷ŸrA>|j»rw…UiTpËú°ÇÆÇSStÕ¾Ó"ΧöTÔõ*¼ºVI'i
+\¯œTݨPšñ"¤itêdQÉ•mÙaÁG§#>´‚®O,ÉúÔ©-›øŵ³6z…í´W;8<pMµ¯ºª¨«mS\—´e‰~ñú®7ªö.ÎÛë
+6ÅjlüyJß}ÀÎ.6ç}BW¹É/;ˆå"ö|ÿ¬‹Ç™òVÅÆpŸ¦´Ng:³Ì³:?ß,¬:3¸nS4O¼ð]S‘3¢ÀÄ8Ø@^MdäŸ œäø6EWp©B‹'>Ú—å»TITív如ê'–94ü<’Ú¶ºM5ˆ¡Y“Fw[æáPÃÐ0òûjÿÈÝkt +~ÆV‘>ÖÅZŠ´}h@Øà¿?_ÏaŽ7ƒ»ä °&ØòùµVñù8>¶Þ]v5[g/õNk¢³t°ŸÎl°ŸÎxïb{S,969V½{á
+àÓó%5™üøP¼Ð>Nûµœyè
+!R^'Õ¿ª“ÞÂâYؤ´¶X¸àyUÿ‘~g ¶f"[þRµ]{…Ž” ƒ³`Y¦"÷#G ½ü¼GG|
+º¢çÌ”…š `qŽ¿×±€*¸ë6,PSk—MœxøÆ‚_‰WîË l€,SDB¬Õ€ª-ÉØhêYE›&›n=Ój†•ÈY ¨í1ÂÚ$Lª‹ÈÃQú¢µ€')æqL–¡ù$“‰ ë@Ûº†ÉÏmé’8±½3“Ë7ëC‚œ6Vä§mbƒ ш/[.o;©ÝT lçÌÈ[Ø(שËÅ×\o?;Q³>ÞãJ–lEm8Ž•Ô˜Âzw\O«HîdHaJ ©Ÿ,Äc}¸/°/ãæÈ`M¯Âƪ<VþCÕ㲫[߯PË11øœIÙrfÄÒð¥7#ú×9Êó8ÑHr§6{Ž’ñÉËû­‹Åy6‰u3¶QÁ
+~Ì1=ÍLM…69Ö´§õx o¯„ý`uY€Ã[ "-ĬZëòA>/ä¹)ŠS݉ ²ÞÅØX›ùqX8ßBq¦³)ÃÃAö¢uïÁ k¬7Y’‡C
+ˆrvùÜkUîň; Êö²ã3¥…bÚfÅ© y#Ï‚"öØŸV¢âûªƒIt,NKƒbm+g’Š71C¶³±ÎÏ0à!µÞñáíö›vÊ §ÍrÚžs2còXÃ
+çRõy8™ùU9Ù«¶=íd1=¹&<ækÚï4à”€í‰{Ž‡e:Ì  Ca´ùdNžû)°rþ·Â ©•»¦óÝ»pŒ³`‚mSŠ;Áù‹ëVBçÀ«óƒÁ˜›‡#Á±hZ> ÑÎ PÓ”uÉÄjøí˜ý®'ýš”†ÂÎÖxæÜüwؼýU=çÇ–Ý&7b´\G!ÎA±Ʊ®p!h}sÃË­òÅÒ *'¨+áÐAt´ám›r9ÞåfÌs¸‚
+}.¹Éºl[æÜJ`Ója|å~-¯èœHþJvD¢ÎðzGþ{ ‘«?z®IŒK»êqè:¼RNƒ‹÷ã>0EBdN³ãBûöÔˆž¦?O§2R36œQ 'Ù)iÓ”bŒOLôêæ{–ì=6•
+™ú`M¨Ûœš¾—iâ†ÀÇI4AÏsݧû 𠀑
+¼Ãä” ÁºQ×HºQæý6
+5D.Îûr¨MÏÎΧ”b]HªÅ1ÏJßCücæÏñÍ—j;a¢oE÷[òChGú,Ú8æ×G¡®E³àî2? /E<7•ØHÂiÉBPJBêGØJØì9oT.µ!q=š=ÝŒá³^°É¾Ç(É{
+:éÙXJób®§£³qèöŒ§e}
+”$J
+è\šM“vtŪD±D‘8Q35IòˆšD3ˆ¢Ì«ÍaÈÇ@à ҭ@Ïß—]S­¹<à+æ¸ß¸Vð•ÔW„žz|Åúßðõ“ðUgºÇW,Ëð:S‚¯š²×Œ¯0ï¶#Qn¿€P(ÜÛåû¹`Ë¡°6ÌË=B‘Vì¤7¹ÀÈÈ|¹„L!+’ƒVúÿ
+˜ðÖ€·9æp`·˜ðŒü0!¦çáPr÷×?½VKÞm|l¼AŽËЄ%‚&ç’ÎÇЄ¯œ%y·‘ÎyßÛš…ràÞx¤9ãwÆ'£L.¼üh‚—åshº…Øò
+CÈ 9—~ ÅQzÈ'#Pr^@ j(Ñ` JÐù
+é†7C-Ÿ…Ú~DùíL"¿†ÓK¿þ7tô34© ä'GWLè"'/w¦˜õâ±(oh u•;Ê;óBša!R} ~uuÿ’R?ðWµëx;_zg5º’tôk´'¾‰BGå]dG]|iÊ3uúßHÚ°R–mÃ=2Ÿõaw¬øÎE…ßJB©zà/÷%f¯ñ—ÞõÙ°‘Y̽…ø‰¿.è“ü Ø^ʿŃ1 Ta’æŠ*ønée2íQК ¾FqÖ&®ø„¬aJªç ðyX>ÅÀC§£{? cË;I÷†t¢ÕãtâÒÉÜûå1±<¯ð×4rÅ"窱ŠOÁPè_ät%AVJUd>âÏ}ôãÛÛ¿pGüû]„KŸºÁ4\ÙtE%`$©ÿAV*$»±îÏÜ ¾äƒR¤ÇsÛh¤®ØÔ$‘øõĕŤm¹«hN“nz7Ór€¿ÆB`¹Hî´¶qr9žÏ~Ý¢óØæþy~÷o’ƒ/endstream
+endobj
+541 0 obj
+3459
+endobj
+539 0 obj <<
+/Type /Page
+/Contents 540 0 R
+/Resources 538 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+/Annots [ 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R ]
+>> endobj
+542 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [357.704 734.136 371.643 745.045]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+543 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [416.972 734.136 427.881 745.045]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+544 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [398.297 621.663 403.03 633.182]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.1) >>
+>> endobj
+545 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [463.089 454.992 467.821 466.209]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.2) >>
+>> endobj
+546 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [239.339 314.716 244.071 326.539]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.3) >>
+>> endobj
+537 0 obj <<
+/D [539 0 R /XYZ 72 786.278 null]
+>> endobj
+530 0 obj <<
+/D [539 0 R /XYZ 72 716.71 null]
+>> endobj
+531 0 obj <<
+/D [539 0 R /XYZ 72 680.645 null]
+>> endobj
+533 0 obj <<
+/D [539 0 R /XYZ 72 551.858 null]
+>> endobj
+534 0 obj <<
+/D [539 0 R /XYZ 72 513.672 null]
+>> endobj
+45 0 obj <<
+/D [539 0 R /XYZ 72 426.178 null]
+>> endobj
+532 0 obj <<
+/D [539 0 R /XYZ 88.587 132.837 null]
+>> endobj
+535 0 obj <<
+/D [539 0 R /XYZ 88.587 110.919 null]
+>> endobj
+536 0 obj <<
+/D [539 0 R /XYZ 88.587 99.96 null]
+>> endobj
+538 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F28 523 0 R /F26 391 0 R /F33 497 0 R /F29 547 0 R /F40 548 0 R /F43 549 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+553 0 obj <<
+/Length 554 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕY_o9ïË}… ÷â
+»®Ä©)Ãa€@¸ž(i¨þd€Q`Ô
+K[u\º³ØÔÔi
+ sÆ;´Ôž
+îŽBoç œ…ò=4
+§…aJV’¼“M‚;Ž³ÎZ¢8ï>–x‘à´ÃÎâùpëÅÎÓ“·ÇÞÊ,KMÛ¶4‚Ž
+óPqZSnDX˜ C×)*N3qAµLDvž£É.ë†Ì¸Æ̜Πó~Ö¤àsXÀ}åÒ…ö"Ìö˜j‰—°ÑMÃg–åVø%»ÔÏqJ©_.Éö¡¥[fž9›LbDCOÁωs2Ë0'SÅlY®¶-èÔpÕƒíoûÚ%Ù†No¡×ÚÆ%©Ø÷.áæ–îÛnnUïyç€v䃅X5öjNrÏVÒË%ƾ</(atáO;ѪSK˜F"M‡I¶^[zo(ŸºÃB+±“ðìƒPm[Ý|¡ š°Ã¹Â¨¶4‚±™÷tï”ð¸·H°Ù¢<9}YÖ퓧Ÿƒ£ç\[P cî…þ5ëÔ&i§vô»[íƒh‚Yu[S³‘e½eŸÎ mÂésBÅh| IGÝ¾ß ‚ ŸÁ¦€]ë™3íRãbÌÚÏÅjÁÁ™
+í=›yÄNb%T÷ Cš1S‘’so+˜È{ÜÐsr7Ò’6ÿFqÜFÚ£ˆ£:I"[âPÓ$8‰Æ`žëÆJ®~)höÞ0½wá·sŒB‘Ê-膬ùXú¹zÌeK%E.³?"˜½ì9çOp籊é>Þ˜ÖÒŸ±Ûãš—ÏynŠwïM3xî†ô 8Æ}štö ƒ~ %Í!W>©Þ—+NÉOãdC×8ö ¦éWluIËc.– úvu&ffÄݧHYƒW\ÝsCý{~ ^Ãò¹šø¡„‡³š–SÒ,šð–rVce*Ð]žû¢“•²©uq?æBc!3ïc]Ñk¨FCÎhàG‰g|!_Èë=ëúýçO7ÓUh¨›Ã£F›†‚èÿËdÿJfGåìùVSCÊéMZhS®‡Q;VÂûÂ]û’Ar²1-/°5uøãjLwT[@öïGÌ´‹n~ ~Ær¸òÁ›.ȳó}oàÕíl{Ø5õý ñõ›oð±yîToîÞ~~÷áîqY/u9ÑÊa9Çx5òž¿¾ýôÔ*½Þ^‰ÇS·ÇÖ{ë´E«ŸL}¯)\“‘-a«»t Ó_o½d¢_‹¦®¶¦ÿ‡¤9[)ôÂÃuXú À g>µ˜ËÞüûíç»Û?Œý,¢ø ´œDýÃŽÙ¸÷^XˆW#LÀF‰ñI(
+êÁI¸s‰Hr/·]¶›‘}”‚žÏ]Y†ÑÍ 'I0À|ÛÕ˜Nœ
+ðú»xŸf=îØZèÇY÷nÑ’³É Õ{
++xk]uòRå
+8ù‘¬(WÞ|Ûip¹uåŠá䮶ŲsÚŽR‘9LºàÉnÿD3¡ru6"ª|‰÷˜Vx^ñœQvNB!z9©ÀëäÏUÕdx`ÏÕÕdpz„BžÕu»ßIÿ endstream
+endobj
+554 0 obj
+2590
+endobj
+552 0 obj <<
+/Type /Page
+/Contents 553 0 R
+/Resources 551 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+>> endobj
+550 0 obj <<
+/D [552 0 R /XYZ 72 786.278 null]
+>> endobj
+551 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F27 394 0 R /F39 496 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+558 0 obj <<
+/Length 559 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕYIsܸ¾;‡ü•sa»L97§<ªÑÌ$‡XI¹*Îj¢ÕŒ¹t¸HV~}Þpi±eÏR5Õ%ëððÞ÷ˆ«~âJË+&ÔéÕ¾~%®ø÷ùÊ•~†6«(P1Ö¾2Ðw#ýHi¢püŸo_}w-“+Y˜]ÝhìmñOOQí|!”ðnfçGiä]ï²Äk›]$½[ÞçC~—÷Ô{×eevÿºýé»k¡V4}*SDùöXö0\¥3 h¸P·-}
+E\;¬>í|©½¶òf'SZÚsû퇼ÆW†²6ÁÎW2ôn¸eŸW-í„O"Šp ™1©Ì+æc`?-þš+w°vê™}>RwNdêü3îÆôxd<¤@þftHGNG‘W˜}•w¦ÀšôʿˆØ⎋åÏM‹d®­ýmUÞuy÷´K•Õ±ðþl£9´Ÿî- TÉ<#ï{ ÛÙ—ùPÂÎ芢lqEQ¢¥{ù…ÙÁµã–wJzTÁ­Çžk°Ó£ÅôDHÏþªp'±±r„qÁ°ë†n†›÷é Ž<IM˜z‹M¨½±/›{.–Í¡íj>%4(ïе5gnã æv€ÌQV¸¡Ÿ'òˆþdo½Ä±û‰lñÀ_G-E—·m©`Ί€©žH>|{ˆ•”t†¶ÇÞ†D?Š½Üèþ"ó%ßÜÖ•é¿G‚¯~¸Td/­¾
+" ¢$b¬ Ý_Ý¢Óý?žÓWA¬ÔׇŠâg ÀÄ)ñÚd&=ŸÈÛ·¬ÔyÙôÜ‘ó‡ï íKâ$Ü/Y³Ì½é¸a¾¬Ã N&æaˆ5þ¿#qÓð&qÀBU±yVUìDUer(XZOÈXö\ûI ð*{¾@¤‚_ÜI·Ô Î(€cYö ‚õAQvj
+X\"ú\'bu’:l 4Làþ¾­ÉF™/ƒiúÉÀ­d ì›NõDÐO”›>ËØÁÎ;ô<Ðl‚Û0)éj½, ²4½¸ùÕZ«Íû'ðN˜3díÃxæ;VȾC§õ3¬­
+Z‡±k˜³åpÜ1'K;òíVFnw¸às2R™Ö3•»-*JéZøn¾
+
+X¢
+¹å¦Àì‰ñÅÌ2¾<sæЦ<g6íþè| ™,aø,’’©ÊæñTrN`ŠM(ÈdÊ™*—lMVÉÖd‘D?÷·ÝÛˆ•.¸ÍLŽ“L»¤¾àjÆ!`ðŸO'#¶ý€µ¯ióLqÝkÛ8e–6ýÄï~lVÈ,Ð3 nÌÉ3OÚ(&IP,öîÁm •ì… ô¸úxüŽ.ºÒÏ/„|ñV<_Ž'/S¢ÇRíݸË3öå0N×îž>R¨ÉZ³D,*˼Æç’Ò÷ÐÊCÉx[>åü™„ƒ*MV—±´@záêj&°'» ;ËÚ«ZZJ³{”6åÌmÇö/ÂÐ9ï9\Ô“V õ©0ã>êq#ežrJ¨X2lÛí¢æ7);öÈIñ3 ìíXÙ@w¿(õ–;[Ìñ9¦ìpc¤5”?,­“Ïxrñ®œÞŸ
+s0£g¿ã’PÆq CN€„YúëeRÑ3šøÜÙoËgJ¤!R±€`)ÊÄ×2'RŠ ¢”⋹!Î’à¿HùBnæ ­qœendstream
+endobj
+559 0 obj
+2887
+endobj
+557 0 obj <<
+/Type /Page
+/Contents 558 0 R
+/Resources 556 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+/Annots [ 560 0 R 561 0 R ]
+>> endobj
+560 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [246.132 134.539 251.586 144.236]
+/Subtype /Link
+/A << /S /GoTo /D (section.4) >>
+>> endobj
+561 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [395.787 107.44 409.726 117.137]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+555 0 obj <<
+/D [557 0 R /XYZ 72 786.278 null]
+>> endobj
+49 0 obj <<
+/D [557 0 R /XYZ 72 761.372 null]
+>> endobj
+53 0 obj <<
+/D [557 0 R /XYZ 72 195.909 null]
+>> endobj
+556 0 obj <<
+/Font << /F26 391 0 R /F15 393 0 R /F39 496 0 R /F33 497 0 R /F27 394 0 R /F43 549 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+565 0 obj <<
+/Length 566 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚXmoÛ6þÞý #û¢´#R¢%!Í€¶K2¯^R,î€aÙ¦m®’hè%i6ô¿ïŽ/¶”*iQør:Þ=÷Ü#&tÀÅl'cÂâd´(žÑ‘ùù8r£·°f,#áì+†¾³ôCN’1Gû׳gÇça<¢”¤œf+m;[þå1ú”²È{uè‡qäýq˜Fž¨îqƽkYlsavÞUj]eE!Ë5.„ÞÙ§Lïþ=ûõøœò H¤Æ»ÏÂS®Ï˜mÀgÌ[©<W‡,õî´\Z¨CŸ%ÞÒZÈŸÔËÌôööt08«m08ÞvƒÁ7„ F歹YÜ(tpgeÛÚ†ÌâNÈ-‰ã±…¥¡¹œ$Æ2ä‚ õ&9@@¸±'J|ÊD$¢läS,Gªß¨ÚŒ8DXšgfŸ¯®ßL4¿¤•åà> ˜öŽR¿bæá­\Š¥Ý±>šÍPb,JIG6f S=[t¡±µóëvn*#+±hÖ@ǽڟ¥KY7•œ·T6q–’)í%žÕ‘Á~ÂÒâ64JÁ³ð|¯d¢eƒ™Xó¶n k1 (Š™,T±•9ↆH|*°áÜûò4f+U™cœõ*«—rY~ÔÄ´;w²Ù˜[‘Ÿ0¡Ѻ
+Õ…èzº˜þùî{Ò:¿ßnNÚ'O‚q ] k¥ÚÊ Dy++U½ßX•Å›Œ6ø7‚Ý.4ÌJ®Í¥ÉB²’>
+1쳡ã/CîC?AÁÈrù¯p_¨ÝÇHk*´Êâ.WÿªR¶Vj±h«š˜É¥M6Wë}!î¤cìÜÜ\hlz´“ÃZ”¢2úÑÉÓïZBº0Kü…ä1‰©œãìòêfzuq>™ža槧—ï§SáoŸÊ³WÛ
+ˆºÂ÷¡;!5[žƒ:V‡uº«/ZexÝû@èìs¤{)× â>ÝÛøÑ|~¢\çtq+¯AÃ]“•ieÝæã0¶õµ‹Ø»ÎSõÀÞº‹Ôì`&êæÀz³10n+½µŒx_[_oEU‚3»<Ó]d[lûͦL÷¶pg„FÏvWÿž<íªá"î¤ãjªÚæq^9¨jß9ò48±£—À° Ñܔꡮ-ñ¨ÛñâIré€NM‹^k8;§8¢i í$xð„Wßžý~9¹¼8r·çè}2¬
+?´xþþȵ~'ßäÊÕÓý©Ñ‹U%¿\Ó# ‡Ô‹»0µSÛÀ Ö¾,:9tÌ??¼€7ÎÆúoϯükƒ1JB:î\
+endobj
+566 0 obj
+1670
+endobj
+564 0 obj <<
+/Type /Page
+/Contents 565 0 R
+/Resources 563 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 524 0 R
+>> endobj
+562 0 obj <<
+/D [564 0 R /XYZ 72 786.278 null]
+>> endobj
+57 0 obj <<
+/D [564 0 R /XYZ 72 761.372 null]
+>> endobj
+563 0 obj <<
+/Font << /F37 380 0 R /F15 393 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+570 0 obj <<
+/Length 571 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ…TKÜ ¾Ï¯È‘H  !Io]µ#õuêH=´=Ð<&h3aD`Gý÷µvšÕ*ŒýÙþü ,+ácY󦕔7mÖŸv,‹ß]öOú ºˆ¬jAë
+o¯
+Ùu”WüµwË9£0ÆøÀ_~°L<Oħœ×/ÿþYkendstream
+endobj
+571 0 obj
+536
+endobj
+569 0 obj <<
+/Type /Page
+/Contents 570 0 R
+/Resources 568 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+>> endobj
+567 0 obj <<
+/D [569 0 R /XYZ 72 786.278 null]
+>> endobj
+568 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+576 0 obj <<
+/Length 577 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍW[KÃ0~߯ȣw\²¤k…¾ˆÔׂDdÚ ‡Î‰Æüõv½ž¦ ½lS[h›Óäû’“/ç$œ £›³±`c×1vÙó¢ÇYr¿²ìë6²%5¥’ÛRMÅT.xžÃ#®£ìõí
+¤R ÕYÐ;¹cƇà =Ìâ*Axt>YMfËÏÅduÚ(¡Žþø4_ùÃ㢸YM}^”×ËÏðkþÙœÂø1 £rÿ!¸‰€|;L/&¸zÛ|¼\¿Ï–)þ‹ÏÝ´ÙÚ—2ýŒš‡ÓðΗ®°tAÒ´Ëb%p*FÛ"DWöÄ®hiç0ùƒÙ» Úá  ¿‡ÿ
+endobj
+577 0 obj
+552
+endobj
+575 0 obj <<
+/Type /Page
+/Contents 576 0 R
+/Resources 574 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+>> endobj
+573 0 obj <<
+/D [575 0 R /XYZ 72 786.278 null]
+>> endobj
+574 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+581 0 obj <<
+/Length 582 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍZéë¶ïçhÿԢό(’:ZäC®×lÓ#À[ Ú¢ÐÚ´Wˆ,¹’¼G?¾sQ’×Ú}¯ ‚ ¬xŒÈápŽßŒ¬W1üéU–¬²<UI–¯6‡ôŠÿ¾]…Ö×0Æ”Öå,öÞC¸”kãTž:¤ÿìæ£ß&n¥­26]ÝìˆöfûÏÈ\­µNltsç¯Ö&K£oºvß•‡«ßüéã·ÖÎ^2¥ÓL^|Ü×OÇ;&K²•ŽUH¶tkx—\Pk7£6™Êó°fÕ‰‰J~ íÕ:É£¶æîÃ]µ¹‚þwå·ØóôŽm?p«Ýá3‰:PîNÍf¨Ú¦¬«áÊÄÑÝ%÷‰)”I…ŸA×ÕíÓ Phº­ýÄ1=yë$:õ¾c®ªá®= k°,\Q\(ƒ¬4ÞYA+6ÞoGéyWâIï«f¾ÍCW ²sÙÈ+Hù £Ü¥Plyó'fÒ‡ïzj¶¾ëYOŸKOóqË6ȳDÙ•Ê>O£[¸Ù,ò»¶óêjÆ)( Ý~ž®¿/{~q\¡)žIªf[mÊÁ÷ß#ÛB÷­i­,ºx$¬8Ü]%Ü÷Ú¦\œªzËÍêŒu¹ XfSY(Å}áÜuM’‚á¶á'sˆ²ÛûÛýS?x”}Zˆìq!”mš†•ó¨?$‹¶“÷îèÜÐhZñǺÚT± }žox‰mÕ— [8¼³.ú´®ŽÒøïûQþïÛS·!ãÉ]Tvž=qªÁË|VË­ß•§zàÁû+—Fe}
+KõB4Ü•DaÃýÙ™:BgC „rît§†—e͟딜†—4†^ÎYéydÒn“ UÀÌÏÈå•è
+-ªSU€±ÏW¾†ýmŒìõ[)ï…ClË6T[l¾"œ+ëΗÛ'yÚƒgÒ’›S?´i·Í¿bm÷§ŽXÁÁ$‘Z6"má†<{”*¨ð¦‚…er×ò±#Y8ʶÊ[:†qZ6xƒ9ŽNWââ¨Á‘=ÀÄt+.‰@ní‹3»®=pk\¥?ñ=l«Îo†”ìÒ±‚€h”,Dsך+]ßJžh¾¨úÐU·§é
+ÁŒŠ]~vò¿ß‘m$Ž9öf£Ì)Sïe(S…Î…
+⨧0ô-žî¡ã†¸RÁæ@v_umsÀv LáùÆå£ÓXÅ6DÂýçëÏþóùßþúöú Le‰Jr-´âˆ;|ÊvÛ–/‘ þù{1Šô¬S©us‡Moƒ‹*·äXSÜ[z®‡¨º ÇÐÀš¶ ÇøD}LñTþïªý©´ËUš·IÓiw–Þ™XÉå2Zd´ÚŽ‰¶íø)ŠÎ›d±ÊÍ´Ü+i/¨.RKøÃk®ÑØÑ™\Ø-»eÃcâÀœºnR
+-Š ‹Ê_ƒ¶`30Ÿ!ð›“èt‰Ý #pÍ] °£c¾`<`ßž»¤¢ðܴ䣤æR,›6š„ ³[ßoÀñ²l™ j^ŒÌ€Jÿ€Ðé¶÷aÀÐ\Y D\3¢g²
+­Í|³ñ‹h+Ÿ@ÔüÌÐÏLî! á
+²vH'ž]EuðÁ=
+U×»Š1¼MGÕ‡9Qý™ÑÁ`0Ÿí’ù g
+®A˜…Ä;N퇚Ø›?ÀÂ>E‚̹.ƒé$uïF®žEÙ4ƒ#†rÐRÚ™«$QxÌ°q‡Ìàú &i¡=0-ª =CL9ßÈMÈ7òoÀ!—’ÓOèÒ²ŸÑF3ƒ-ÂA§”-‹xÒW
+èàóc¼ù‹xü—//ݶjÀNÖDzB{Š1>ºxAxE®l„óø‡«µNÓèi ª¤*Op‚Å4oH– OHH›~×vò
+Š1ö[¬ ±v®Ð+“œ]•°!!&À˜ŸAqÆS
+—áª÷þy8ЙJM¶Z;K¥tð‘œYÇBëëWü¦SZ_¬Y€+¶ïÿø ™
+}=}Õ1‡ÂÃó³l¬ÒXVø?Ù¾dši^dúåµ.¹ p L”ÓéÏÉGr·Â2‰¹¨N8Ž°ù å_>¾A ]h> åEª´Í_Þˆbt¶’Ç%Ÿg±<û°ÅWX´‚ÕU8iäØMÉŠðYòcVŒ€Þ°±3UÀSt %ÕÃqJSK9•E`Ë"`йà^L$ž!m|£Z²U8:Ô?3¬b÷àK,óÙDjÎ8&uÊÄNFcï“`AÚ÷~æ™`ˆ
+,šjlBÔ;ÑÇ«ÑQo‡;à?ƒþNêú P6á$¼BÄ–
+»—Ù,
+endobj
+582 0 obj
+3283
+endobj
+580 0 obj <<
+/Type /Page
+/Contents 581 0 R
+/Resources 579 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+/Annots [ 584 0 R 585 0 R ]
+>> endobj
+584 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [116.909 227.21 136.303 236.361]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+585 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [180.545 227.21 191.454 236.361]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+578 0 obj <<
+/D [580 0 R /XYZ 72 786.278 null]
+>> endobj
+61 0 obj <<
+/D [580 0 R /XYZ 72 761.372 null]
+>> endobj
+65 0 obj <<
+/D [580 0 R /XYZ 72 559.634 null]
+>> endobj
+579 0 obj <<
+/Font << /F25 380 0 R /F44 495 0 R /F27 394 0 R /F15 393 0 R /F37 380 0 R /F33 497 0 R /F26 391 0 R /F30 512 0 R /F34 583 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+589 0 obj <<
+/Length 590 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍZÝܶO€ö_XøIܪ¢(êEÜ&.IQ#¾¢’<è$Þ®j­´‘´>Ûõßù¢¤ÝÕƇK ¼äpH©™ß|ðÔ*€j•„«$ý0IWÅî+µâ¯W®õ=И32Ú7ö>¸vœkûQb>Ưb_Çš×ýëíWz¡õJ~d«Û{â¹-òþxõËíw_}{;N3~dÌeip8Z)å«dÃjiº
+|¥«Î®îetmüDÅB1Ò4áa·Gê§Q8“,Œ$ûÑöWkjï§o^ÞüâÄ4‰áå-ÖÚ× Ó:ö•2 Ž·)|Êøa¦GI`ι$·[{µŽ”ò:Û·õa¨Úû×ÞóïÀ @8 ûÃ
+ÓòNQ€º¶¥L:4µí{Ùo\áP7âÞ¡)mÇìEÛôôr$-"sÃ+ÂðåEãÂ×bnÛ|í…T a›Óº wÉ죫(ðS•Ê§™WÍpûnR›ÐxáÅóŽ”%‰HéyÚe«ýUôXmú
+ºŽ¢Ð»!û3htx´½gŠj –7eÞ¡uÁÁþ­“On §„ßœ
+SÉFÀ€­£ˆj=C{Ä°šRÖL²d •QìÌ<véÒ`ŸØ\³¤³ˆŽ6;-y^Фyü~òQ8£tôüÙq]u.‚ã›Ó”F뙥ô€€- ü0VŸØ£Uœ@Pž,
+óUÄ>BÅÆj=Ë=y °á©„}@Ì»»
+~Ä n§¶Í†"5ÂО]_]#b(pz5õ°IÆue\~M³\XÏk{?,ÕvvÑMCHu}b³òž>3Ò[œÊöŒ-“/ž^E¦ªF4V¶µ«lëé/›ë‡AZ¢ü0TŸÈ\¿—dÒ=o$~¤Í#Íô\°§˜©Ä‰Å&àgh7”Áë$EG›`TDŒ)*Ç`™¹îvUce 0/СŽ;û¼êª^XÙ‹»:A¯<å¹D¸ïÚݹíIIÒxÏ_ücIÚ¢{a4³0 ‹îaE³åÚ#ù¨b8*soÛB8%õ­\Âìc¬n–Q}¦ö€<DÏ?ø ¶ö\ò2²·}UÐV†^9‘ãxÍED˜­QœÑIbxdxZŒ>1¿«Ç$îø†a
+GÀ¨¬ãµÍ{Iɽ=>›ÈÖL@Þ´RK ¸fá@¿ pê»»YÉ-„’YP‚cvíj@ÁQû̽Ÿn‚uDÌ1¼Ä8¡n9NÅuÛ ©×eôˆµ¯bý(ôˆž„ÑcÑò©èS¡ÇÕ&½Ž*óhø8“ìwÀ‡ŠÅÍ0|¨|¨|D:øPÉ*9õèÄÎ@D¹ÔIÅ“õÍöä ÔJùÚ=Â
+endobj
+590 0 obj
+3020
+endobj
+588 0 obj <<
+/Type /Page
+/Contents 589 0 R
+/Resources 587 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+>> endobj
+586 0 obj <<
+/D [588 0 R /XYZ 72 786.278 null]
+>> endobj
+587 0 obj <<
+/Font << /F33 497 0 R /F26 391 0 R /F15 393 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+594 0 obj <<
+/Length 595 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍZÝÛ¸¿çô¡ÿ‚Û'ˆuâ—H=&‡K{í¡ÜmM´¶lëV–\IÎ&ÿ}g8CY¶åõfÑ DRäpf8ü͇,f üÄÌÊ™ui,­›-w¯ÄŒ~³Ðú;ŒÑLmTl4önL\„™ •ÆÚš[óE«TÝ·w¯¾§ÔL$q–d³»µŸs·úwôÇùîþöêÇ»a™‰µ1×¹Á×z&D,ìL%±°.V™›µÅlÍo&¶"åq`Ã9K¯Ã.vZÞâì÷ùÔ}7©þØ”iœJs}‹…Š•s³E a&8 ,À›ÔŽµ³/yø>l›Å"1WŦ·7Å2ÖÙM¹ß':ñ2G
+øý³D·Ï]ßýn[vó…R&º?ô}Sc[EyU5s™Eþ]õ >u´œKmózSP¿ß´ø±-û²ÞÐêUÙ˾$b8)ïQ¸ïßI;â@¦.N3½¨Ê{šu§’±t)Oz,«Šh:Þ¸¬q\kã4µ§ œÞî»â¿‡¢žKõ4 ¢e‚iÔõ-Ë £6ïú"tM´>Ô^¢îõÉ­Šu~¨zZtG¸ÊK¢²Itœâü<7"*Ö¸0M¢»¹µ²c²è×¹±6Û~B©M´‘³ ‹+!±q
+Œ¥è<ÏÉ ³ÍzÂPà>eÚÝ°éâT͠θ«“Ñ>_¢ <ÌMå\5¤Ë©¨nP—DËfWÐÐcÙo±%¢5Ø2\‡¾£¥Þ¢ýä¼ej%M(ê†_ã•O4
+Ôñg嬛vÊHLk­XŽS
++d²/}šxæ`âÙÂí‰zî™^rùÎÔ ñퟪ†ðÚ@ÄkÒÛ§ªSù‚S}ófñs3W"zn(8{{ú)0_27ädYœ¤îÙÉi„ Ù`rvá‹|Ø>„ãÂøüEÿÜþ°±„ö:é˜Ø
+"Cd†I‘9‘ü¾
+1®.óš£Pؽ/0iÉÆ
+m‘wJÒ@ô’^šß¹J
+ç^w{ÐOAg? ¥»ºMSÐo» &@ÆúÒÆg†)(:FJ‰½¦¼Lô_ö9øæ!(Ó±@}RZ¤½äk°è–¦Ï ±9_Öê˜#kqZ½ÔŠ*1ðìËž*˜Ø—¡\×ãУGƒ¢æÇÅè„É
+ ;xœoe†J D¥2M¿P¥å-œ8˜ÖÃʸX»gÖ[.Ù;ûYŒBÿÛ5ÔFÈuŒñ‡¦¤’Ác ›ï$F÷{ôÝ3 –"øvò'R|YBX0MŠ)0§¥€7ïü4åf½õ6íƒÌ,GKˆpyÕl0?ÖüQÛBÙ骩v!K::Öã'¡`àÂkCb!»Î`  4|ˆt{M iäXJŽvùè†{t÷9áìµH0 Ö½>[¸"¸y*ãð»HöÐñmfc÷™¿@Ó‰¨è½Pš"­?OÕ è–+®8®¨§«)ê"|ҵћ›5j!o¾H‰„e8¦—*Úù¡ð‘‡J.ýPvå}5YÎ"¬CW´W d̈­¿:’LÊ's±ÿË·¶y˜SI,¾ñµÃ€º`ëÀL ×áY
+
+endobj
+595 0 obj
+2922
+endobj
+593 0 obj <<
+/Type /Page
+/Contents 594 0 R
+/Resources 592 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+>> endobj
+591 0 obj <<
+/D [593 0 R /XYZ 72 786.278 null]
+>> endobj
+69 0 obj <<
+/D [593 0 R /XYZ 72 470.758 null]
+>> endobj
+73 0 obj <<
+/D [593 0 R /XYZ 72 178.047 null]
+>> endobj
+592 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F27 394 0 R /F39 496 0 R /F26 391 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+599 0 obj <<
+/Length 600 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍ]oãÈ èãö¡ÁèË)ÀzNó!ô˜ÝîÛî
+\è­bOlamɧMÒ__rÈ‘-ËN²éˆ83‡Crø%ËY rfÕÌf©P6›-¶oäŒþ¾Îô̦I´H ŽAœÓ|6׉ÈÒñß]½ùñ£Lf2yœÏ®n<îÕòŸQQ-/æ*É"·)v­ãAWnBy亅 ¨lé¹*¿](À¯µäg·vl]Û+¤2º-«e}¡ò訙GŸnˆJÁ¯¹¦©mTÃ#‹‹¾iÜò- ¬Tó¨Þ, kQWÊFìØ]{ñ¯«¿ÃYæÅ“û3Õ°‡Öü2ußíúauÀŽMT4ŒôÕŸj×ñ4Êñ ZN¥uêE“¢ðûÕôî°oߺF ƒo>\íõ£,è[zR“zR§L…N5©Ý«QëjüËñ.‰0IrÞXpÙ 80ðv g³ÆÍnxyž)yZ&"µ†VÙȌ:àL¥'8ûµkÊj؃3[-ÏRžk¡³ —“8;Á× CÆ“V˜4{د֨.›èºï:°€U´r•kŠÎù¥µì1Ên[ì­ç¼6M¬£–Nâ'ÛÚgäå—X¼68[VûWÂc)L¦ƒ¨S+òdt¤€ð˜°ulDf“öÕEžF®íæc±§FH4¹‡ÄnƒØ§<€LrÈÂIyÏ—e±©W$³k§k¼%wþ& Ùç˜хý„¼E±\–]‰*Òpåýu‚Ù¦h;G¢Çá¯ÿºhŠ̶oq2ãËÛTŒóý`S®Š®÷—^n]×NK£m´îiPy.oiÐDG
+ZNzW-Ü)wƒZ—q0”<j\Ûo:šôVt¸Xï¼HÐøJ2Æ<ú'qëÜÄSÈÜ
+m¬wqîíçqõë,@?=  -ì1Q`<×ùyÏpžp)Á‹ƒÕx/Ž§™ù°÷ç¼8êÆèptÀÞß.Š&8×®Iì,Ã’%Â7D
+A’ÙèÀhnËÖ¡ æ
+#ÚÔ6ŠÝ®©wM ž†Â K
+Á‡Cʉ¸tÁ @€ÏE*Í+‰i.O%rpÏìh@‰~F丼¼Ð2zW=ðh2ÀIΓaÜÙ”»}øˆEš#´Ô¯Aà³ô…"ðåå8$‰°OŒÀS¾&˜lýÁˆð®îÖàrŠ©ø„«Ó:)(cn™ËhYÓ¤»ï¾¹ h Ÿ•æµÃRÙXÕÕ® $vÄŸ² \uO©¢kvEÓµ‚¼ÒU ZW°Ñôæ.Ë?»Æ{ü¹6¦mÙvxKMNNÂXv
+Úž¶‰GkŸ¥œ+Ûž"„„<
+J¶IJüNv¸Ï­A&|Äm0Æ)w¯Í÷‚„¤ÑÊ‚ü=s«AŠ)PÍ’§VÚÖFé•}ZzuÅÉ”†°ßW LBÐñê$º.ÚrQl|"5†Ï®`š*˜à„
+^ô •¶û¥ã¬‰Þܾúþê£àˆÔ©Íç¿ì[‚‡‹ìãû*z…ÛÉ´…öªˆ[8{(À2ŒÓ6`xpXħä&Ë#<±O±
+€ïbR:J¨P}ºUREÎ,
+¢é[báÅšE_÷ë ­ófáeSøR•“H |¾ Yí"˜òz>1AÖ5ŠÅ iÌe !ûxu.mmèœöñÂõlmw×ñhY¶‹¾m¹¦6œc…(
+rt á‰û:
+ëêƒXΰ<tÀ°B<äa¿ [2‹>ïZóiÜfç)JÉó84ÈæÒd"Nì¸Ov\›TCý´ƒŠ?ô„viÊù”¿ï p$Cœ6ÝRÑ5R¸?zÉ7î7¼•ß£ßâÿk®Xá|™6T—›tï²NÔJc{%ÿ ië|v…­]lœžPIÎ*Ö‰ï‡& ÖK‚n|G
+õ†‰ŸÚ™pø¼–Høž~ó\—'œ_J¢ÛupP%?[MïÛ£Ÿ
+endobj
+600 0 obj
+2792
+endobj
+598 0 obj <<
+/Type /Page
+/Contents 599 0 R
+/Resources 597 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 572 0 R
+/Annots [ 601 0 R 602 0 R 603 0 R ]
+>> endobj
+601 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [271.365 667.055 285.304 677.964]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.7) >>
+>> endobj
+602 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [520.087 374.217 525.541 383.914]
+/Subtype /Link
+/A << /S /GoTo /D (section.6) >>
+>> endobj
+603 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [139.878 360.667 150.787 369.819]
+/Subtype /Link
+/A << /S /GoTo /D (section.6) >>
+>> endobj
+596 0 obj <<
+/D [598 0 R /XYZ 72 786.278 null]
+>> endobj
+597 0 obj <<
+/Font << /F15 393 0 R /F33 497 0 R /F26 391 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+608 0 obj <<
+/Length 609 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZYãÆòè<ä/(O¦€U›ÝÍÓ@|-°6œÁ
+¥fòmRËI°L±ÊU™ÏÅ*¹^"Q¹…¦ŸÜ´â5¹ý±ë}w¹ÆþÍz“ÆÙŒY½k‡¡V3¬äúÒýÓ®€YÞsËÑaí….`cÀhh,îAØYuGà¡Þ·õ/±N*×¢:ŒŒ·õ富¬áïc=s$¦±V?û†I&@0¶p’$ 'ÁùŽd˜¨(5®M®Eý³Å…þÔwûÞy»PØŸÛ–¤ÂZ¡™@Œsüéý0Ñíè*ä
+ù~²ÿI‚R
+Øi#rºÜ‹èMô
+‡TF[‰aÓëöçñDP–',„Mff±°ˆƒ<¾ˆƒ bHuƒÕ]ŠDô Ú/c4°Ö &¼Ü÷‹K?q“‚¼¦f8=M̆&BUXe[ÿ„%D ØCápXìN°7Â¥ºÍª<ùH&øT0ËOZsa¶E¤ !Ù5¨¿]Ãa)ò6Åeô|öl9Eq™ I¨pjRuèw ÃváqFÁm݉Dݦ–+ ü†ÂPÿF¥Œ¹=ïÚ7/§›%ÐCl„ïÈ͂ŸšóÀãÓÁ½¤PÊa™”?ä´Êtx7Y Úámg_¸w/¦á=ñ#Þð™ï¶,.©µÐ#°¶ÜãÙÈ?…Žáä( KERR4{#&Àm¹d3 n:vٵ䜅éHþos> |´WƇnäsÉ!ýØ×Õ (rM:Y kÓÙ~ÄVó\BH4_”µV%Q&Ï}¦mà×OrÈÕ‹ËÊǃ'.Ø+•Ç¾+˜ct“òY„æù%† +Ž­æ½Í-ØùDàÿOwPH¥';’À$47 Ì«Åý‹2…^œý©¢Lø)£¦Û×y¦ˆÌ}MÒKJ×r‡`èà Šäàk÷¤áeHà-ºdŒ´ƒ6|˜Pd¢²cÒªs°9¸ºçfdµwM'M©œÃäDÌ~¸ [“
+ç"Ð%('È8)B!çÆÒ<?ÂtŒŤY¨Šº$ÏY²‹(± ¥œL"qeèÀ/ú#ªE6AMqÙgq‰`f“VM}ߪ;Çü
+§1‚XštÊsb¦Ê–j Uòï² Æ@Gìáâ“ä{2ºõ$ TÞ-Æê¨õÏ2]8ŸØm'ÛŸé™íÏ$¡[HB÷¸ƒNË¥“VƒJ³â¸*2Ý 8ŒŽ?×Þ>4‘ω…nNjgN6Ç õžCjMH>™™Î½ðGqpÕÉvkÂËZ7{ÐÙ=¥/µJ’òSJ«)H€)øÈø²¶ëRÅÀÏ…¶ºAü¬
+î*lX6I'Çèiªtr›¡&Ÿc¦T:ÚºÑ=:ÖÝXÎLÏ.!fAXC%Ì”šX§ã…? ƒ
+ À¤< 
+¥ßà ~+½ÅYpË[Ï… /"ìËäXØìÎ}c/EûVðÉf÷M©á8t¥¼FÖüþ}–ø¿±Rþ¹FñtÐ3ICt…ªò!ªEç‰]L.Ž¿³3{ß·]ï·W#%2JgWŽ‘Qôx®Z _>$Pše QÃ*ç6„âÞLüPw
+A578þ½#[£%B‡/ÆbŽ'ÊÒtÁT}×Hð¬ ìãy¿Ÿª“+ô¬vX’ׇ$D”¿á¾®í¹Dmr>ÜÇÌy¼ƒYB¹
+endobj
+609 0 obj
+3309
+endobj
+607 0 obj <<
+/Type /Page
+/Contents 608 0 R
+/Resources 606 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+/Annots [ 610 0 R ]
+>> endobj
+610 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [296.294 650.985 301.026 662.201]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.4) >>
+>> endobj
+605 0 obj <<
+/D [607 0 R /XYZ 72 786.278 null]
+>> endobj
+77 0 obj <<
+/D [607 0 R /XYZ 72 761.372 null]
+>> endobj
+81 0 obj <<
+/D [607 0 R /XYZ 72 482.296 null]
+>> endobj
+85 0 obj <<
+/D [607 0 R /XYZ 72 283.448 null]
+>> endobj
+604 0 obj <<
+/D [607 0 R /XYZ 88.587 93.518 null]
+>> endobj
+606 0 obj <<
+/Font << /F37 380 0 R /F15 393 0 R /F33 497 0 R /F28 523 0 R /F27 394 0 R /F38 495 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+615 0 obj <<
+/Length 616 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåZKܸ¾;‡ü…/Ñ
+ t;r<lÑëüR’G¨Ðo›vLy|ºmu'Hè­ÙýŽ¦:¸¯¶~ÀouëìYømgûŸÊ§ø­É ûm¢£C¹^“›ñaò0,’å¢^™'`Q–ºÜm™þ&~ËiÆ
+ 6&œ ð¢ÀVODÏ40ùÖ‚c¥Æ°cù‡¥o(&oǼï‹4ÅÌoŽ´Êƒ¢<‡×ø|”À3‡Üž#õÌ_ã±F¦þF¤¯©§™H(D:{(á@v>lîã.Ý¡¬ü:Ò<úsÓ»Ê/º9pÆáœä“-˜Î´ ^¹/`+Çð‚›Öþ¨š?è”°®ÄñXpM’
+¤cFÄ4ŽU[¢_|\õj ˜†ô4fûÞ‘( 2EwÃÚ^gíéÎË$ƒùõ¨Ç‘¡ôÿ.CaíÑsß4ú$¢ø
+¨·bªÈêÌÈ9Öº³ˆ¡ ¬ª¦]âRE¹Hâ$øî{@À vKdƒZ\ìÙ¯—Šä"–"d¬¿àÁæý=ƒÍrÛ.ó~ñ‡$®ö¹¥º”±Á·iÃî›!Mãt<5.« ó
+*(š,Â1|Ûƒ?ïÂgd ]¾º‚~®5Ö6òÜS|
+’þ0‹íÛ­åb Š÷t­¸Òs„R„VoÚ
+ýÀwþ» ¸¢F|•…ˆ¶“J—)¹g¤o2c‰'™×=e.gËökÁ¹p“QÜ ¬Ë¾\ZQéj4EÆß2üBNEèýô±¦Ú,t׶ì¸IúèËwÙ–•92fµøš^h¬-îÙÞïõé+<3•j Ó[G Ýà þvt™, i$¬ŠqÖWÆî }m§}-Š)ÚEàÊÐjÁ¼ËxTkÝ”èB©ÑßÙqŠ<8ô“ãøü3:ûóÀ™¾[Œ““à_ªÄù<s“†ÆE+oŽÿéÂѬèK\&”œ°15‹»¦aÙxûfBé
+ß^B?ÅÈ|MRf»à]Ÿw`é™4s :îgR.ßÊy˜Ï—0‚öú^ð‰ŠÓ4}è»ÆÂÀñËÝ£èûr_í_íQå|½™æQž°^ù|ÖûSÙoÿv÷C³x®zêj‹8ÏýÖ/”H'-VOdrVÝÁߢÉVü+€endstream
+endobj
+616 0 obj
+2598
+endobj
+614 0 obj <<
+/Type /Page
+/Contents 615 0 R
+/Resources 613 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+/Annots [ 617 0 R 618 0 R ]
+>> endobj
+617 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [261.453 523.532 275.392 533.229]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2) >>
+>> endobj
+618 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [306.816 406.342 320.755 417.251]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.4) >>
+>> endobj
+612 0 obj <<
+/D [614 0 R /XYZ 72 786.278 null]
+>> endobj
+613 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+622 0 obj <<
+/Length 623 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZKä¶rtù ƒ\¬¶eñ!QÊmýØxã à bµÄ™V-u$µg׿>õ¢ZšÖÌxç°ÁbÑY"‹dÕW_•F]%ðO]9}åò,Ö.¿ªŸ©+þ÷î*´¾ƒ>–´©‰S‹O/î‚äΤqž¥/É«,6™áy¿¼ùì‹7Æ\©$.’âêæ–dnêF¿»þ×ÍŸ>ûæf~-mš¾¬ ŠÙÅäÚmL¾ÛÕ~ºû¶é&\æ‹7*]He:.ŠBDÿp½K‹,zݶ×;›ÑtïGM•DM7Néšp ÇîÊqòCó³äž†f‘c9LMujKqiÃR?ŽåQPG·C@ ¯v¢ÔNáY¤ZÓ]kX×_7%ÎmŒŠ`ñãˆMõ·ø{Ö¨œš¾ã.T
+¥IkjÀ4MW¶1,lMôVäú¡Æ}DÏ]§ºÆ©ìjxÖEÄ “œõ9´Aµ“•Â°ØáÈ:•ð“á¡õCº»Ç§l1sÓÝqm!“ÓÅÆ ®ñáx½Ó.¢®"R<r {u¦ð4Ji(žG¾j~H”­Â1Àëž9˜¿ —ír)may¹Æب9[ð¼óù|MD³ÁoÒà©>²fPœPýšX7|
+>SÝûêÝßü@GÛU~ÃuTbâdá:Yb¢:Z«LÔù€Ð²Ëßúj¢~\ÇDÿPŠàXd()GoO]…ÓŒ`©Y®¢×¿RÖu³c_-V¦oÀ}D§éxBÓHuôÐtufó€Ï–ï ~«ÁƒGÕüÀVo²BÏr
+2QܳMÂéøY„£U½¼;ëÍa¡ºà Úî‚€1y4¨<%çb,Á'1Wh7€ç‘$Ñ_zB"XˆÛ žÓ~qZ™¦ëEnà§æ‡RF ¸(Z8?îgï˳ȿg¬à¼âK¹¹Î MK¿€Cë`ËÔª‡’ôéø‘T†_&ýԌ;õÜ‹À)3ì@ãvboäað6žZxqwÕ£—NžûMtßÀ€Ìyš»Îøò† içD+—GƒŸqbj~º–〠gœ›Ühûq‚ÛI]!΀_ák÷e׌îïûS‹ê¸,Y>pÿ®Ï+tüÛÔ¾äY hw/7{¹‰[ð!Þ»œ«e_Þ…ác°S>žÔ±Þ½’Cªh“u8É2 \ñŒü —èM%×Ý1H¬Åh%€Cž©Úf¿%:3“‰ÐÓøY$±ÎÔ§ƒŸ_õÇoúMÞ‘§ÐÊÏàiò`/Zë<µVQè;è©Zì©ÐîÙ´ÞqÝ86ŽC/®:pG¸jº{­2¤ðÊå½iåRQðFý;ìå‡$Mà¿ÚØ`\Ûܬ­QÖEŸH²è-i
+nzlüÈí²m)ªò\!"‰‹ër*÷å襻çÞÎ?pGÛ߉i†Ù
+™- Àn£±-ˤåaó¬À´í‰‹€Ä°$6HL½AE‚Q©“_ˆNs ‚ç 7%±G¥(K
+‰—9ÀÒ£šñP§Båñ*8”ÞTzÎ<qdÁŒñq‘yrš)Š,¯ñ&ÜÓÚ´)L
+>»]a+‘QŸÄ;? ““hZŽ!¼JþÄçÃÁµÎõœóúœ´Ð‡`øí×1wÏ
+?o™ Žomè8öÐL÷ìœ%ÿÜ÷Có³¬HQú=ÒNeB‚Ì#ìçàwI’2pn4ŒÇ²°8àÖÃ}çì ²š¶• —¨Ÿ&lÖ+ÂäQ|NL±k.?˜·°»äŸÀù шkÆ“®ÂCÁžåjˆ(.Mø¸­ÉÂqÓ n¥Òê€/o¤ÎÛV²}=ßs«¶å» .4*Ö›/`»ÓLèà·Ü üª0±ÍÒIÕv„ÄOÍ‚ŸÂµŸÊ¦m‰¢€RgC†H†ë–ý­(f|Ç”$VÉÚѸ¸9­ëÁ—g»Gê(\rôþ1|)€½¶²Ë\ìl†ø„Ý8øî*´¾{&¸B·“ªíÓ ø\¨f\1)ìT'FÓÐßñr7Ri
+»¦D3= c>—!âØ¿rˆâ§E·À ‰u-–\À˜ª‚0Zõ©áéÂÆ‚ÆòÎlþÕ¹Dt©{V
+ÐÀèÎ% éyè\›N¶À{‰S'é9 j¶=1½ÙÖKªSŒsMW’ñZçé:^šº¦BuLwlHÉm€!¶XÜo>'õÐ T
+O)ñ££ë<‘Ì«üùºFª–Éï»…Kj›ÁáÐ2‰“\oq‚„M!¬ºgKÕÀ>aŽÌºÿQ-ç`Pν œ8áY†Œ™‡Ó:ìžuƒP[¬®p‰Ê*o»vàe¯¯um•æ5ðÃÙÈMŠà‡E~ÎÉ‹lýA±˜ë™Uy¢‚rQ„×Ü…GB×ãçüÚ=%|ò>hFÔ—Z0øó÷A’“ZôÅÄL§xË-g©Øy~åbà/TZâ ΑJ6éAœAt;K¡ þøúsôÂW+¿¶
+ÃŽ}ä›»Èó°ûbøÀ¸±E.’àðtMôgu0%ü¼—~½¡ª£p‰{FUP0×Ù\ÙR‘î[t‚3-”Yœ),ŒgŠœïb©†[:J†ëN¹„*kuÔ–ÃýÉ ¥?«ÀŸ”±×'Èz¿ç^ÒÃ.þD %Q’éxÒÛ’þ<zª¾›‘þâʦ’Q¢é
+ãGгçÏÈïî†þÄÊ©ÇŸZÂwü~ðA
+)×±yïÛ1fÛ¡Š•P2¢½¹’è&Dq°± 8RóÇI†“ˆ»;© Î4/Ww…Ã䎜",u©~×/R R
+endobj
+623 0 obj
+3447
+endobj
+621 0 obj <<
+/Type /Page
+/Contents 622 0 R
+/Resources 620 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+/Annots [ 624 0 R 625 0 R ]
+>> endobj
+624 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [215.787 402.917 235.181 410.493]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.14) >>
+>> endobj
+625 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [450.047 178.285 469.441 188.285]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.13) >>
+>> endobj
+619 0 obj <<
+/D [621 0 R /XYZ 72 786.278 null]
+>> endobj
+620 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F26 391 0 R /F39 496 0 R /F28 523 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+631 0 obj <<
+/Length 632 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕYmܶþží_¸Þ'`É¢HI”¿9‰8/m`
+M?ðvy·êi¥¤ÍùêþøεÚ]Ù‡Aà€[Š‘ÃáÙgFê"…?uQf¥-’¬´«íê‚ÿî/Bë;ècI“ë$7øô„`$c'¶ÈŸ’WE¢ Íó~yýÅó×Z_¨4©Òêâú–d®×ÿˆþtõÏëo¿xu=½–'&ÏŸÖÅÌlò¬\˜<ŽW¿ºùò+·ÚÔí®õüµÊg¢•J
+‹ü‹«¸È²èzSW±ÉtÔíƺk±­"ߺ›ÆËÀÊ­®²2¢Ii´»Åß,ríUf£±vMí¿æN–u½[¾ç®»æq·’«¸T*z}eMÔɈC-/bQ,VhôŠÔ[×Ãj? ¤˜–ÖÄß‘ôÕEÕð÷Ø4Ñàý©i•N“,;Ì ¶Ãn¼¿­ïØžGF
+öÌxÓœN›•‰œ}òÈ>=l?×ìt{2(n¥wkz¼Ý·+< Ù¨ë=ï½íFn¸?x°îš'ºÁCxdQ²™Tå6Q©>²)Ÿprº§XÙ<Ñ%ØJIú{û;?¾K,@ݦ‰²ê
+³§OÕÓ¬ùª°™”](eª’O‡-8ìw¼í®G»+ B~ðîŒ.%Ü) hXßùq` >+è½Ù× ½•"*\}·!F!R¾ù@\»žææFã8ìû£¹w˜!òANýÔªœ½yÒeRN¶¨Eé­G¾Sí N°IÒ4Ñ©=ì [þWpúÁ¸‚Ê6øhÁÍõÜý0¢Ph趸¿”½& odšS€l5LV•Ë‘%ƒ0n&ž÷©È¢Ub«` ²/.'½mÊhÛõ|Ž:ú«¨³êöýà1ª¤EØCö£Ü³Â&:;P0/rß`ÈsµqWE%
+5ÝÊ5pÇàR´/m’Ù­ÃcyäÉ'Ó£+8umADF¢°¿Ô}×n¹-Îã—«6Ø×ȃ—l n
+ÄDƒ¯ß¼ûñû—ÿ„G¬æábÌ£’
+¯Ï-ø»X¦E§T%™Ò$¨“ò*V*3àž*pO핼™0Ñ›vÕì×´—2‡øÈ¿žÝÎfW…JÒ î3$é
+ØEªŸæÑZ ÀbÞ ÎÖ±
+80¦/¯ã™ M™Ò1âïÛnëZ¸øyšGoFðB+yø²kÖ,B^ØÅ2ü<]&¦v˜
+Úœ‚à Ës˜…ƸI¦š ü˜%x@ö6”Â8Hþ)껺•„58Üöí”ÁÖ-øß­ãt(.Á—ý¥éªÓð‰|í\Ý<ÆšBãöõåGüñvcc õ½¼ü¸ 6ŽüíR ÔŠ'qžé ²ª8eÿ8ARúU·ÝíO?ÈA‚1ãùAÍòVNækŒkkn¿Jø÷;:Çý¸ÁGv'øÚÈKè#PÙiÖ
+‰Óe`ºUr\PÂë² †JŠ*$.·‹zàŽÓ§v¬gjüñϺ´!fP•åàO°Ê²‘Í™öH½Æ"Cukðe(Y2 ‡„¯,ùJ±¦_×­ë1ê—0H·Ñ“Â&¾Šm¹MNJmµP¡gÌ…º–iV<‰qüR5Cî-‚^Ïär_Tž%nݘêäƨ‹Cï{ž¡ßÜòÔ³Üí(n} À¢¨W¯ÜzÃV‹(X$,¨¤ÆÙsA«ÃÅÃ7Œv4™°¬þ^ÊI
+œºpš9|§÷?ïky
+™ÑÇR×ã̜؃óíŠy³Mãåƒï€¦þÝP‡B¯ñÈbèzÏד,דpX §04àIBî^ß2á–Ì“€&²B yN×z#
+
+Æ<Z¯æ ‡ÄBBã©ëÍÐ}Q£Uña«R^Ì1„” £«ÁÃÂvŽ#FÅjµï—òô$±’€¼ã„òŽo|ë{¬kà’oýÖõ÷’‘tíRêQeÉ“%‡˜¥æ9 LŠåÆ»ÞmüKßzžLááJ–fžÂÃœÿÚ#·j>
+endobj
+632 0 obj
+2900
+endobj
+630 0 obj <<
+/Type /Page
+/Contents 631 0 R
+/Resources 629 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+/Annots [ 633 0 R ]
+>> endobj
+633 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [229.497 734.742 257.375 744.439]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.4) >>
+>> endobj
+628 0 obj <<
+/D [630 0 R /XYZ 72 786.278 null]
+>> endobj
+89 0 obj <<
+/D [630 0 R /XYZ 72 557.087 null]
+>> endobj
+626 0 obj <<
+/D [630 0 R /XYZ 72 518.062 null]
+>> endobj
+627 0 obj <<
+/D [630 0 R /XYZ 72 470.569 null]
+>> endobj
+93 0 obj <<
+/D [630 0 R /XYZ 72 317.791 null]
+>> endobj
+629 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F37 380 0 R /F38 495 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+637 0 obj <<
+/Length 638 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚVÛŽã6 }Ÿ¯È£ÔZëæ P,ÐmwívÑMŸ¶ƒBI”ØÇJ}™Ùüý’¢œq2(ü ‰¢(’:<4_$ðñE&Yž2‘å‹ÍáŽ/è{\Œ³Ï #M¥%Ó
+Wo(Æ£f,5ËSúVwïî…^pŤJ«×]m¿Fjs.T´*í2–YýÙº}kˇÕoïî•š5ÆÓ,ìOGËÍ.(ŠlÁV$*Æ£f £ÔbFŸë‰¾*˜Ðy°[uàO#ƒƒŽºêp¬-‰6îp0Ͷ®K›½[Æ"‹\Mûÿ$:1k =©pÐOu4ý™Ô;7´›³i8–G[ 6x0^š`ÃÔµ[Âîsp ¯EùÞ6¶5½Å íEÌ1û…Å4 ˜$ÑO÷_pÂÁC®|4 ܵî@RCÃ
+ï8½ÿ–Dœ†kp¯§ƒGz!¶Œ•”ѯ=éø¼áHª¶ÙÚm¸Èµá ™v”PÐ}.]˜àór §a:{í]>ç]1 %@ûø)\t  ù”ß-H=W}IObÊL.Ž¡Ê Æx^°TŒXäuµž–L¤iPBtøLÀ ®/mKö;·ëýãú´öÚÙÖþ7Tíè͵|Eä gyž^ ¡;QrÍ7²¯õ:&ÈÈX&®
+&ÖBG_ãúf?B¾û]U[þ>l%âý•Š ÆØÃL~./¼_æ*Â )Á#k6K
+¯#ÀÄñÝ¡^WýÑ@k´P,3ŧ¡豪ꙺƒâTZ ¤õT†ð ° h†anh˜>£,nö*ìCþ× í®øï|ú÷—þþ4ãBš²,]0ÝùšÚŠj’€ ŸQÂ'/Î$ØÝVÝ£I
+™›fh•ºs]SŒ÷:¶TÁA=å3ÞΦ0r>éÅ‘Ö”?rÁ¸†W ¿Eú8I½¢$ À/nSÒmcÔÚ¯ÌÅâÐð[ ¿{@œ‰|‹êðg
+endobj
+638 0 obj
+1209
+endobj
+636 0 obj <<
+/Type /Page
+/Contents 637 0 R
+/Resources 635 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+/Annots [ 639 0 R 640 0 R ]
+>> endobj
+639 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [108.424 600.749 127.818 610.446]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.16) >>
+>> endobj
+640 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [213.605 545.946 227.544 556.856]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.4) >>
+>> endobj
+634 0 obj <<
+/D [636 0 R /XYZ 72 786.278 null]
+>> endobj
+97 0 obj <<
+/D [636 0 R /XYZ 72 761.372 null]
+>> endobj
+635 0 obj <<
+/Font << /F25 380 0 R /F44 495 0 R /F27 394 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+644 0 obj <<
+/Length 645 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZ[oܺ~Oú ô¡2¥Å‹nç-)N€´I›Ö>E€ž"W\¯­´•´±ýï;Ãj©µìMúÔY’"‡3ä\>ÎD^Äð'/2u‘å©PY~±Þ½’ô÷õ·þc4Ó$Z${g&®üÌ•NDž&8ÿíÍ««w*¹Fh“^ÜlÜÜ›ê_Qr¹’R™è—¡nï.ÿ}óç«wÆóÒBäYÆ“GÙÔ·4I±Xq“V<k¥`]¢ÜÜ›m=\®tGƒ]u×R§²Ãº"+•EÖMQßò¾eÝP{Û]ª<º§ÎØÑâÃ`iw•»+h¦Er†G•‹T§<I\®R©£÷Dv[^ª"ú†ZûÚVó½Ý¯cÒ pœ½µôm¿£!/~^àdt!´†K‘x9…ã¢ë+ÛÃ<­£’~Z‹kƒ’ò—{d«;4u[öH[«ˆyFZR¶—ÔgZz¢eæ´ÌpBÂ'Må'Œl­»½AЙj8y)Š$!%Z©B¨8'U’•éOÝn_7¨P+Iæ,K¢uûuR3”d õägûéXd‰Ÿ´úÔww}¹–RÅRÈ4džH@7pÁdBG{Z†r–#µÜÙ”-þ;4ÓJæO% ƒ–lún"Ã3€ï¾ìIîÝ%(ùaà êvÝ*{² Ü?û¾.GK‹¶¶­pBáùêâ8Z»Óe•ëk!rž#í–ZG-…™p_QϽbß×ãö¨¤®1g&ÏXœÚÎ`dt BX¢ýOAkÀöV¼ÏXžÐû,å‚5²í7%31˜Ë€¿\žìa÷Š†é€±Åvtbù2Q"MÎY¾Ö"Ž OÚ×ßðº±lˆ2Ú,JgRvY8øXÛ¦âvY}»LR¯åe^7]Oö^™S¸'gò2O€»b&{ÕµÄk4†µÊ$|\0‚ÇåFúr€ã!ûñPí ë\)ü0kç³è~k{¦7‘qÛÄmlrš,9yæ¦kšã~Ú T û¯¬Ç»ˆ£´ØcûVÅßÛnœùí}‰—FBùBónûêç›)–!)Ä”Bž‹z2:Õ]´Ó:Pí~ºA"ŒÓŸ3Ôqš ˆÏôËï Üd|©&K£_ciš%åÍ
+‘Hê®Ø.h¯‰Åäáþrpoš†6©,RokV“q oëmÉJ»·üo Ç&_‚ò%Ø*{[R"e¨ìÇ8†¸@ç.¹f• ÅéICÀ˜£
+¾Qp‡¹D¬¦„»"Í¥%뎜Úçë
+ш  ÁšTôÉ™4ü²ICËUp>IGï.sˆ]=\T¿ëzûz‰=§ZùòÇL pˆ†ÂP
+Švõù¹CL©Å”7¤@5+ž÷TS¨*›P×#åÃømy°Åˆä½IÕÇ-nš ™wyAºZ âÙ>ãï’XäIö²r¦“3RË%Îý
+ue?ASô 7õ´p›/ –
+´&ŸàÙ\“Q§9ýt7o<KÒ Â>7‹È Oá ëoðá®yÜ/ù/}6
+ :ZDï7Kê• 0 ¾ƒmÇ"«¸{‚Kñôì´ºôØç{bŸyˆ“'×Hñ,¤b&wâC¦Î„Vs•;ôþQ3%7½¾“WŒU€£×¼ñ6Šy†ñÊúš“¤³$Æ«j¶Î¨jé‰7Í”c=U[Ò¹\8Hÿ¿(-¸7™«sZ[·£WÙ/΃ ׇý¾ëÇ_ã$¦oߺº‚žôLsΤ
+!Õ`'~䢷›W o€å.r!!*jüÑ ŸW5S‡ÛÊóŒ>«±0
+ 럊éå
+ìÓ‹ÀHæø<ÊU°¶še¦ŽitÎW‡…ÈŠ¨”Œxñ¬§r Ž÷Ü€K 9x­P <{毼®¥”ÂãèÔS®tÖ¨¢
+òjžPþΧÊÀ‹Êymòº£\°/µ+û¯uœºf^ç qg[Û»ZJGU‰% Qw”cŽIá÷¶wåž qž:Ž†-$M¤£Ì)PÞs…bIãLiqØ+sTÛÓBT Aï ÅTÝ ;MXÆÑrw’;îAšz-K]5ÃåÒÄ;¹Ô„¯Y^í<QjOƒm aÁ=zR@hƒÝOªc¯õ0u¾Æ…Û¾~°M`àÄr×Vü¨wÉ üõ™€Æ–.ëçÑPßµ5ÒF§„N–¦ÞÖã”-p%uÉ5–1Se,ãzs_]5]{wïên½. b¢·#%r21G´ Np± Ú÷e{wš¬ÜÙ]Guש¸*gw‘ë1`.§š¯<NôÉ©Q/Ër±÷dŠ8=}9Õౚ[U= ZÑV'Û´ö‹Á·ÎìýåÒÒÍèô´J‡C¼†•Dûº¥N}ßj7EM
+ŠiøKž[el`ª€ÕMjéwW¢¯[úŸ&ìa áË:5BúPø¡GW“:ú¹­jn!±0¯ðNÇ1CÁ‚ªVó’oo=ÖÂò1Þ‡;EU—b^u¡‘Óµà!ø{À/ä`ðcç?_?µVœ½ŽrtËY´¥nÍ”9\ŸV_14€@g²ÑJI¡?¿ |•9ÝBÁ)õB¾û¿Ó¥UÕendstream
+endobj
+645 0 obj
+3068
+endobj
+643 0 obj <<
+/Type /Page
+/Contents 644 0 R
+/Resources 642 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 611 0 R
+>> endobj
+641 0 obj <<
+/D [643 0 R /XYZ 72 786.278 null]
+>> endobj
+101 0 obj <<
+/D [643 0 R /XYZ 72 761.372 null]
+>> endobj
+105 0 obj <<
+/D [643 0 R /XYZ 72 697.251 null]
+>> endobj
+109 0 obj <<
+/D [643 0 R /XYZ 72 401.657 null]
+>> endobj
+642 0 obj <<
+/Font << /F25 380 0 R /F44 495 0 R /F15 393 0 R /F27 394 0 R /F37 380 0 R /F38 495 0 R /F33 497 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+649 0 obj <<
+/Length 650 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZ[ܶ~÷¯Ø7k"Þty´“¸uÖA½@ 4EªÕpvXk¤‰¤ñzóë{.¤.³šµ AŠVI‘<÷JàO\eò*ËÓXfùUux&®øïÃUh½…>ž©ŠÆ·ÏLÜ„™eâ<58ÿÕͳo^ s%’¸HŠ«›ͽÙþ#jÊáÔ•õõF‹,úàš-¶ò¨Ýñs[%·:{ìlo›k™GC9¸¶ñ3ýó•»ÃF}ßl]Ùð‚‡²º–Y´wíãëM–$ÑKžuW?÷Ï{žÖWeSã+;ëõ=~^âžýõ?oþ§Þ$¯ Ó—µ»k,œY)¹Ÿ*úáý«×®ë‡Í@߯7°†}ƒ:jZžt(‡ÁvÜný‡÷ûr£ã¹q×o^ËlÆ;™ŠXäÂspµ»åY + b•~’ëyûîÔ4®¹‹‰8W‘-HúBç2Ú—È\E·LE¦æ:êK·å%Ž€Îø©42‰ú¡sÕP?ð÷Û–èùû¶áøþx Í¡ågCòÄ1–´—½ÝòJ$µ7é¸ØÆ~¿Î‚
+I" •2E†ºuá<¢ø pö%,[Ì—UiXÛHõD {ë:?±+ñó~ûxmRP“¥OuTµÄŽ-/ë‚àÆšãÄŸø¥‚Y<V¹]‹g…çU¡ñ´²dYœÉ/Бäs]þz]Á—„ Ô*^_ƒÂì§òp¬I·¥ˆÜne¡M¬ õ%(ü$ظçõ‰A-ND6ŽýÁÆÕÒÆé q†õ;Ïb­Ä‚$ÂœD_Í(B4u4}ã$;èà-eØ™ “èfï§ý]nl]¬Y9˜gðíîÔT(ä°öihÁì]UÖµß~_6Ûš–JáÔÄxX«j»ÎVé\¡= ï'w¥Ò}åc¶§I¬À
+`*òô_ØÊI‡Et,·¬à¦ £Å¾Ÿf‘HùÔ>T’ßÁÑü€È‘÷°óh\"ñÝí­ÿliW"ºwu°îÄÄ…\:¬
+|:Àé¤ÑÑ¡í¨.ÔBû{Éf¤‘l38::™æÑíiàá‚l“'õG&ÉÅ÷Ó‘§ÁŽU9X°Q"‡0^áw6ÜYúçÖöUç<·+6 ÊϾ¿ƒ( &B#Áy¬Àz †b7~¸
+­·OÄU›•5 U\à—#á)ÐzçÕ·#ñÂslyÚ½ö<öƒRt3heæQ=›<"ô—½W)vwðÕÌÕ¤iô†}¨­Ÿ÷¬×*™['E¬uÐþO+šGi?ž§¬\ZK09½í!Լóe•¨GR2yN2 ’ ÀÞÉ22?£"ÚaŠ«üΣ"³‚Ž‰kÇí|£ìîìà¿%=Ãv®
+ÆÛƯÕöˆg®½kVÔíìÔz´ØßAc”’*VâŠA /˜=“Ž–ÑŸÛ¡íÚºä¯Ó<Y‘‘RI,óÏÉ(Œ'¼ ˃vQÁaB7?µ'pœ|Jð°$T¥
+«\ïðñVP‚`;Ÿ<+"³˜… 5Ks(PéÜïàü$KŽœƒÍ‘Öœ£˜ÇEbøÃQ̲ÄD{––Š›«èå_Þ¿á¾e;Žw–¡t,
+\ü6x¦šŸˆ{Qi“1}€NàÏÖ°ïiÂÏdœI–ÇFùáúRþ4Y‘†äÿL¯L΂πíwîîÔÙÝ2&NFàiÛq`ø·êŠ cÐ&ûZWnòÍŽO ÖHRà·PÒX2k=gŒÆ9=?=šM£Y"Åì¸P“yáBƒô §œ:-“º<{7Âqš©e±³çÜÌÆ\?|ÌâB†
+D4ùÒ¡ lF_ðè Çò¬ý·­@/Vø‘+@X@k¶ëšv…)r_£Ïê¾=%ŽÐ€Ü kQƒåi‡CÐÒbqÈ—Í¥|"¤¿œlçÁí˜}„$¬ˆü–3§'Î ŸÃãKX4…â¡Ö±)Äï…ÿ°
+…?¶î¿Ó/EÀúë/EÀÙÓ÷BŒESãÉtqpÕ[¦©¯ë¥fÒ59¯Ï£Ó•Â œ*³¼(©3vOÈÖDuämÇ_aÐ3|Zî(Y§³<†´Ép\²z”Í.mkà²>3×6`9£ßNýÉÇT%g®_é‘J4ÀÆ–¾pF #’þ’e‚ÇÉtö»å¨ßÙ®²µ}[Ÿ¨¼Ž:½«ÛÒÏúôsG5"lϺ°û’õÿ·Þ¯²ÞüsÖK§HçzX F¯¹¾æGûòÞˆ±Ñ¢ÅwØžT»:uü¶%5ÀvF|°x)sOU(üÀz‹ûxŸRg|›*>ðrç¸è׬W鉈íÑá0Íï`fÕ®BÍŽÿóê$Êäø!ö$%Bý>ö·Èî8ºO¶æžqÏ‘X`Ú±¬ü¾ö°k¿ŒàÇíq<œ[»²ž¢e1ÝóèyíKSŒgÇÆô;Ðýið Þýa×Òeàe»2Ì ú€ï|Ï“%Í~…˜ ؃wäØÓCrƇÙÚÍ
+)«5[Ÿ‹Ã\´ÿÉ
+²Ì|’ˆ .QW»½–¤<á'ŸµÄïàAŘ–
+íkº(æš
+&îyÈ™`Ï3@ ñt‘?ŠYøÿ„¡(f)ÆjT(„SÌbõ¶m4ä‚ñ¾¦Ôîòˆx‚]\MJ£woñi|ašÿ̃º~µ›­EM-šŠƒ¬©¸‚¿G1³\^ví|6ƒn˜l?.Äüƒ>y°µ&â×råñÇ2ωR¬ ‚_Á’v-rîžûø5Ÿ.EB@úø6Êg²õʼˆ˜þ¥¥â ¦ŸVE’ú˜ÍiÂÕ({ÞóŒ‘18–ÎýÒè°×Äl»"ü–[LMÁ©ýœƒ{yöZò% ©æÙ×Wkzëñ6ËWU‹<ÔïohDªPYج/ }\pØ·t‹MJ?U qÊý$£dèi콯‹ŒÌ’eš?ù:”ijw(ˆ{Gwž& $;’-S_± Þºð´bk
+´0RX…뺘ÖA*ÐØ‘W°r²Vm
+G?ÌR™™ß@ã™-GE.³Q§¯kÃÜð{
+ìü VF¦òz–†+ît¹A(8úú¹ß¯UWÊIîgc= ,î;[ÛÁ¾¬ë÷òž°µMøtN4!DkÏS)â<Ã{¶TÆ&/~Ëï,òµßYèßò3 Æ®®a ÀۤПûõ¥Šâü§º|ôëI·©æò¹ÿw¥¼‡endstream
+endobj
+650 0 obj
+3523
+endobj
+648 0 obj <<
+/Type /Page
+/Contents 649 0 R
+/Resources 647 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+/Annots [ 651 0 R 652 0 R ]
+>> endobj
+651 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [85.014 639.898 98.953 649.595]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+652 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [93.878 84.937 107.818 95.846]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.8) >>
+>> endobj
+646 0 obj <<
+/D [648 0 R /XYZ 72 786.278 null]
+>> endobj
+647 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F30 512 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+661 0 obj <<
+/Length 662 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ½ZÝs㶿þšô!tÇb€ Ⱦ9i|q“ÚÄ3}hÚX¢,ÎI¤Âó9Ó?¾»Ø?$ʾܤ=°ØßîJ,"ø‰…‘ “&¡4ébµ#ô{¿ð­ï¡FÆZ…:Æ·W.c•„I¤K¥Ã4Ñ8þëû7_] ½Q˜EÙâ~ãÆÞ¯ÿÜVm±Ê/–J™ ÝÚ[ ´rj¬óýç:oª]×UIßÊ<_s«âyKißä-5¬îv4¬ØàSûe ,³±Ý®¥Þé::¨64ËH|(èCQ^üëþ¯‹¥HÂL%ðDeîXÛª.~2 Z‹«&q`KÜn"ƒ2 òî?­‹:_ñŠ‰
+Š†ºï¾©ã~K]*Øte?Pöu±·u±{æîWhórí8ÓÚŠ r³òƒ­ýMU»ãD“ƒØÃaûÄ%q-%ƒ§¢ÝbK–ÃÁ›¬
+7€£oº}uzî$^šÃe¤BaÔ©NM®E¦aû¤A—¸żÊ0¥¶õ3.™’J#&›7´ù‘àçk¼?)ƒ·y™×`ÉŸ‰k2NCë G<{í{8Ø%Š4_¥J“àÐÕø9 ª†{H{’aÈñÝ©”M2ªø™ƒ3™áŽ†¦N_᎒aÇ<ˆ”6uJ›¢× 7”]ÎkÛš7h›¦rG\l£ Óß×™¦‘œðd´
+øgZÅÙa|»ùË— _K£ÑÒåØð±hÀƒ¬Ük ˆáP»ZåMS<»¢E¥x¦ÑÈÃØ;nìŽoý1ð¥à§Ýá)\«i:ç‡Ü
+<‡Ì'öÐuVQ Ç^Š,îw¸O¼há—¶
+J»w- ØÖpþÄqY íl· 5V*!‚{wžCï!€ðCz¯o|^ïêúo“nz!7 Ø]ÕÚ)ÙÉÀ­EʼO€5‰-Ør²c¼:Ÿzç÷e…3ŸJvÈìWÙó`«Øçg-ݵNÀõ”¸©Ç®f‰°×3¸ãÄ:æûÕc1Å·µmíƒmÜ7=š©ƒÃÎð™Þ,¯‡(
+J}kXØJ÷1J0ÁûHiámà¾{ïÁUJFéôRbÒd#bøæ÷Ží)açÆÒÈ[Ù `ìÎûØËPëÄ™ï
+mOb8SÐØ$€›ôy¥<¯¨í‰TŽ4u‚Ú¼¦~¨
+ع–:øÓ½x‡aæÅÃÏ‘Ž¨³([jìªGè~£KÔ×,@%°V¸sQç‹Í˜0Õ‹42Y(|¨™ÏK@² ÷ûÓÔÐç!±±W¢KF€ýI”š9Éõ êLÃLzЉ‡òG8"¬Ò0¯×SÅ¡‚ÀO+æö ûRÐ^&¡€ù§Çìf-ˆ„H_¶$sU·—ƒâ}
+º†ó¸š¹pD„2õáÈÊ2” <¹Ï™Ô`ãú¸ß)Œwól0ž<h g² ÆhJ;¨ õôv–Õr?e0@Š€¥29v”¸Rr‚…ÀÿÆ.߀7vÕò0~úô‚„£ *÷Á°w†5]ÜŠ5u¸ y&¬I2¸g/\盢Ìgø e‚‡5DÚûS’Å=E(…Ûsy”;¯gˆØ‘÷ ÙãÅuûË™E
+O;O%<ŽÌ8åt%†Z(èèQgN'M(Tü)KDhzijº¨zÓ¸°t@M&xt¿ƒ„aÁøìŒ?žXž$ñxD¨ ‚ÙÁÓäJvæY(3ù[ò*Ë~+N`š1?Çpd ¾EǡȒߎRÿFl|ž0L¯\~BcÞd¦Læb×9U‘F2¥›··w?~ûî›»Ûë›s—G×Ñ8¯;c×€;ÂL‰^ßÝÞÿåêþêë«ŸæÈ. ÇÒž;‚×?ÀF”Ì
+Bþ3ðÜ™c¦½ŠÿgÎÀV¼±øÂ9kGžÀ}rFÒª’/:L—ŒôC–
+cÖE³êš†l׸bÆ)é†Î¡XQ§ïò sžsŠJÚ8 šÄéçØ鉽‘¨ÙggN\ç®`¨Ø žsy3:–
+óYJ
+5«äéç)9év2)ËfX8.ÈLÁ›p9XBÖ"ø©a²õšŠ;GåSq7‚R‰‰¥¼ÞS xÓÓ”Itª}: ö¹uhVÿoZR†*…qY"8àƒe£qÐޖšÔ.ë|‚Cy§ô ãSA8¢¡€†^©äI)ûØCc“*uJŽÓGRQúÈŒÒG.›xµk*<¨–¨Ë8kÄ%N룰™üãj×­9o8)ðïMR,Pb#›÷º ’q_šü4Œ(0¿ˆe˜ôPèÓ0¢ˆPêÌ(l…­ßlèÉYo<h:A`t‰¡ŽÙç-0Ðk_"
+ÔÐÃê>z‡¶˜džñ½õ†ÿéhŒõpPÅ“-=z\L¯Ç±²_ˆ“ Ã"‚ÿc€Ëñ>@yòË•õyU `í±äììäº$¥À%‡Q¢ŸË’ÿÓ˺Í?¢x«phîÅ•oM§äZu晕NٜΫ¾Ð°Ã(þô †7`i­q$­©Hâ¶PtŸêlü*@~÷Îîi)0ô·&y/ -èkØÔ‡u@þë‡u:Íùpt¹*}}—Sæ°í]NŽ³ê\l‹0ÒØÌþ©IýJ¸¹$|4d·^~PHëa_¯ÊjüûȪú?8Þƒ- Á§lÞ[‚É}bô(’Ã̼þ·!¡ç¿îÊ’@°
+endobj
+662 0 obj
+3588
+endobj
+660 0 obj <<
+/Type /Page
+/Contents 661 0 R
+/Resources 659 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+/Annots [ 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R ]
+>> endobj
+663 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [72 657.837 85.939 667.534]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.3) >>
+>> endobj
+664 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.787 522.345 207.727 532.042]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.3) >>
+>> endobj
+665 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [173.725 360.142 187.665 369.839]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.4) >>
+>> endobj
+666 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [256.922 319.495 284.801 329.192]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.4) >>
+>> endobj
+667 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [243.333 267.419 271.211 274.995]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.2) >>
+>> endobj
+658 0 obj <<
+/D [660 0 R /XYZ 72 786.278 null]
+>> endobj
+113 0 obj <<
+/D [660 0 R /XYZ 72 705.928 null]
+>> endobj
+117 0 obj <<
+/D [660 0 R /XYZ 72 252.154 null]
+>> endobj
+654 0 obj <<
+/D [660 0 R /XYZ 72 170.759 null]
+>> endobj
+655 0 obj <<
+/D [660 0 R /XYZ 72 134.694 null]
+>> endobj
+656 0 obj <<
+/D [660 0 R /XYZ 72 98.327 null]
+>> endobj
+659 0 obj <<
+/Font << /F15 393 0 R /F37 380 0 R /F38 495 0 R /F27 394 0 R /F33 497 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+674 0 obj <<
+/Length 675 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZÝã¶ÏKÿ…E_¢ΊHQ¢Ô·»\6ØærW$›¾´EÀµe[8YrEùö6}狲lëv›ôR X`Å!E œùÍÐê*?ueõ•-òXÛâj¹ûB]ñßû«PúÚXÒdiœ¬=#¸’‹4‹‹<{N^¥qš¦<ï«»/¾ºQÙ•Jâ2)¯îÖ$s·úGdâëÝýõ‹oîÆqElŠìùåd±ÉÌs³¿¼^À¢e×þ3QfsèÝPw-6ê[šŠjÏO_¹~y­óh[­¤G¤‡­ˆ®»¦é®u=Ô톛º~Uõ9ÿŽäj¡uœ©ü¿PTRªÉ§€Ö.?åOçó£>—žîðëŒÎ¢}ß]/´–•÷_b“ª¿öCÝwíŽËË¢Òð
+³ 0z¼Ç~Ôv¬» †•‡-2¾ÄùêFÛÉZ´)c­ó°"õæöÕÏ_¿{{sû- Ÿ,ܸòTd]»â÷ÔëðâC»ze“Gõàq< w£(¯
+a\ÒÈ×Y¹æpƒ›®Ëh¨ú}_  N:G$0€Z·«¸£[sû(0;5r–øª:ßÙ4±±6z\)l*¥ïžØN§çsÂTeZ~.Ÿž ©.é"5Y¬
+((g©ù`ü·G™¨íø9n”–´ÁꈞTå²— qðUÿ¥çò¶£-ÑUÝWË¡<CUðÍbF¬˜BGEÜåËA«™‘‚½5ZËòãA5õ=L{y`+
+eƒœ ½„Ó”ž¢ý¶\:O
+,藊󻌦#Kc
+–MÔåyÈÓѦ,€¾FïÚæqF‘'nWƒÔ®WM‘=x` ÕG·«gÏ8L |au¬tùyˆrö»e"€´sÄÖŽxÒ&5iARÀ"pì‹BÅŽûF `ebEdd+â}å@‰ îñŽ&6N™(¶°?¤äø\Uƒ«›Pö˾–µšÙ^tΈ4€»øŸHÖ%Í‚CDô·Ð¬à·VeHýŠ8Iõh´ŒN"·FŠj*#¿tmKàÇ¡× €·o€±bMEMínGfŠÃhs…¿'ãæzbÊš<Ô(UŽRn{[ãiò,°u\³õB!Q<P¬î¹Ú/.} ¡ÓKÃdT¬òl¤ÿ?ßÂ;ßÔ÷7BÛl©°Ÿ3ip}Ëå‡zØriŽ³”`ÂŒŒûÓ›7sŒÅÆydÁ]ÍZ¤ÍHK€Öª^‚µ¡íH­l¼²F­¹¦þELvn„#ì}©ô©1<ÏÙ“œQµÈa1&ÿ<ö$ÿ?Ø“2‹HU‡þkÐcGN˜Ô¥Ñæ¹yU-0)+^Š«ÀÂÄ a· ò@Á+2!`žßvCF¡«á‹šóõ²žl\ϸ€OûZ±ÿ;tS‡à)Žþº6`Ò:!Þ¿T}7à,{‹4ý™Ò*öwO«úƒÌm˜‘S„6_ \ –SátTs!¹L›gb†TS¶‰…ÂkÆ£E´¢È…3rúPäò°R·,KÄ°aÏ…]G[Y”èÒ·QH/ÒÌ~Àµ§gI„‘Ž+¶©\òCX‚!"> uŽ •X'Ž ÙSÒ“ãLpŠû}CÖ¤k Ï™¸Db³ÚÙ &Þ\喇§WãôGª Èl/7ãꟲ†zBÅcAÜG‰
+®p~ 2;øÂèõÌÊO5˜–)P÷¸¼9#S¨¸,ƼÄã¾Rn½›6ÂX™cÎk.1§ÀTC8sµ(“Xçê×sF3Üšßš•CÞGàa[/£[ÖGœäÉ|½aK52ðD²-‚Ü°Æ=N'ž˜kc|[r†Ê‹PßídÂÑ&æ öéÉM6gè°ÍÓCµåÅäìéñ9¿MRõˆ’óà/ÛŒ»Y
+¿rì' ‰¡%ùþQW¹™˜¬Ñ!g
+¦ åBבqcmž'ÅI–fWo¶ÁMÏW § Çø¶F櫽[q›_ãpýà5rÎõ%Á¢>Üûê߇Á¿ æ{ð›Þí)q¡3N‰âX0c\¯‘J‘I*Ç,Þ³Øv\4ô°Qäò’F+ÿ¡F.@­%²¬P8·ø©6'Ÿçx&Ôslù;Æ‹]ÈOý.âŽ<G×i¬¯
+ü{tSSÐ_¤Ñ×°¼û黆:¬~ÀÌ'R°`ÈeY [Lô:„UXÕ˜˜¶‘i$È-×ÿv ´•RF—f —™ÄYÉ˼©{?¼ÀO·díµåkm¡¾‹Þ.€NKºIÛ<¢Ë
+7süÌN¯pÎÉõÝ‹)9[•ÇešŸ
+×M·™çi™ 3ÔÛ€·³¿j{LœŒÁ2…Õ—³‚åÑqªÏn¾}ûî‡oä*ïæöÍ73“—èWÇ›Léè’Òcò“’F’ZÅvÜ\|ApìSQõ)B=„¡î%%±¬q{8¥Ç}8™å„±L²X
+p^> J‘‡AÀxóîíÝë—w/_½üqŽ*AÏpL|Ã:-ã1-Ñÿz‚#–%'‡ý¾ ƒ\¾@ï1=
+KO®°ƒìEV
+ÑJaa.ö; êp'”½:¦äèUk~®í2„§Xå
+†¯³ä&PRF)=Öèâ“&hçîQ¼?ÌÜÎ1`š¤`µŸÍQk°Ü)YØ'Ú^\°
+endobj
+675 0 obj
+3181
+endobj
+673 0 obj <<
+/Type /Page
+/Contents 674 0 R
+/Resources 672 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+/Annots [ 676 0 R 677 0 R 678 0 R ]
+>> endobj
+676 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [430.514 711.621 444.453 722.53]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.3) >>
+>> endobj
+677 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [112 548.969 134.424 556.255]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.2.3.3) >>
+>> endobj
+678 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [226.639 352.27 232.093 363.179]
+/Subtype /Link
+/A << /S /GoTo /D (section.4) >>
+>> endobj
+671 0 obj <<
+/D [673 0 R /XYZ 72 786.278 null]
+>> endobj
+657 0 obj <<
+/D [673 0 R /XYZ 72 761.372 null]
+>> endobj
+668 0 obj <<
+/D [673 0 R /XYZ 72 580.55 null]
+>> endobj
+669 0 obj <<
+/D [673 0 R /XYZ 72 499.355 null]
+>> endobj
+670 0 obj <<
+/D [673 0 R /XYZ 72 461.169 null]
+>> endobj
+121 0 obj <<
+/D [673 0 R /XYZ 72 285.535 null]
+>> endobj
+672 0 obj <<
+/Font << /F15 393 0 R /F33 497 0 R /F27 394 0 R /F26 391 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+682 0 obj <<
+/Length 683 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZY“ÛÆγò'˜'cS"Œ¹p<®¢Ýò:>¶¤}HUœRA$VDL,
+(dø°¦åù”C £C_7ï®þöðõ³›‡I­cSðj‹ËÂ_Þ¥b•kÞ8ÚÍlDÝ€èN»èA½y] ·m3¼„Mx›ðCâî[mÊŽK|¬·USî°SùE/]œóeZN &òEW-ŸÁÙĹ[±SvaòXi3Ó ãMæ;TçyÆýÓ'±MÍb©âÔe£\ÆÌÈu‹‹;9ü<.´•~ÎËpÂ6ÎÁ¸‘n”ÓØØÄUéÌ:—&6P^¦±‚ñçrz9€OfR8[ PùÓçã÷{F[Äù¸ÎºmJ3ѳ4ö¤ŸmÍê]uÒÝroÉýСòQy…–
+þ³„6õ\äÔf"W]×´ÌÀfBÇ+BæãFã |þPÚ¹™ÀñvœéæÕ«7ßß¿ùîû‡7÷7¯¾½{x¸y93¯Ò..À´ÇÆYo¯rµWÄD
+9†‡rËëX±‰dj4‹|Ú7“ÀÙ9{´oSœÒ6 ¬ kxvøß$=«ýŽŒYl
+`û‰Ç¶o¹4n¯¶ù¨ÇONÏXÅ‹ ’òIR~ä
+nÒs(æ¹levä_²,Ú¡|‡^˜L!*Õn?ÐÊÿ
+t&‹î„™(™2âötÔVà IH•Oã‰ë6Sö°ãw~h%Òýtåà´êmùv+À&Ü2
+ašö0M Êd¥a'új n)zòþ_³Ñ§hj„“LtÇÆ»ÔIJÀ:4ºÑcëñ&CȃŽýöstæâl°w_v0zÍ™M)Às¯)h3q,Zhèt‚Up¥ªaº¹ RP`§&Pp}óÝË7÷×_Í©-\ž¿švvÁÈOOüî_Ý<ŃØëqhfLh97Ø+AËVð¦U¾KÉ‘Mp¤V…Aúúz·§
+ðoÉÆ™Odãìçfãòÿ^L©‹X£’'…ûMn¿ø|ÍÿÏ÷_zg
+ÊnÀOö„ö(x[ç=!WÝŽ^šBèúôØNZ7À…¯[Àˆ ì+Äeƒ Ûîgä‘”GÕ5”Y„…ø£0›ù˜€¥¾8þs3×L˺±)È¡e¡÷Ç'‘¾i… ü}µ¢¢˜¢wk¸žK"ËCäì
+
+»œF›}9lúØ¿QœÝDÑ|^UKTù—N(ïaÆxœ*¬2ÿŒ[)yh»&6ô®3=ãåuî±×#L•É=ˆ èâ5Š²¹fÒ˜ÃÇýL¥½JŠXÁ”—A Féì P’ÇYú9˜Äĉµÿ˜$|\j“†Ztþd¦²_þJˆV7_²˜§«F70ˆ¯Á
+
+äðub²ð£#oÅV¾€Pþ±šZ<⺷&%à ^ö£å()þ ¬T¹
+endobj
+683 0 obj
+3112
+endobj
+681 0 obj <<
+/Type /Page
+/Contents 682 0 R
+/Resources 680 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+>> endobj
+679 0 obj <<
+/D [681 0 R /XYZ 72 786.278 null]
+>> endobj
+680 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+688 0 obj <<
+/Length 689 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZÝÛ¸Oú/ø­róÄ/‰º·¤Ùí¥Eï—úÐ+Ŧ×ÂÉÒV’ãìýõáú°eïM‹^ ¦ÈáÎÇo†Ë1üã‹T,R“0‘šÅzÿŠ/èßÏ‹Ðú3ô¥Ò’i…_Ï®”LXëÅJjfôoï_}sËõ‚Ç,‹³ÅýÖÑÞoþÝ|élµ)ª‡åJJu;‹ ýsUº¶ŒZ›7ë¥H£ÝcÞíZìѧåJ˜ÈnëÆ.ÿ~ÿ§one6bÏ 4¡‡É« ÑL¶  %x Ùv¶¡åŠªèŠ¼,~É»¢®h_EKÛz„UÓ¨nÛâSéwzhq÷ÀþÕÍý !˜Ìè7QÙe™]–#çŒAòvòéŒüŠª[®´ÐÑ=ÿøf³¹¯o‹Ò~@íî@X?Å:¦ñžeØ==Ú×'ýûzúÖ»¼¡ÖÊ÷ñpÈ•f)lf•1¯°Q8°Y4v±}*ÀŒ^ÆLâœ^–êÌð„“Òø I1S‰Eb±’½¤œ‘Ãí̸_åÇQá ',@Ðæõtý9¥bRÂ9á¸<™Ù'ìKB{•0óÏÏÎ|R™€.
+J±/H˜¸tM¿Û®›Â‹Ìo1'5¨Q›>ãÖqÐQF›ÿáÇß… ëzOJ¿â™`pW“«þTT>¦€[C{9?£6às‚zƒO¿»}óöãÝ›ûïfŽ™燉öõ 3ð7q2ðzsû—+¬âTž†Ë 3ŒdZ Ün¾ÿÃUnjl£‰ùi[YlP»džÎ¹•$^“€¦C;—TSÇ;H¥=¸.Ò¯L² ÐÅX¾Ö  sÌQÊhÂ_Š¶#c‡Þ©"SßqW¬qÿI›’ƒÞ^kÑævvNPn^`auξS¦GîÎ+=z¡¢÷ñßãNmG¬UÀâsF²’ÐŽã©`ðòïîn¾wéÆŒb"Üm=k{’¥‰éå7Wùih™^5W2ÇrÆÏuQ aU*<ìƒÎʱÁ½‹“IÖ»¸]Ò Áâo>$×÷7…ãtƒ¸‘%<6vB¯xêA|‘!Õ±!ˆâWhAD êÑäÀãéÜM–DŠjíÙ8MäÉÀ.=g7Õµuð0âÌ~«ÚOª‘­ØÌØcSt¸ÌJƵÕDOs~¬9MG¾a;ir½\¦àÜÄè~c‘ƒ.¸êöP­=v†/ I¸ ø£K‹¥‹5
+C äÕˆšÀÅhžƒû®£n<ýÖ t¹1@°l")˜wÀ1\&“qhBƒ“BŒ1—„
+Î1DÊŽ—×Îo‰‚¶>±ŒWù\@<<Ëj4Ü:’§œ%æ?˜ÕŒÐÍ?ÚîÙ¬‘À¥%û÷r”ä¥)ŠúßNQÔWJQ¶dz†´œRwÈ &* £+9€/Ƀ¯³«POHâïxæ ,\©ôè²%îÇy3BèÃÆhË…§mlwh
+„Ó ´ûeN°,Ëža¥^†ßÀÎ3q È…Ûwo_Ä,¤X(Å> $OÁ–¿
+‰§J§(úý'B‚ìbH1ò`Œ]ð7“†ÐŠdxÉØsºÂkü4¤ŽH‡½ :r$Þç]À*øy,*ÏÅycZÉiL¼²æ XèkòR¿Ã¹O´sA¼(!½z0…†€éì˺­ý¼ô‰
+`'´68­n6ó9æÙqö• p;F|-íL|©vöVQ9¥0/ÓÎñ¾Éî;ˆès[„;LŸhã3ìÁ§Y_«ÛXžA¯£)C‘ZŸY$ä÷…!W ¤eACš°‡NÆ`
+ß(›Žð#\z·ôx©ˆÂ¸3@^ò
+@L™LåK"@fþß±gïf,ó™#¥‚A\•‡œ*Gs^ÂÅ^ç ¤<} r+Ð#‘+é2*ØÞfÛº,]>sôOL Ä.5 «æFýëN™¯í·§*»W”î3/_ V™È‘âÎ^òoOù“Å<û®†djÄüÂó?Ê(>À™Ç¯iAà^w‘
+?cÌáÀqg]qoºê(ze“èDëšÊJ¹Ã©Øc«úð°›A–{ ¸ù‰êà.Áï®vŒÐ8pûp—!Xå%~µ,P*A"A£«_Ó‹íÒ\¿Ë^ïÈH•×=7À‚;-.UùÆÀ#”ÎwO€º{?JY’¬ZÙãÇ÷ïf\zÃDŽêV°Ü¸.9²nð!cý¶ÞBro\„Õ±5·€0o[¯…[Ðy,º]˜íÔTö[àö
+>Ûk_“0¾ÊŽ!í6Þ™§¤*s[Ĭ‘ñ˜O”d%ævªYŸ|_zg‘ý»ÐJ^bÑÿÙJã½Ä dçD¶¤69]no¨a#Å÷Þ"ôÄJD~";—Ð!ðÕJŸ¥uʧuû}îV3’ÒUÈÝ\ív ÌwÔ‡mB0úÄ€²Ïƒ®dvþUEh**²X™£æ.ð¡È–j#ãú~û2 ŽÌ!b•w'Ë´ö3ý©D^úŽ.pJ¹uÿÄᦆ§(ÌAe½·®yîI po{Ø%ü_cx@»ËC\iHÁéPׇtg¿‡ÒúxR¹üîøíňÁÅD,ŸsêBp&1g¸îÖEvºo…¸6þ A‚ˆÔendstream
+endobj
+689 0 obj
+2977
+endobj
+687 0 obj <<
+/Type /Page
+/Contents 688 0 R
+/Resources 686 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+>> endobj
+685 0 obj <<
+/D [687 0 R /XYZ 72 786.278 null]
+>> endobj
+125 0 obj <<
+/D [687 0 R /XYZ 72 408.62 null]
+>> endobj
+129 0 obj <<
+/D [687 0 R /XYZ 72 148.374 null]
+>> endobj
+686 0 obj <<
+/Font << /F15 393 0 R /F39 496 0 R /F27 394 0 R /F33 497 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+697 0 obj <<
+/Length 698 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZKoÜȾû’¿ ä4xh6›d7kxÝIVNÙ h [ÆRKr,k}êÕ|h8’µØ] lö»««ëñUõ¨«þÔ•I®ŒÍ£ÄØ«ýñºâ¿ÏW¡ôWhã‘i¦£,ÅÚ waäNg‘ͳ—Æ+i­yÝ÷×oÞ}TÙ•Š£".®®oiÌuù¯Š¶ÿ¾þË›ï¯Çy6Jmö29Y”félõ$_Yý½¿m;¿Ýi›n~lª¡ruõ‹ª¶Á]ÏHÚ)<aAS?ø[wª˜›Øͽ=­—›¦•ÎÇ-üçníýpº¶»4Õ›ïÝ»<lïêšÇ´·ÜÒ6~Ù0<Ó•˜]In£8·r¤kõŸO~ˆ¢è§8‹áŸZ9IžGñ'Üžš=žXè/}¿ïª›í.1_âd¸PFy¦çw<¤ÝÂ_è„0_çÜM]õßsƒãϾ=Þ×~ðõ#×ÿÀ…Î÷÷°Ì2¾àr²29•™9§´ œ‚!ÄhaNÍÖ9¥s "?1껲|žQ;™AÏÎØ•Ñ_ß”RÁ]¡P\8tà™xlÕ,æã«8N㎮i|÷*N×ñˆ}çÝ@l51±2/l‰—·”ZÙ_'›Š8¥7÷ÿRµ§žï%±•öq¤ÿZõƒ/Ï®x“\íL•ü6úžü®úþÝV« j¢ÕÂxPü÷þ®jšª¹ã*‰Ð¼ÿ•†a.«a=l}¼gŦtsK7 ,~8TóIŽ»§+8¸2ÜÎ Cj†ò‘+¢­¾áyþë}]í«!\)ËMɧžOªõ%‰çÒþMÖÄ ÃÎW„åŠô5j‡+ªbÅ>Ùä|ï+68ÔÂÆП`aÔ—m–N H§›ëCÕó°ðýIét͘*Ù°u´B[™Ñ„ü™—âk„]Ed`ñX¥µã Ö6Ž—Ƴ÷®Û£ŽÎ¤¤—‹mʲlÅ…
+d½ûØ6Ã7¸÷®÷+4ZYˆ!  …[bð*"I%¬së\Öo°*׿~ëßU¿?œ:ÑcýëÕ6É‚êaÉ×þŠw5`C¶A½ã®Û®=r‰X‹û¶Á»¿;u¼+4&Ah@‹›°øv]EæÛ]#Û¡±¥3ð^K£N^;‚°_´ð±ÙÜœð†c‹&¾÷ݤ3qAÛa×´ÖV·Ãá ‹ ÅÈâÓ~dà¸ÕÝ‹¡kJYø×rË!¬Z»að]4?„Xb§Íлá–X”-¹HÚ“ÓeÙñ² •¿§Í–pSüÖôè0ÐÒ¹\ŠŒû[Ë–ýÞ‰3 é’Ig°t†k¼Ú³ Ú£Héïë(oáffîo®IdáX¸,ùÄGÏü懑IØÌv7¥ñjãGwKÌ«}ù¢‚~‡â5 ÄkÁåà@›wpRjÑÞ×k¦ÓFÆä¯AÇ&*²àÖÍq’D™Î^çѦ5g b&8B…xÏõ€gl»Ï|6×sëÉ-Brj;5;v/IŠî·X°ªÄ»cÉÌbÅ2¹KaößÛ¡Ú‹ 7°þ07qüýaêS~>òîÏ~`ƒÛï}ßW7¬5ÁÏ;W¸¤¦t])‹†yw®ú"aà—zv`})\Ê6?ŠÃj›z‰{ ´à`#[Ð…õ€rª jÜ3:¸ÉsË(åÊÒ ô*ƒoAð¼ð-ŒÂg”»¿µw½(9ÇWÐöq[`´µÈ(ÖkÐï‚„Ža&]2i¹&6AO6á%mÿGƒrª•Â¹dZT,±5è-_#T)–‚/o…`Ÿ1€RÙÔpƒ ƒbøµðmÈI?påˆRx"F@íf„ï@Ùܯ–ÜD”°%gxîŸ÷µ(þÿÁÃ!ßrˆ¿ŽÅ­ŠR•½2²¶îètT•$Ùˆ|v‚„#i":ÉT©Ûæ]3Й;^Aõ¹tú8£m24N‹ Û&‘5Ù‚mg¯¬ªëÁ²ÊEƒŸ?uQ®"Ä‚É¥(³
+ôC/‘ø×ûB ›Š{„ÙÛR™Ú¼¼ÇB$¸n[•*
+’9¸Ïcg e³aB¢
+t«h÷Åd™t
+„°ø©íʱô×ÿmÆ””ÑO®}ïBŠÆ¤ì§YzŠŠ³š4²©Ymˆ—AC…"ÌÜ°óÁS¤q<Y)Äû
+,·øiÔ*±0Ò㺪—IDO² ëã©°eÕb»_ tdÚôå‹(&1ËçÅÌ`Ý.ÓC&ãÉS:ˆ0þ#ŠHÛíñ^Îé3ETŒ)«‹äH³°°$
+_=þËßoÆwà_­ý(0nzòaƒÍµž]bÂâů5•¼©Œ'#lÅ­EX(<Œp#.»f vr’…w}Æ&,•6–/ B—YlmÆ· #™cŸø
+endobj
+698 0 obj
+3164
+endobj
+696 0 obj <<
+/Type /Page
+/Contents 697 0 R
+/Resources 695 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 653 0 R
+>> endobj
+694 0 obj <<
+/D [696 0 R /XYZ 72 786.278 null]
+>> endobj
+684 0 obj <<
+/D [696 0 R /XYZ 72 761.372 null]
+>> endobj
+690 0 obj <<
+/D [696 0 R /XYZ 72 689.612 null]
+>> endobj
+691 0 obj <<
+/D [696 0 R /XYZ 72 626.449 null]
+>> endobj
+692 0 obj <<
+/D [696 0 R /XYZ 72 562.68 null]
+>> endobj
+693 0 obj <<
+/D [696 0 R /XYZ 72 500.123 null]
+>> endobj
+133 0 obj <<
+/D [696 0 R /XYZ 72 351.587 null]
+>> endobj
+695 0 obj <<
+/Font << /F15 393 0 R /F26 391 0 R /F27 394 0 R /F39 496 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+702 0 obj <<
+/Length 703 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZÝoä¶ïó½ô_XôI.nñKúàô>àĽwòÐZ«õ²·+m$í9î_ßÎP¶l_
+´E I†äpf~3ëþÄ*“«,Oc™å«òðB¬èïÓ*´¾ƒ1¢ÔFÅFcïµViœ&fµV&ÎSƒôß\½øê0+‘ÄER¬®¶žöjó×è§íÏÖJ'Qiklˆèúl-³¨¢Î¦©+z¿mZjô;~wu&óèî8%ôØ6õ™,¢žz?'Bï«Ž:ŽŸvß5ÄäQÓuîz_…ïy®ó7¡óx‰=Ýî\y³îè¥myuUmªÍÙß®¾]­E*…'Ê­ð›mp‡JE–4qÕ®'ËU:º¶ëâ³µÖ:ºò{…Áí©.{tÀûÅë«QÚRƪ€']Oœâã&D,rIëJf åjXž‘&º?TýùöðÆí«wöPýœ˜„^ 4ošº¿xõ’:åζÔú£Ý>Öô‰;Y›8ƒ×9¬¿`5ƒÕÀ®òU[­¶/@¡âܬŠ8q* “jáõ:Ãÿ4¢ÏóŒ^j™Ä:U °X(=ìU©…½¾ÁµÝSØ<.¤æ÷¸ã°…{,@˜¾è†m*+Û„ÝŠtak+h¯ááû‡Û û
+‘?m\v¿oÐFn;Ô&°œ†ž]ÕcC)áHÙŽûª¯høh{Ðl­À*¶üe ô¡UÁAƒl±û¦¾qõ ½s _ŽJŽ=·©j\ZïØŒÿèÚ[4‰u¦…D%tÎÇ«×Â!¡áŒ‰ê%Ù¡6 ‰˜"ÎóùÌ[_ë6~Ñ* ®%/Ak­ÚÚîi¤«l;Ø<ôõlíºX«1X«÷.ðv0WÏ6Œ¢LðyM†ON ÷m»…)Ã
+\ïìÞýÃ2ŸÄsêýž’ÙfXúà³cjxÐDþP ™Ž‹âyyæ±Bc$Ð×}cÁÉá–AA.zl«þÔÖžBG =Ü–ÞÁiড3£ÖÝì¼Ð[[o J&E,U°¨ß-Z¦ÎÃ{AœA{ëºÊ¯²ˆ.jšbÌÞö(i¯ J‰8aGm<—ÒvÕ‚ÌÀÕê´à™À ‚îÔÍ‚tç*HíÖáîe–2âÈ,;Þ±aǶ9¶ÎöÕþî,O#Ä
+Ãt¬Ðð
+O
+½íí5¥ïílG €qßBC±õ‚4U
+˜šÈ/fQu`oÖº
+ ›ä‘ƒG‡ðg*€ó–Ýñj8Qz²‹Ç°ÞÄ4tçpØêßõÀ-ûe`¿é<ä“n„zÒU¦¿ÓEœšì¿‹éÙÓ)ôÌ= ÉdñJ2ÄÀø/§ª½£&é• Á¬Ø}„(ï™Ñ#ÀFLPí]< .~$åØy€Kž±áÅ„™ç&d¸ødÖ;»Y
+ƒý.8©’½¨¡õ?\\
+9ä(<¸0=—
+ðS>ðƒ
+
+ÄñÝ\ÙËÎ
+­ïžð_à+ïóYªx¼²ð83tÆl à‡ÁO¨º[ÐæBÇ)‚/~’JžYŸ­…”UÓGùä#“ÇIˆˆ{±w× ŒU‚I4ëË憳 ‡ŠŽ k˜’B{ú®öaDvœzt¤j0ÄrÍÕÛ%ãO
+³Ýâ 9ò§Ý£'ôíšÛbu-²ô9pÑ@hƒ^·¾9¹n‡še´ˆ4>`½Ó¢|Gc¨
+øœß §$’LF¯mÈmc?¯ïãŽ9ÚΗ+Š¨t„?~Ñ&IâDf³Ýÿ,”mÙWäí÷øú»N‹XB¶
+Ÿ«8—ñŒ‡S©ñɬó÷÷§¡þYÿm8LÌõ’ÿ~èDøÕ%î-…½‰¯NO€02¬Ì N'’®.°Q6uç
+y€>òé]‚‡b¢
+Xl+K­[çGJý€lš®ÿP¶îÈSlÈùÚ–
+z0BñJ!#æ4½Ü½§«§ Þgn„¾PØVaБ¯ÜpžÒüy˜ÒùQé¨R…=òÿØâãÇo'ÿ6 7è<Üf³\—c†Ÿù˜dÌa´‚³t5§ËÉÈ„o%OÜõ–hº04bp7|Ã;}Ü:K¿ö)l©¡‚E6ræš9©¨¯lRCUÄFŽ•
+ÈË?¾~ÿþû÷K™yk]Lnœþ$°˜ñré²9‹IE¹þtþþÝÅ»· |!7.5å+ßWçW®.þ¼tEVÄÊäSÎ*”_ð—^"bvg°|ý¢â៦|õú›ß. (•³hªñB* ¢óýàfCMï$Âùù»]NðøJ¹›Ý/ðUûï–.‘«_ïM5s9\|È™¦)LH²š+9UsJÖI2YÙ
+endobj
+703 0 obj
+3411
+endobj
+701 0 obj <<
+/Type /Page
+/Contents 702 0 R
+/Resources 700 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+/Annots [ 704 0 R 705 0 R ]
+>> endobj
+704 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [452.726 508.991 466.665 519.9]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+705 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [123.871 432.842 137.81 442.539]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+699 0 obj <<
+/D [701 0 R /XYZ 72 786.278 null]
+>> endobj
+137 0 obj <<
+/D [701 0 R /XYZ 72 493.877 null]
+>> endobj
+700 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F37 380 0 R /F38 495 0 R /F45 706 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+711 0 obj <<
+/Length 712 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíisÛÆõ»ÿA¿±éêˆìË™~𥊓©Ôº¦ãˆ%‰X
+ëÙ\‹Ð˜A­'Äy‰¼}öRF£9Ф2nÅò"¡
+HBOš¥RÁ"¯*<…óX…|è2<nvoqÜ 7µhÜ·÷
+ÌG{‚C
+â–zñà >·7»ÕÃ&9Ú©0Yb9Ë¡+„W=ø‰®‡`>×&Ä‘7.:Ÿ‘Z #©‹)Ž¥Pi²gøyÉâ^5ÀEk)²‚Ý/ú’ÏNP\†Ì’*%=à hÜ ½N™“„49þæ¤M2’¼oFÞˆ•Ã ç3ȶu±û05éØ¥³-ι‡lsÐÆ^‰Ö ¥O_Ô¡‹†‰±‹¦ðл  ÷»Ú‰‚/Ø’n˜T{þ=i­ó‚yÕ[ŸuMx,$C: Æ~°›/{D‡M<'ƒnJ` ²ÿæ$Æà”T¼·ƒ1€\“ªI3ÆŒB11Lô¬Aô2éÌ‚Ú`+=åŸØ$;ö±˜6qxÊÀ‰ÆÑ8äŽ]Ÿ`òO†øÍ©(î,‚;9yÖ»µÛ7ëŸÕ’ÆÁ}+ȱz:M<}Ü–UÅãû0 ðÀÒj*{p[ËåçíºÜt¶Z:CdBv*fú®gkry 6GÜ”¬Ãæþ<ôæâ jÇgVÜç¼%š[xåí:gaXt Å_$L„û)w’þ¯
+áoÀyc)¼¯‚øpë÷Ë]½x[¶îÏOæ6ÝêmÿÁO–ÎnPñKýÑ"Ú|¢"R‡v*ƒ‚â$QžÉýnNy*)Â!ò‘MGTOâÇ%¦îHÐ1‹¸ÀÑ&ó@œð!ØryçSw†
+1•˜f"'“
+¬è• ÞAe ã¶fZ˶Ùp 5vJ.Ã7õŽ®}9•&‚‡rIWä“Áô¡AùÔ÷èVD$¡×oQo9ˆÆRz ¬Šé©" òèÔ;Ûgˆ²1oXÖ¶p^.Üý€«`cŒÁWøz`!ÛväTâÈ›¹õ+É÷Äšï ¢ã¢@ª’hQ £}·€Üÿ¡i–³«¼]í|
+Öñ%! ˜SUñ¦’ËHȦ§ô Ugæ³M
+«÷düÒ›ñPvË®P´ó7MûŽøIɺÈGÙnÑ–îZ°pΈ»£Ë‚ÇȦÞ{¶ý}‘¯``ÜŠ»I(2Ž-iH·šËËåQf5D—:¯ö¨\ÒÆÓœ¸ÜåŠ>—\QrÚº»ªu>YIÇPn‡é*UXhy•ú{ÆĈVŽeúC.x¶È¹Öˆ0DºØ‚Uìí‡|³­0š:`®H á3nšsåÈ ð¿m¿ÏFŽD“"NüIú°ªî¶ëO>œŠÎ9jJx‰àèjœ„ñný`7¸v” ÎD(… ÌKfTÕNä$Éèb„oí¯®Ÿ\_\]_Ly€4í™@ÄiðdÓP(†fçËE2‰w«ì¯¡òÖ!¥á2çöŠ¯Ëq­Û¨!_À«sžr•‚â{B8ÁÅV¯@ éáÅ1~ˆ%oxÕ:ß/žpÙ¥ÐõÁ² :#ÄÃwÇ3]o7Üâ`€èúÖ¥YÊ¥e0ÖBÅEçAù« %Ã}+µùÕo¸=~Á.½vtŒ+ÕÓÀ}òá¯íùŽë½zÁ·ÒÝJÞWôÄZdqöCŠÆ°¯yL CY’Žóc<>Wtt r(ê~…†/w7¤Á¯ dúX%5õt
+o¦R‡‘†¢>*$¼Ù¥ß~¤®Ú‡…c©Ñá3™(7S[÷[ý‹õt"ž€9ÇŸ"Ÿ||èﶶ°K~
+endobj
+712 0 obj
+3189
+endobj
+710 0 obj <<
+/Type /Page
+/Contents 711 0 R
+/Resources 709 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+>> endobj
+708 0 obj <<
+/D [710 0 R /XYZ 72 786.278 null]
+>> endobj
+141 0 obj <<
+/D [710 0 R /XYZ 72 231.36 null]
+>> endobj
+709 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F46 713 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+717 0 obj <<
+/Length 718 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZKÜÆÎY>ä/,r 7Ø¡É~‘tCXŽbÁ àb!Ê¡—ì!4CHŽ¤ÿžª®j>f¸»¶o¦Ù]¬®®Ç×UÅM¯øK¯2q•å&Y~U^¤Wô÷þ*Œ~€9¢TZÆZáÓ3„%“ØHyµ‘:ÎFúoo_|ýRdWiIqu{ïio«ÿDu3\o´ÐQåúÒ5߯ÿ{ûXÛ¤¸]±¤Ù»û᧺rß:ÛÕÍöIÚ®Þî%ÖKZ[}°Mé~~’!½%¢MšÆJ«éÿˆðà†®.û5fÚº"¢?_¶Íð7[îÜ«æ¾]#>5}½m¿°o›-îŽÇgeøþõÛý}d*D¬Sã×ïê¡Çé¯_¦zf‘Ç©,‚MúëÊ“ÈÂOVDÇëÈ¢¶n®E ®£Ù¡%¢açh8ì‘Æ•l|½ÉsÝ®­‡Únk›ú3žÑO7ø›Gûºqý œ$5Q?Øn¨ñìHñ±v¼?ðõJ`Ñš;¢Ì&rÝ¡íÁ|2‘ž'ˆ¤¤Œ¾³%e‡ é(—L’èXr{šFñ÷ÔŸì~ÿ@;v®w¬‰Šà´¹òn¯îiÆ+
+ëjà½Ûó5fÅ ½8*jZ>mè7˜e‹†AŠÃ5Xë´êãÞ3¼‹ŒrP©L“°é„ùÚÎÑàh«ŠN&XÛHùÙumï_O£¾%ÊagY‡
+Í¢ÝÄ•(¼íÂAnz$¥ nå¨wäo§¦²ÝÃu®#P¤†W~lä«Çµà£h9YÆ;ÛÓ ié÷`»mÝðä`ßãÞ®¡GÔy3r¶e {ò®·—;€FAÄ<*ËÓ±ö
+ô2­åP7õÙ@Þ
+­UP ÷1±'›|Ô˜›0Q¶?ËßT“ %Mõ»ö´¯è½É`ðî‡km@µu…1dð˜íi»óûgÑ-:Àñ.=ЀÃ߬x)FæidºÙÎÏ<BdM´¥£Eºɽsúˆ»ý~9‹(ŒÌúz8Ù¡n›@½s³·Lútï’Tù[J*·¼Ã©qMÙz š\gÅéw™H4ç#œ½?ÝõÈB€ „wè:S­ù¥†Ä°ÏÅ
+žŠAßõp"Z
+!ƒ5ç 5$eúù<Y²‡†ôx•9E¶äë¼Ð}:îmãÃ’&<Lùƒ×Áá4à f¡pq°¥ºS9¬¸ž˜6Á÷®„ŒŒÓB3Ù„‘=½HãÛîÀ²ŠÑûE®|:ƒ$xÑaXãxhià‡_d³ãà,FqÊ6ÁÏà¸IQÌ/Aº<¥/.ºz¼Ðž»~[(BØOžÊà~YbÌH=²yÑ]ëVòµ[œÏÉxûŽ/öº ²úößœ{ÑF
+ˆ¼D@=UÄ&UϹd
+ÁŸ »ô§ßÿFgÕ¾ÐHž®åØibë+¹ßÉ“8ÍS¦þµ¤–¦éIa»½ê#éç`=L=ÐSHY/µÀ¹ÙK\=3‚™3ÓûLÕ‹)“yÂRˆX‰
+(±X•_Èó„¯Ò˜O¸)‘<ð°ôsVwø•ñªfáæWµ·ešDŸ6%•×m5–õ™sRp£ˆj@‡*àöѬ"&:_áùŒ‰þÙ0ï’Ë3X§:'{àåz ßw©TÈž(©{ðZ
+b¬—û‹\âwû’nôóf꪿ìj9ó7š'
+oô®þÜ’…,Ö›jŽYž$äü„¬èx¾ªPá¾V³¼LqÞ«¨Ÿ¤Ô™·±“‘DsÙÐ
+endobj
+718 0 obj
+2831
+endobj
+716 0 obj <<
+/Type /Page
+/Contents 717 0 R
+/Resources 715 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+/Annots [ 719 0 R ]
+>> endobj
+719 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [383.211 481.891 388.666 491.588]
+/Subtype /Link
+/A << /S /GoTo /D (section.6) >>
+>> endobj
+714 0 obj <<
+/D [716 0 R /XYZ 72 786.278 null]
+>> endobj
+715 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F33 497 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+723 0 obj <<
+/Length 724 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZ_sä¶ ïó½ô+ìÛɯ"Š”(åí’æ7I›iÜ™všN‡–¸^Õú³'iÏç~ú¨•veû’·Œg¼‚$
+zkjÇ;Ƀª9Ô¶áµÙ2¼Ú&± ~èzÛa×Gügûk¨ƒqo{ûv ‘†˜¶MÕò’ïM[Xz÷f$ê¡k\Ÿ:äB'é»GÞ?´î®¶8/11e ¢Â]EËíà¤R»ãxì‘VÆ°µÚšÁ¡£i˜Ë”%3ÅK4¶AáD6¸¢þTJÖèÝá°¢ó8
+3‘Í•.'ÅÂÂÆŽ~‡±ëyÚ‘æ—AiãžÖÜí˜Ü¯í®s
+óØ,žßÅ ÐIã&ºi§R…Ž)nÄw¹Ð­ %´·i(`üå>§Ó®B6…È^>ôïЗŹ~‘M7 ç‹OQ:§“{½âÕ…”¡’Þg“…¬G‚-'bîÙaVC?¯’<lUÒtUiéÌW?GBÎÑÝŽ þŸâŒãà<¾È=CÊÇ‚›‘º Ã|ÀÎî-“ö]î@‹ÜÉÂDSÜ!=FóX}Òw»¢h°óûß­ˆ„[D 8ð<:z9ØpšêålçÜD¦ÎB§ÃI`Yà=”‘^RL_Ú¢7ÎáÖ㓧ê_pÄ5£ÿÎïPWµå@¡ó0ŽÏãÐi ¶èÚ’Ú¦¿?6¬ì5ÓŠt¨Ó”÷ä½ÌÊÞÁAf¹7®Ò‚nªÖ4 ­^_:j-=œ‚C%h±eÑàÞ @ >˹4¡£î´[o7àxò%0D“%)F5}]â“‘—¥
+#¡ùHøÈ×pqóà )í'2™ÀyOÔ9 Æ…ÁvTÄÂÆ,y¡¶…œmAE‚ó„€.¨-MbiT„&ë–u•M£âÙ(]Íæœ[Âð–:[ÓXâJ<!3"ŽÝƒcTÙñ®d ßÐôz2`9›žýIC€™ö”ƒ Ž9±¹÷ÎænF99|ïÝK + Z)
+>>Õ>#ûÅI¼XMâÕç$ñ*É?/‰xò;Nÿ»we¨G|Фø…ýW®€(zËéñùq̲0Š¼yͲ·KÍlež†qº4m'óÂRŽžß²qPôˆR²´Wê–­ƒ|ÜŠ‹Hµ£_Š‘¾To”L¬ ‘¨œ}7ÎÈL»`šÌ˜îy€q‰þJ­l „E Èö]Ós1âYDoœjàM¬¹£´÷½%y(µ8U@5+GÂOm)¶ÖôH ‡Ž3ô´BºgÇAb†sËxf_à”«û¼VyYöcº¯¨\†nöî|¡W9Éì uP•‰ÐëðB{b2˜S}´¤.
+_z*ÆZênlÓõOÄ
+0P]àw²ŽlÉ&Ó «û–sêYé<C“ÀCï,/;‰Û«4]ÀÚ¦Q¼sŸØ‰\{`묆&Ô³ ù$O+é艼4\ûÒAîäýSÙwq‡τ
+ËJÖ©³pT:e:A)_ÿ 1L!„kùPpÍ€fV€é >3­/6‡šÑìôÏÀíD)Wʉ_^D 8ÊÀ±ºb3nâÕû mðÅrÖïÏçI Ø$¯Ç¤„׋1éfœïŒr܇a*wpi^¯Ÿù¾YâÃÑ컧ʼ¦[²¨ëÎЙÅD÷†km7>SÕ÷äBÖa¬¹VJDú[ñîܶ0sà’GѶ´çÕ›Ò ¼ñ|•§_”ÔŒ[ÅwK]”Ý$iuP çB'\1ÐùÖÍÊÁ'Ï ª2?_•rċ駕ÕUûàÊ |zêj—.¿öäIây›ˆLÕoäØŹ¾8v؇x)y™ˆNÉKNÀ§†N±(=0{£ó”"ÀKëà]ìLßÝ5c2
+þñꩨ“Ð)WHcƒn@é­Ÿ²ùŽÞšškC˜Ý/”í–²]9Û\KÑ# ¶ÞÁR3©¹ Y•/Gn•7Lì¤
+¶¦XܾŲ¤àˆÐè+±ÁïÎ]<b‹ÎM8IMk¢}ÕL+IƒoTñ˱jÖÔý*!T>/Í b¬k[^SÎå|¤@dÈëÁTƒö}õ‘ðƒð¾O¨Nƒ6Ujs(O”µq^ñí'“ú+N`ëDGE Zî P:†pZÁ1zÌ2Vœe<Ñ«ÁŽœbähu˜éÑ ¾Ü9:ÏŸsÊ ýšªÄsç.uœâa%¿¦P’'¬Rém‚–Äí!?íhWJ%¸4—"\$}r©á8 S¥Oiîg(˜ÆþJŠGXW`kTÑÉ
+endobj
+724 0 obj
+3488
+endobj
+722 0 obj <<
+/Type /Page
+/Contents 723 0 R
+/Resources 721 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+/Annots [ 725 0 R 726 0 R 727 0 R ]
+>> endobj
+725 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [91.394 694.095 110.787 703.792]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.13) >>
+>> endobj
+726 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [316.938 518.646 330.878 529.555]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+727 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [257.414 451.506 276.808 461.203]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+720 0 obj <<
+/D [722 0 R /XYZ 72 786.278 null]
+>> endobj
+721 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+732 0 obj <<
+/Length 733 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZK“ÛÆÎY9ä/lùlJcx¹*YÖJËrj½yUœRÍ’à Ð
+!) ½¶¼X?[8«ò˜«8µ6WÚØ9ëTñŒNUžgLpTb¬l±0…2Öz€æ¹®Ãϯt2š0NæQá '[€¢X7Ð ‡-ØžY§3Œ.¬²Ð^¤JÃú󓆃À>™[4@¡óá^Ã9ªîèÒhß6—¦ˆ>V«r¥.ÎdÑuÏSK_c#‰îà/‹JmêˆÛrÅ“¨ü±/ëUýxiò¨l»ª©yY³f‰LŒÛ¤páö0KlÖ/Á`§BœðŸæ`a1œG·á­ó;iù.ŒTO<E5ÈsG&»°`b±1Ëõûý¶*a §ó¨oð¿ˆz|
+6|{Ø•5îÑw3§Ò&ÝÁ`è6ÎœµVÇTÏgöÉT8'^Ÿ™L¦83¦ñõjNÂFi¶nÚÌ^ §sG¹f±Ž¾<ôrb–ĺ|@Ç‘_­ªTë·8‘žHD„$ò5 ±ÄNÄ[—%Šµ6Ú€%©9!¦ª@[-cÿ5'I° «G†í€yä9Ž£®lY“06HcwÈèO}nË}[vÈ~õø„hOÔ ÔU½ª–¶ªñ¶I@o YÚ¶ä)ž)ëeCö¶6d£[öM âM]Jf{~ðE’¨4Íøä {aØúüÔ:ƒ¸N½ØûŒ¿/ÁÙ›Bóõ†ÿ jSÄ_€réÞ’ÂD|ˆn{ÝôLYíöÛŸ¸Ùo¼ Šø™@¶÷[Ú“@ÃXÍ4 </I£Ñy`[}=ÏóßdךMFN6ÖýK™Ý®.s5-wÊ=0ŠÅd†•Ã/›ÝþÀ’€Þ7¢‡²E¾’$ºivÄb’Eë†uÖqwÙ° ûªæµÃ–‡ýž}`»ô$¼$^·eù§_ûÝÎóèº~C¾‹f@xç‘÷j:ºCÐ[ˆù¯’.<¸Bþ]B<ûxÛprb[赋®e¡ç¿Aª¸WÃÿG/îÀÎIcr¨®D ¹\Î ´/‘÷í¡œr×Éâ Jí =?YBîö|ñN'‚XÁ£Û—Ä\PNÝ࿸Á¬-+<5ÎôméûÜR8u§Ñªß¦z°e¤ ¶Œ;IÃFdõ´Ó¦ä©—‹õ¡^’Îï¡u…J‹p¿@ p ŸˆKHoÞË)–l‰hŠBÙÌMÀŒ 6¿±R›ÜT’'Y›pæœðŠ`$4‰² ‡´iàŠ‚ìÈ5îš®ç‘Cw o ÛMì§;}Ö^¼DÈA“‰h»1ÿ‘›…}Q¼çŠ=>‚ü<ÜN¶nF҉ؘ‚ WåzN±ŠCPý µ€ŠÏÁÕõü„g÷‚–”Ypü5)š¤ èª~‰‚Û`_‡Ñ㛘/îÁ`}K¼£`ûƒG3éx35ê¦^ ¤¤äÂ(kòiØV
+v›y¨á<
+ÿO*+!B„°µ+=ÖàiEÝfG%£Ç"ýL1ÁµL‘$à|‹L anÉN^äX#÷è¸z6Ý“—LÕ$œ«É+TXz‹ÁRõ.¼ƒ
+åž—:1:‘%…TØÀ‡:,D+؊Τ%±œJb—Ä À*P”À­¶£Ò™ÔÉ
+ 99zoÈ¢ïÊž¢³á¾á0øÃÄËèC…y“2T1 ^ãômuÜiU“{ÎœÁWœ\“W“àÒ\Þ\â'÷›~q{™A&½x{‰øxÝÏœЫQ.žº]0y%»‘F€Øù8Åà *€ƒ7>rŽ.;pÎ],Io ~[ã$<ðêN`?ö&Vû­_›¼LsܳtŽ1/º`^ábÁðÜæ¨8™>Áå8´õûŽ©Fï±iŽ³“Éz<·ð…=j‹Ê˜tHÜCZV”Áà²0Ìžc/+±Xsî÷<YI§,†ºOÍs}¨Ó ¯/2ã$Æa91PîJ Xv\ò¡·08rÄSjÊåAT(á`JKç¶hóX¥Yú˜-ÊÛ!ó +5pßg}ò.M²²¸8‰8Âðü©‚Õ1…oYÁE'œ¦"Œ^Qâx¨K€&¡½³ˆÙ¸çdaS
+/’"•bógRVjâô¿‘]WËÅpìçüU —p
+*á
+©ûÂðç†T€ÈØƌͪìtG ={Âã<ººÔó ”•[üˆQAvñ)/ã[HõÉwÉ‚—¥¥OV˜ìY5ËX£Œyâpÿš\ë¬endstream
+endobj
+733 0 obj
+3790
+endobj
+731 0 obj <<
+/Type /Page
+/Contents 732 0 R
+/Resources 730 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+/Annots [ 734 0 R 735 0 R ]
+>> endobj
+734 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [363.726 359.886 368.458 371.102]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.5) >>
+>> endobj
+735 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [133.06 77.771 144.836 87.784]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.7) >>
+>> endobj
+729 0 obj <<
+/D [731 0 R /XYZ 72 786.278 null]
+>> endobj
+728 0 obj <<
+/D [731 0 R /XYZ 88.587 102.977 null]
+>> endobj
+730 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F30 512 0 R /F28 523 0 R /F39 496 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+740 0 obj <<
+/Length 741 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕYsÛÆù=™iÿ§/…2"‚]\‹¾¥IܨqŽ­¶Î4Κ\’ˆ@€@Ëʯïw-’òÚñÈ\ìñữ…ZEðO­r½ÊMêܬ6ÇÏÔŠÿÝ­üè{˜ãI‡i‚O/l\ûë8 M–¾´_eaœÅ ÷Ï·Ÿ}ù*ŽW*
+‹¨XÝîhÏíößÁï¯þsû×Ͼ½Ž¥a’¦/cƒÛ’ p/
+Ùú§«uÇÁíÁá º¾-ë=ŽuÐ7<÷áj­ó@6´¶ë]ë¶|®ìx–·Æó­Í•6ÁGüϵ<S•µÛ†I‡# 1 ¿:LUöÿÃàw·oo¾_bqž” ‹ßÙ£ðå
+¬Épq&BñÒ „vjzÜž7Ü×(*å¸ó§H%Ñø¡”·õ‚ToïÈhgöŒs³e;Ùþ€6iv¤ðk«Šl-¶µ7mŠƒÚ9PÔƬ@G³±½]u¼
+o:âZeݹ¶g@ÝÉnd‡ÈLŒ ÷cøÚcsfŸ+øØÙ+‰‚hn( +–Ô Ç‰Nºî\õ>ëo*Ç[f4DPòÛ…˜¼/™ì8x(]µèáU‘KG¥[Nve½q³—OM ÜðÞ¿—ͳ+É}.гٜÙà®tÁâÐ…b˜8q*?¹ªãIÆG¨liÀ3m…á<Ž„8Ü4xz|p"žeS‚¨x’&´MâÜòkj7À“×l[¢ïþƒ%¹[ ¥Ä¸“Ä…d‰î}DÃpèŽñ‘3$Ñ.œ2Á¡Y©ÍÔŠIvŒK>&<ð#íxTÊY6#ºƒ¶S˜Ñž'ë ÿzÃE·Ï edâºnJ Ç3‘t|(û£=±ZlmoyĶ”R‚MhÅ•’b4/Ë®I
+¾bsHGÜ6–_,9Ï#!Ž‰‰fî¨ã)™AÝ#FÁ|ѾµÇ#¡”äEP‰8+^ß6b!õåìqôAŒ¹öÌÅ7:p€µ1Eð®á¹é«À ÊZ+¾Èû²n„®Ü×%zBt óHZÕÔ{ä´ÎIkþŠÈÀ)_ÇÌX<oùÇ3ÐÉlë,ڂ΂ïįë|PÆk¶TAF¶‡¶Míxæþàjžóù5ì À.‘$²Aˆüd”oi`Ž­÷a£åà1¸ã„ûål+¢úâZÄ Iœ qTÆ0äx‰¯ýÝRx^›È=
+Ø–™±³oÐp‹â‰Š'ŽÃXûjlÄ‚ŒSýÆõ¼èI£õë:äsÑPOQJ¸XÉÄ©/wîÅ Ä»ÚgCø4×4~ðѨgHÛ¨õøäeŒ;HÝqÒG>Q™|TvÑ¢SœÒs®
+ µÔ^Ä[4Éiƒ7 š
+±Î:”»~†#÷q0fRíÓ2œÐìÙ2_c÷Ä{­,b¯•éqq†N öÃ7
+~¤‹‡3¯R^¨‡Œ#±ÝÍ`Bÿ9镦2˜nÏ5÷T‘)ß"äœèOÜ”º ‹q"wC¾‹éàðdSîÄÒ¦&‚c%R‚º9ïÅ2*Wuˆ©±‰“ú4@SÊ›öÞü.+H8Â4~¡ ™u '4ܲ—ÅKš¡úzDÍØk mGìqw^+ÈÒG=)Æ4VÃ¥A8Ó„¨0ee׾Ϣó^5ÐM³˜8 óLññ„Qì“–(R—U_í!ùæ·ðˆ7 J," cÑx% &›åö¶¬y(~0VãÎÚÝËpþlñI£êǤú¸t,÷®A8­O‹Ð3c1z$ÆHûÀ<m‚·2›NØlÇ:qzOą〸¿neÏLש}_É}ÉTjRF6è@î/ë³Ô·‡š±ÝŠ.œëÍxi2b½¬ wïÇÓô…évb%$l?sÁ¦|wyÇ«¡žÇÖvž„…~æ’÷™‹_*£_º›ýËëÿþÝ€N%•~ xa*ÍseÝóàUS÷7ß\óîj¬Ìw寎ï=TdB£æUídã}¹í—産¿^ðÕ€Îíß¾º}{óžw~1Ô–>ËG–­Sºäƒ\"4Ú¨
+’g{?Ñ&È®0ãÆá!¯zMœ¶ìè® ,êaHO/˜±¢Æž½§öÕ‚jÑ&`P¿ø­¶ŠÍ‹NaZXü!DYƒ…ËݘÑ>‹–Ë(t‚EÜð(éùxñi°°P¡Nó§R¡<<Tʨ‚ÆRÐS:L0èA°‡´{ÈŠ
+à|‘›‹Ï¾|•D°³ŒÓhüâÏF…ÿ¨,ãÊ
+ðÀŸ,Ö¾×r.ÏÛÑÆG‡÷ß8ÈO›‡›£Ý»yüŸ¾ r>•ù3{ùb ¦ðm"x¥ïNÙø= Lï<JÃÆòÈwÕ°Q®2‹Ìq
+endobj
+741 0 obj
+3970
+endobj
+739 0 obj <<
+/Type /Page
+/Contents 740 0 R
+/Resources 738 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 707 0 R
+/Annots [ 742 0 R 743 0 R ]
+>> endobj
+742 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [294.467 702.958 308.406 712.958]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.9) >>
+>> endobj
+743 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [476.15 649.064 480.882 660.28]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.6) >>
+>> endobj
+737 0 obj <<
+/D [739 0 R /XYZ 72 786.278 null]
+>> endobj
+736 0 obj <<
+/D [739 0 R /XYZ 88.587 106.908 null]
+>> endobj
+738 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F28 523 0 R /F34 583 0 R /F30 512 0 R /F39 496 0 R /F29 547 0 R /F40 548 0 R /F43 549 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+750 0 obj <<
+/Length 751 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚµZmã¶úñò úmÑOÞb­ˆ¤^¨
+$‹‰°D>=9þfÓæû-Œ¾¢±dq¨×X©XtÂ:Û"YÑ s<¼™‘$“xñ¡n¨ùP;ÁvòŒmbÒpÕ~ÛÅnÙýrÈÛëX/æö¥UjtpI$çþ?ºÞ-ËõlK>êáÃÅÆüT¬p2Ò0wOm•U óg!Û®ÜÔÒ)†Go,md,´Ýɼ­¥ûÄŠ¨‹­ˆ5f•³cÃ%þÅ#œFõ$c»|ïWÕHO.M†¡¬ëxfƒ4ñîö3´A¢½,™ sÝ´å:ðn,…[ŸªÏ÷d­ Æ5‚ÄG:ë‚W‰nçNšl35í0NØUcø\øI‚Þœá&ª»½tþÆáër##?צmÈ"A+½xsmávÜÊ µÝ¾*ÜÔäɨ·i×…#`ùá¹nsâ÷À› §
+@þ/±ƒ>’#KCœoKýØf³º|ˆ1IÆŒ~§Œ´÷ìjyÅP :p“¦Î1‚lÕ´-ûâ4ò’<H³ž» CQT¿à%l$q4¡%ЊnæœNÄ©#¼èuáCR}ÂÍétWÃ%M¥7ëšU)û¢kN9³óÙpÒq¨o)¶Äj‘ßuMuèIŽp{›O80êY—ð^<a'm9ÂØ°%·ÅšN"NÜI`|pÞDS<
+£+ò_<œj8”ó9´ B3]ÃdŠ8ˆb¿œÅ¹X'‹|YªPäU7³ƒ·ô…uøÊF^}uûJ¥tB¡ q+Hžé8ÿ«¶¸º2ÆA“+Aš=Ÿè™ŽWðÙœÝB>˜ÄÑ ‚aGìÿ#m“¹S•ˆêójq<mM”ˆjÌ >Í9·/Rö A©³MD›¾)ZŸ‚®º?ICP,¿û5èù€5È+^‚8CëõÅÃû¼ë;ðÎK0Dgt/
+—ù‹ïš¾ð#Þº¾¬ÈwfêˆÛ×ÅÇr冊¦™šxº¶`'Ìyb¤Â‘ŸŒ”:¦Ô€·’XX´äU‰º+úÃ^FKÇÀ¹9z¥ ÐÐ.(!-^½Œý;‘#göy+ùjuhq2›Zø5:zïe§çIW|̹¢Ø>‹ßSøššö-²! …Ýœ–#:3:<âœÓ#=Á ,‹X
+Ò+ñ^ÕÍ…-J!b=‘^Y÷Bùø¾¹¿w †Î§¹Î]³¾¯òWnÑY"*&±uU}=Fë°Dsd•A¤Í•±Âcf ÅUÁi[€Á Ü_Fa%†=Pœ™AŽ4íåøf¶6” €aj¤—ÓŸñ^©ÂjRÚIJIÞÙB—ä<0ž
+¿?ß©ßø¤¤ÊÊ>Ÿ¶¬¨j£“äct’:'@Ý\÷AÏŠ¥  .°Ë…O­oÊ–«ˆ‰« Ћ+ø%®î9‚¿>T½T}Ñd=’"(³x²ÝþÐû%H/œÐ àd[®f¢ñÇk಼:H2¹˜•Iæ]UŒb
+
+eÞS$á«j}Ò”6„¡«ºeÓ+DyÖ§) ìŠ–Ãad•7«cÔ.(ŸŽ¬»B'’ID§±]JŒ¬Oúé~1xõ]C1ißÔ¹t%>~ß—Eud9wûaH6ÀÆ«šzÂɵP»9쎂UrãGOÁh\.i¤çøYÂý“ô¸BJ‚`E铤!J.ø¨Üñ°-ýG,Ôtäé 9»p¬¯G–Ö1õó•SM€âz(¯ˆïòè&vU<Ašº:Íõ€uæŒÐÉPñGòòî«7·ïo¿ÿ··_s;wYÃâ½Ü?a˜a¦Žü˜1$Æ/ñó•W} ŠGïcÄùç´ä¢šáËX½?¢b`eœ€"Üvî6,_ªÍÎ]GZ`¬Ì¼€.âãý§ÙPìC[Ë!iµxÛK·ÞuÑÊ·7ÔäÄZÐ;,¹xn]†œ” è7”×½Ž+
+Ye®=ÝEÄ9¯ðÆUœúèت¦e ®2Ÿñ… sÒ 'r4gu`‰«ŠoªtLªÅŸ#Æ‘++Ð Ý$ìóãUuò¬òZvÁ\B‘PŠ:ªážVÄ.TZUŽ.ÒóŠ˜Ë²a¹Zt›ÿŽ+3
+=$£›þ„«¾ð‰G8|}w"_ù$+³Á‰¸ÍŸ†›„‰]Î:éëk_ÌãÝç ϧééDš>—ÑÏ$ÿí$jendstream
+endobj
+751 0 obj
+3809
+endobj
+749 0 obj <<
+/Type /Page
+/Contents 750 0 R
+/Resources 748 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+>> endobj
+747 0 obj <<
+/D [749 0 R /XYZ 72 786.278 null]
+>> endobj
+744 0 obj <<
+/D [749 0 R /XYZ 72 323.984 null]
+>> endobj
+745 0 obj <<
+/D [749 0 R /XYZ 72 302.093 null]
+>> endobj
+746 0 obj <<
+/D [749 0 R /XYZ 72 266.653 null]
+>> endobj
+748 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F39 496 0 R /F33 497 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+756 0 obj <<
+/Length 757 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåZ[oãÆ~ß—þ½….VçFömÓ®ÓMœ4H•E45²ˆ¥H…—8î¯ï9sfHJ¢íî Ô) ,‡sãœÛw¾9Z¾Šá¯L²2©f‰IWÅá_ÑßûUh} }4S*Á”Ä·g&®¥ÐLÇjµŠ¥Záü/6¯>¿æjÅc–ÅÙj³ss7ÛD›½míÕZ•>EÔÔ¾ãÐЈvC]ôeSã[õû¼§þ;[Û6ïmG ŽWëÄDMY_%iÔÛÖw÷Ÿ]=÷Ý®~Ú|õêíf:p’0‘ÑSËìqù—™sÆÓ„tãdMÌ‚¬_Þüý»?_­U¢¢ßoø?ÿؾÄ#ý«x>vç;y8éZ1;®3ÆãÔ[¾§NW­]í^ÎYªV)ã0MàC, ¯SfTæ¸fijh|2]̤`9K1
+#Ä‚0×x¸3£¦,K¤G¡‚ g[€¶¬çr
+É„
+¼ÎÒÌ¡³-MØ‚cÁÛÕŸõÔ³Ïq“_ð?Û/SÁ9»®¼-«²Ç)4ÒìèùÞ-³Ç²¾£Žñ“ä¹Ø–QÕÔwá
+ =1ðt /Šf ê@è¬=W9$>~ tJnƒêCëë'ô ËÅŦ¤-ù¸!ß aìÒù8tÌÎûÔ ð>ÀæòiÆðò&ª·òyN8&
+è$_uAÚœ«Ïeéi.˜=Cøv¿… ®Ë¾Ì«ò_¶;ÑÁ%^ˆ tí\š¶rÇ@ÃÝB )R Íd>?Gœœ‡¾·`>È-‰F¤ Ä`ñ•>Ý ±A&r'ÌÜ iØ™(ž¦åsÐÞÒàp‡h¸)D¿w˜‚¯wS^õ÷-ˆ×ØÅ£o¸¹ñÂh–!iœAŠË˜*oB™ðÓBzü€Þ²Þ–x"ìÅOOÛ¶M‹ÇÉDô†º<#ÀæÌ&Nâ׸•<ûÀ­§ø‘œÖyÚîë•N7Ëç°¸Û7C5näÄ^ S»Öº¯¿Œ_Ãx£‡ÿ].½“2jbY×°Ù³, n ÜÌîK@«–e\C2¦¹ø M/ö`Õì¿ÂYˆjƒw– )Øœ=– ÓA’ÁCøë«5牌nš|뙲€;R&á:{4‹X°ŒÞþz¬Ê¢ìr]*)ÆÍ™Ê(’~è°ZFº´è@QRbFëÖ ½×dJhiFNº©¸å ­©àxØ"â-1G“+ú­§)ÍćЭʺ°ÞÿÉóf'ÙïÇ}s
+8æ
+&-§_´æK‰¹ÂA´4'÷Ú-ÖêD— ?B0† íy±y)žH—aö;¡¨ ×b8'@Ç*æ–ÆOÁs~ 7óØ6àz‡ŽzïË~OýÑÔ;ý,á97ôÔAcš›åmGòT^+–Šu¸ß6A‰9=æ¡sA€ök¨íE=ÃI±ïnü¨S…N‹¹-‘Q燒ª€ð†KÚ®GÓ
+ </…8l±Üÿ-¡¡Æ‚]çݧ9;±w…ç~<à²m[7 ö”™Ç œw_VÕ®³þRÁ>ÇÖßÆS=ž3ñ‹Ø<û£a’p&¸~¯ÄEå/GL’'ððß’ÁN¶endstream
+endobj
+757 0 obj
+2418
+endobj
+755 0 obj <<
+/Type /Page
+/Contents 756 0 R
+/Resources 754 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+/Annots [ 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R ]
+>> endobj
+758 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [204.393 594.648 223.787 605.557]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.13) >>
+>> endobj
+759 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [262.271 500.003 276.21 510.912]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.8) >>
+>> endobj
+760 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [371.878 400.582 385.817 411.491]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+761 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [255.575 378.067 274.969 388.976]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+762 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [514.483 222.638 519.937 232.335]
+/Subtype /Link
+/A << /S /GoTo /D (section.7) >>
+>> endobj
+753 0 obj <<
+/D [755 0 R /XYZ 72 786.278 null]
+>> endobj
+145 0 obj <<
+/D [755 0 R /XYZ 72 484.738 null]
+>> endobj
+754 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+766 0 obj <<
+/Length 767 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝYKoãȾOù Þ‚¡‡ýâ#@ždŒM° b#9ìì–Z1"é%)?òëSÕUÝ$%YÆÈ!³Y]¬î®®ÇW%q‘ÀŸ¸ÈäE–§±Ìò‹UýN\Ðß× ?ú3ЈSoo0.=çR™8O ò¼}÷áZeBÄ…1·Ç{»þ)2q¶X
+!ut½(t´oVCÕ6ýb©2mÚ&úÔ¬Z‰h]5÷HÒÑ÷e³ÞáÛÏ·?|¸æB$q‘${)“ØÆ­p…¤ŠjÛ,d¡x»F’ŒlÙí*Û]⛎†­e²[ xy5)àãÕB¦Ñ¶lª¾&®}ïÅT =ƒ€¿-dµýp³êª‡a¹+›û}yÏ“ån×âü﫤Ǧm:°¨Ï…'¨ÌÂdÕÒ J\P Õmgq¤`éÒÑD$MJ¤uõÛñ™‰ŽÁºr5Ø®‡Sk…Û¶íþ~K_·Íîå@NIk
+ƒ¿ÏtQ¡{ä¶Ó£
+à|+Ø™s9 ~JÿÝ®’;cÄyïMßÂZâÊ‘ûDƒC‡/Çý‹ßÀÚ‚¶5Å \ YÓvêrm‰ãkCÝÐëÀûEíÛ?Ü@Wv`£*1h¯EäÆi´êl9Ðnà ÝŸ³#.q'èø-m»¶äSÀK…6®’, 6k¦V¤––„×"ØŽ£„``¢vãB
+²®máë.H>8×Í$`C0i¬];E)¼ê¡Â`ƒÃ'§c먇°³[Óww]…Z6/ôÊK» bn25[cäÁ1ú1>²àyx« Š4F>'ÐÓÙm\á—âØ^E]ƒw;[€gÉìW7üìúLôÁ>4òë:‹èÇ–?ëû}ýàõ„<[µûäÑWMYóz Î6ý„¿ã 4: 'Nó½íX]ôR^o:êö;ÛÏnFFýªlV•UL»ù=.óîÓmHìxñFÄÒ¨·
+eäI2•.25Aƹ‹üxBF¸Â4 2þWhÞ¼Aþü¥\í]H­ÁG¼?¨ ýN¯ÿtæ´Ã¶íðút6=±
+– MÐüõ9KxYWà÷=b!Ó¹¬,È
+7p=3…ƒ¨íëèIvº©š•ë´™è1=¡î=Õ_KÓXçò­ö¤|ãK‡w°}ãúZ[=ÜÖ¤¬¤¹£C£ƒ`LìYŠëssÆ |{9QŸ Îñþ嬵¹~¬úyœ‚ŠB™šbÒ½Ó ¹DÏ»wuùÕeÛžª(×ã†s•uÁ5Û¦\²“:r™œË.sÜ‚Ÿœç,|\]íH®…ßÒ4wâ ª su¯Œþ¹µ q=”]ÿJa±TÅꀴ:ÂùNI!èBr¦Þü)’:΃uœéÐÊÄ_SgÙW©";ÀF\µ¾ð/Ï|x.ú½¶%u•òP3
+endobj
+767 0 obj
+2458
+endobj
+765 0 obj <<
+/Type /Page
+/Contents 766 0 R
+/Resources 764 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+>> endobj
+763 0 obj <<
+/D [765 0 R /XYZ 72 786.278 null]
+>> endobj
+149 0 obj <<
+/D [765 0 R /XYZ 72 761.372 null]
+>> endobj
+764 0 obj <<
+/Font << /F37 380 0 R /F15 393 0 R /F39 496 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+774 0 obj <<
+/Length 775 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZK䶾ï¯èK
+:éÇêÔ­Ü&•q¢t`Ö±lü9øôBFI„ª]÷ze“ÄR^Ú‹ºº‰~ßÔ®µ½C~‰4º¾¥¢þÁâ­„ˆ¤Îh°DÎŒròg9Úƒ£ÁÃs«¾jŽr&Í¢Û=Íš ˜w²­Ã³!GT Ì›±æPuÈÈ×psÀQÜ´@apÑV¦IÔ ÷]_õC²‘p¬{<ÛÓ
+K„±*ÂuãcÓïÜ~…+JƺJ6€Q_Õ´-€e3õ s´ÎWØÌÂË‹$ú¼«v¼lß6‡@àp
+4"°ÂÒ4‘±Ê¯žSãôš'¬Å´IÕѸsª]†å9’
+k37šÀVÙˆý}À,ÃáGëvíÁ›?è˽ßÕóå£ç 0=Õ2ªzZÛí‘¡‚ GÍç–¥ÇxTÂ
+‡†Ã ¾-bÄ)Ëã´È7­Ûì_A˜çz“Ǧ¥øHW†·9øfîÎæåùá)Jb•¸¥™«ñZiºr­·+ŠŒÐï®° |ÓBOóÆkbžkç„s¥™f 1µrÍp cPk$ÌùóYà)Šž…5©®I»ÈK¦:¨”Š:gÛÑÂàýd{nÍ’" [qô­>ìY6G\ð~€Ô‡·–“U"Á¡eûuGº¶Þ®8èêÇ°ÞdžósK…×y¬!0 Ë€)Ø‹c6¡õõ3Œ’qº$ ¤
+u=-¿Nk5g„”1„ ï¾øöËÛw¿{1\`'®MJ9žÑ?\Û6>ǃ6á^Y-â¤Ê–YeÛÖRÂFó˜{⊲/Ja”‚è§G¡0튟 €4 '•"W2ɱúÑíàìL÷:¨Ä¿)Lxv»Ö'ÁØS>wª:j(7Õ”úEÓ}ç3ølæx8?‰‰ZzÝ5ƒ70W\^œ&â½ýBz„,:^QDgaVˆ½a4tÉŽè`„Óz¨æ!Ì8ܺÉñ$ fD¡š:?V«îÓ…"Ä)€Æôävîmsìçˆ5/ì@0›7î‹
+BÈ(²µô 5
+´º˜§¶·dРGC ’aOUrÀ @IôM~À`ô±ëy!Hz÷§o¾Y¹…ÌàÁÆ‚óœt7¦€±fW•¶w gê*¸æSŸ…ô}Ba‚‡vNõ
+8 gaÛ|æøŠN£ƒÿÐzÍ4 —l·ðX¯‹`uçÇVIm.
+¸ ÎlKJŽ3ïYšØþüû/nýÍn·?º¶ñ…I).q›`18ÙGÍD­_FC½DÝ`µ£vO]ïcŒiáO ŠE^Ä9Pݪ"(Ô/WÇžâ]°ñ/Ež Š?;ý§¢âì#*Ö??*^Ï3y¾Ëm;2VŸç)9-™‡Z• FŒ]Ž¬_,>f.ì½DEìåIƒc:HÓW €
+½3^}V¿»Œ“–¨B“¼‹ÑÖ@xÀCu±3yè^è#6ö“>\3(Æ’Ö a>áLìdÅ;Þ¼£§WŠ"Ô«isßa‡¾9€×*ýgÉKm:‡„9Ðð§JüQ ¶Fü&?BEI#©ù‚¾¾rAìgƒ“Á˜U ,?yUýÕp•x‘`~ëÝBfQžèÅÖ]C­Å ’P@˜ Ùš¨­ø_˜ç jD¶£yHb¥¾˜‹XÉô'¸~ç"Ô!·¶}?¯ç«‹:RaG²L(;Q*fVtZjäô…a)Ѐõ,²tú•ÙѲTW¤@Uö¡ô·"Ûc@¤ðµ$hÇ&¯gßPÒÙ×–ßtô’0ŠúºÐcÕñŠ­à³/
+—×½•DLzÍŸ$ü©ÕF Ìðg{—¡¨±Â‹Bü¥S$Z€ *L~Q6{óV%Fg™q,´ðk“Ym\AŽ…"øÿž~€ØÒ@뺡¦ß ŽatÓ/ß”ÿ[1¼¸ÔÝkß+`¸°EHyf1+ðc¯W êCêR  «£½í™rT\pTìÚK1î™8)²—œ:Æe
+ÂañÒD)Eœb‚ñ¼ÿWÉò<2•±”ÏÄÿ
+endobj
+775 0 obj
+3349
+endobj
+773 0 obj <<
+/Type /Page
+/Contents 774 0 R
+/Resources 772 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+/Annots [ 776 0 R 777 0 R ]
+>> endobj
+776 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [130.569 519.858 144.509 530.767]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.3) >>
+>> endobj
+777 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [247.791 452.718 252.524 463.934]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.7) >>
+>> endobj
+771 0 obj <<
+/D [773 0 R /XYZ 72 786.278 null]
+>> endobj
+769 0 obj <<
+/D [773 0 R /XYZ 72 259.32 null]
+>> endobj
+770 0 obj <<
+/D [773 0 R /XYZ 72 236.805 null]
+>> endobj
+768 0 obj <<
+/D [773 0 R /XYZ 88.587 99.449 null]
+>> endobj
+772 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F28 523 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+783 0 obj <<
+/Length 784 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZK㸾Ï%@~ê`¬_•Û³“L2ØCº÷’ÝE ¶å±0²ä•äôÌþú|Å"eÉ–»'È&@A-Š,‘¬b=¾*Z¬ü‰U&W™Mc™ÙÕæðJ¬øïã*´þ‚>¦ÔFÅFÓÛ „k­Ò8MÌj­LlSCôxxõÕ[aV"‰ó$_=ìíÃöûè¯eÙlÚ»µÌ£mÕ|¸[+i¢‚Y´k›;ôü6ï¤Êž_=ͦmúj[vÅc]RO‡öÔ¥ÿ®ÝqÿPJîé«fã›ÃÞ7Åñ8®?Ðl~}AsýÃ-í¿iùùˆ]gèüñáÏ«µHã\¥x’”rÇZW¶Ý‡¢©~.·ñÝÚ$Yô®Á—Æ`é*lÞuô´/»’‡ª»ªžß{g’Ä1‹ÎcWµ]Emáte_–žoþöÅÀCÌ>žoOU]ó<aç®»›œ@¹e‚SO² Æ’K}ëd¨“¨Šf[tD¯0Ï`â‹%¶Úî5á8S’>Ÿ#MT6=Í©r,žEßW¦ö\¡u,º¡Úœê¢û‚5ÃD~â}9eÆ8^¶å®8Õ4¹Í¯&C׌š¥+©÷3S´w2¬Ù=uÕ0~ʃg–Ù5EÍ=Ï.D$‚–öTlî ·{~sgÉJi
+ÿ¬Ûb»pN^×ÕxÔ¤-ÜÁ{Sj¢ñJž5E íËát„êj­£ûrÎÔ{Oq–!z¯DF›¢™mƒ_ˆ/í«’9ßrï¨s¯¾y8;)cÈdµÎÒØjsÛ÷ÜöGBÄÂJö[ÎÉlÁU ¸0°ýñwðú†û,7?$&ááÍžôZ¿ûÝdT„¯Mœau ,ÀN‹ƒ »êÊÕîÜclÍÊÆdŠjaxmã,õýp-Öf<|v²I¬S'Z¬)µÀÚ[ÚÛ…ûµq.µ'æ S@vßt#›JÇ0¸q+–ö‰})´×i,„^`3ðy2r›Â>*þDNÒíqv‚ÒÄi.=M8’–u+“{ºK]•ÞãRðéûÓÁ)%E‚–q9 Ov ïYÔÕvaS"U±6Aƒ¨«Ç…-)‹,»½¥¹…/(ã±onº²Â6G¯tÞݦ€·w¡IfIœÂf¢]Ú´Œ ’„¼‡syF Ö e=y¼0_`ÏÓ-›ÕYóf“ h†1½'O. ‡zŽþD¦‰c•$AÅÞ–š& —ŒóùÙ…ZòcÂFï¦ëàÛ:Äßë]¯%lËØ|&¯da‹0ñ4èSE>[PŒpj„€É¶¢…éÕk—H£Ý©þ!š7L£KGm•i8‹õ¢„tló <-§§ª/‰MD<‡4Ü~JnÔÅàC{Øý’! •ÅÓã/»®i— I¦oÏB7Tº8ºY¾³†ƒ°`[hÃT¨ß¶èØŸv˜…Bš6>¸PWÅÏOº0ê¢`9ûêŒyÜ=?ûÁ¢,6›
+0lŠäºvä êrWëªs
+[-W{wÅ%øŽ}‡b¼æJ'µo›ETcä–ƒÂ!µ5á~ÐÚèPZ—¥Ò7dŒ\¢í®æ0V~:ÖÕ¦ò;tEŽx;Ïü©B‚–«Á`û»5"3•¨F]=v…ÛI’D|õôÑÓ´<×HÛŠ;\x ¤Ȭ„Laªù/P[ÉÿÚ
+ѾoÞÞYíJF, g6àõxêBr˜æ3ƒüBíI‹nêß³yÝÄç(ƒªjº<ô÷„wÞ‰ éÔlËÎ]³î½yûXfËÛ–^)A>Ö#@±%m÷…”n’vé)Vœà™ñ¶ýµ/Æ”~—}_È;‡žÓ½-Ýl *èÛPáöL\¨åyªã\ˆ‹ªˆ»pÏÏe’ùO4]fütª:gÚž7Ñh¸×,é|.i zIã[Ä•%GÕ¼€0ÜÁ- Ùù|ˆ|äÚž+L׳j躕_PA™šÂB쮃/"„ÈãÄÙæYfSoO.c„­c̸Y0‚Kd…bè<Îtöß¹ovN¾¼‡\oÖ‰^óˈÐ÷÷L~U=‚¼òçªG$®ô™êQ†ÿâKÊG2ÊüJnž³/JRG—D-wf¾HZ5›ú´-ûYyUÁd‡‘Ï“À‰üý ×^;n
+Ý0¾dÀœ»ŒYÂÒÙ
+$Þt¶ÐèTží0_Ñ픽ºãøê­NH/ÓÔù¥Xá¾MX|_“Ó‘Ñø:õB¸ùE8ÏP”ÂÁ„‹ðÉbk?e†Ç9ú¿°ª/‡ûìÖ+)Q å1Qª;•¯y<ü¬M+þ©÷†YŽôs1Þ"K ðІPQíÙOb ¨?´]5ìü-Æo¹Ão ¿Dc p¿ÍËýoº¨ÖVw¿erªúë$>œ°ubÒ—`OB÷ê%B$?±"çð¼Ukqô”ôîÆ
+ÿ9N2¯endstream
+endobj
+784 0 obj
+3243
+endobj
+782 0 obj <<
+/Type /Page
+/Contents 783 0 R
+/Resources 781 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+/Annots [ 785 0 R 786 0 R 787 0 R ]
+>> endobj
+785 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [246.729 558.99 251.461 570.206]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.8) >>
+>> endobj
+786 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [347.007 231.941 351.739 243.157]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.9) >>
+>> endobj
+787 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [448.393 217.786 453.847 228.695]
+/Subtype /Link
+/A << /S /GoTo /D (section.7) >>
+>> endobj
+780 0 obj <<
+/D [782 0 R /XYZ 72 786.278 null]
+>> endobj
+153 0 obj <<
+/D [782 0 R /XYZ 72 279.729 null]
+>> endobj
+778 0 obj <<
+/D [782 0 R /XYZ 88.587 109.331 null]
+>> endobj
+779 0 obj <<
+/D [782 0 R /XYZ 88.587 98.372 null]
+>> endobj
+781 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F28 523 0 R /F30 512 0 R /F39 496 0 R /F37 380 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+792 0 obj <<
+/Length 793 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZ[ã¶~ß—þ?jŠ±"Þ$*6M&ݦm‚fТhŠBcÑcudÉ•äÝL}Ï…’)[žÙ-Š )»¢HŠ—sùÎÇC‹Ub•ÉUfÓXfvµÙ¿+þ{Z¥o Ž{j£b£ñí•Žk­Ò8MÌj­LlSƒý¿¸óÙ0+‘Äy’¯î·Ô÷¾ükô¶¿Yk™G¥ë7]õp³–6r%×U ?{·ª¶¹ùÛýoß|u?M$DgÒ¯+°úi5–¾yaÖì|,kc®ïíúH·°D£¢açü>Š¡À’ú¡;n†cçü7°¨Šª©šGߧú—[—î
+¨™œ–s(º¡Ú뢃®™Œ¶í4b¦¢¢ÃUf:j»Ç¢¹K~-zÿäG]5O7¸ r|ï‡çüìNf ¤’0±ö’¸ÿÒÕnpßÃÀ?$&‚¿šI.q’eþ£¡xÂõ‘Œ2m¦»b\4WºÅ”E®«ŸY
+ÞßÀúªÆëL¥ êìRp"{³ÆË
+1I¬S‚‰Sc§-)µ°¥»°q.GØš#Õl™æÔoÚ§Ò±R°OØ®HÖ¹V±‚ò:|Ö û÷ãdhÀzˆìå@ùŽ<-vsìúê=Á& ¡¯D3¶ÑûLUš²%ck`Éve°‘-Y¥š- Þ³Íd»KÐc%Tú*ö€¤Ò¡bõ~ÇÈb¢} ñ{x`á—â€xßUÅ੪­Ç|3:{
+C‹Oyöá[+)ˆ@¹hÆuB¯ºm]{Ia(¿—<p^xóH…_Ö}Nnk.‘Aˆ7H÷ Yˆk« ”G !h8©œ]³iiá¥ãª‚{œB?¿u\ø°«6X¿ãW
+>PÂ83ur‚:íŠÞÏPw®(Ÿ¹Öo¾¡¶G×`$ p¡…ŽÞ5Ü­(Ë
+ås»°»@/FFCW4ýD}P&Áx8½Ã7á# ¸kº«ÊÁÇ Z ôK›ðÈ…:¬³¡ °j(q÷#ÊýÊX6ÎÒ1¸vîŸÇ
+Ñ–È“ðmGÏÁwÕ´\OÚûP³©~H„Þ`KÀ@Îüo- ” Or\Dí+4 ˜cœŠÓÒÏQE[`cuÝ/Ì~ÚO¥}6³DŽ´¯åJzfQ5ô\ñöíÆfŒwPÃt ç~ŒLPKB=îñoçVÄ2ÏfbÁ`´¥L â0K¦ ¸úªÙÔÇÒ3A%žxøH_ó‘ˆéPLÇ!ˆG¡ûÀZIÔ½õ,“˜RQN"®P½ëº± »ò´Ñ¡ ]¡9KÌ9 ”˜‹µ}_=ÔŽMhðF6qrèk;_ð1Á›ïèõìk86`KnþP »ÀÎåŒö eÏí~Û7¦~{XDçùûÂÆŽ½÷³ÿáÓÙ|:W?%ýÁÀö“Sõ±Ô'ûߦ>æc©}Y-Ú¸1°93¢ö#{º©´ …U*€{¸äã}¢…0
+HôúýØû[T;W—£qðÓã¸UÑ+¢Ë~N¢{{÷ûsr~ê0„۟˜•¼ýÙžQ[œLÆÎTîS&Ö5Ä̵°”è’I |£(4î*`Õgî¨Âuí<[ãŽûåÄð•7X1foxäX;ŒkëŸ÷XFÚl|u5LÃ]Òõ¾Úˆ#Z˸ª,ÐÖÚí=ñá
+•9T]WàΞù•X™çIÃúaf© 'ÐTÄ™²_ßþáþ»?¾ûÓÛû¯
+¿8, >Ì[ywËË¢œùdl€N™9&PŸ¤ìSŸÝ”mëÝÀLvhG‡ƒZQ³¡O¸þ*ýóÎaV ú#EÂÁdÊÌTÒ w{¬¹­õ}À6W`w
+ Þ8õ‹éÀ‰UÁ?»dï4ÓtD›Ù‰J !ø'r‰œh„yŠŒìVú#=I\KÊ´™ ã!DÖº-Ê1]<UãáÔýx¨«M5çô+_oMtUà÷œCNåó ,ÈK çjÃçlXŸ
+ûØ%
+ŸüÀ]¡ þ>”3¼Ž ùòs ¾™ˆÞrS˜JÉåÈ¥j_
+röŒ •ÜcLë\¦×š ¬>Œ~}µA Åš
+s¬KGŸ>;±Q6ç+ úŒ¢b8#«õü–‰Ô*Ƚ`àÆ'æc²>¶WÊpL^¸+Êà¤'äÇ…9¼2Ã@¼Ÿt\Èõ¸œÆ¯Ï'
+Ýýl0ü…f°Y‚1×ú¤ÄÜ7Eï–²oK ü‘%‡ó{–Ni7ŸÜB£K<åZ4F;š6!8ö °šyÞùÉÕºÎm(ÎàëÈ4ϦÈgÞ“O—wô‚‚!:ÉÀ dˆÑß¼€T2ϱš|Ì4KéÇÈ[ÈÈ–‰¥Cð¯–Ʊãy?ñé6냢 ©/ÕŽ¼’ùè,„Ù`Óø2Çâ_æ
+¹˜f8Ù;6>ð=ÁåVdÎW )LØ“þ{Ï ßzTÊlœè3÷¯NåùÕé”zlJypžŽH^ÿMU.âPŸ`èÅÌ‚ž2 l86ƒÚs
+ãO×î<1–RÒè[&~š¤ß]çÜ×õóawÊù}ý»¿|÷.þòÑ7]dýX¹×³~˜Ë^Èúá-ÂÇ$ýh\ÿŸÜwÚ—¹Ã)ï/ôt‚Vùwíóf>-ÌÌïæV‹@4…DÐð¯ÛÃó¤ákÜ_AÄåðP‰xâ‰(ð g+ãó3ÞY@Àò941» ÞïÚ#%Pà&ÞBO䘃)>E6ÿ-Oq€Ó
+endobj
+793 0 obj
+3203
+endobj
+791 0 obj <<
+/Type /Page
+/Contents 792 0 R
+/Resources 790 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 752 0 R
+/Annots [ 794 0 R 795 0 R 796 0 R 797 0 R ]
+>> endobj
+794 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [206.657 748.292 212.112 757.989]
+/Subtype /Link
+/A << /S /GoTo /D (section.7) >>
+>> endobj
+795 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [423.502 364.272 428.956 375.181]
+/Subtype /Link
+/A << /S /GoTo /D (section.7) >>
+>> endobj
+796 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [93.818 283.583 102.784 294.799]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.10) >>
+>> endobj
+797 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [104.977 77.771 121.36 88.73]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+789 0 obj <<
+/D [791 0 R /XYZ 72 786.278 null]
+>> endobj
+788 0 obj <<
+/D [791 0 R /XYZ 88.587 81.059 null]
+>> endobj
+790 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F39 496 0 R /F28 523 0 R /F30 512 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+801 0 obj <<
+/Length 802 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåZYã¸~Ÿ
+³Š¨šÑÒ`eœ©Fëè«c+‰†Ñí+Øͯ±£€-hŠi[Ü*‡•¼ôu5­¢B70 μJQø¥?ûÃ-l| Ÿ(aªâ$—|Cб?Úñ\ÿŽ²9aKšæ caiï–ˆ‹XÙUâ_ÞuµýøÒö(ÅLQ ¬2‹þj«±é» “@Ájµ.§ËƒD±?Ü„ÖW/HYƒÉžMKÐuÝg\§†÷
+­¼B©H!„ÔÑpF»½´V2ÏãRË¡½ë@®¥ÞÖ^E éµªÌ"ƒò|Â?}SÓФ‘0ÜZóUG¥"²¦º…ÙЬ
+4ˆæôk&é­IapDÒÏž>u¬÷ç7êa©¢aÓï[ÞøÁ+¤åy=jhXìUzYýüt³ ž|*)é‚žKÍ@=agby‰{Î&˜Ø4Q‘QÕöƒ ¹Ñ6ÎxFÉ”mf’í`ÛuN,•j"Ét$‹ïõ¹®¬d!c•à{d, ~üWâÆ[¼è×ÍÃ1^<b,†~Ä ¡+_ y,sùc"Cg:ÿÿˆ ÁTZ­A‰$Ú¶ŽoWy¢¢wkïzúݹþ¡µÛ&ö>2TÕÞ¡Õª4J¨¿áñàÚ=1Ýoxƒ§[ ΠÝógÊ«ººÁ
+‡a‚¼ëåukÜäùÀ^wfÜøp
+ífM–^7¿°Îv¸ñHf¾vý–Æ&‡QÛµÙ·#­ïยóØ;¥TôµÆ×'>B͹‚KÉ¥)rKuÌj£2—Z“FŽˆX Å¢òv•¦BEƒ@éÚ¦î่Þ?Ý‚ÿ
+ا؛åÚ‚çw€#š,í /²I¬!¬áNc
+nqÁ%Xqž5ßïv^»{7Ø(¢ýɹ ؃&ÙŽgyFgÃ%ýºf烑b‡£)"¡ãaÔmø,Ž ÙNpc˱”í•Aû“ÃAÐdV°ø²”ʇ(ƒç=ð`í¼>wôÙó/É L}`:‘á10üfÜšÝé.Eôh;ë«Á1µN(XAÿ³kF’[–ƒ:B3^¶ùq?:÷¥n;Ó="‹Šœ[Ä5h<¶‡Ýæ7ËÃ5MGmA®Î|nêqã¹YƒÁ,¨üI‹=À£fk» 
+X¡íMmëÏÏc2î
+a)É>™B¤™œEÞŸõ«ó t¬´þtN‰ÓÔ<¬g Äg¦¾`àÓ<ÄÇÏAXÀœ°Â'àîÉF!Ëh¼§IHP[›
+ùöôjà1¯ªÐÍ/l^Þ0 *]w·…Š˜ñM·îib îD˜
+r
+ 'ÖÚëø4Š<¹
+ɨEËs Å.-à³ä½Om•^DØ@ÌdŽó4ÎuÈ1K9$´TH!¿X"!ãlÊRÍ…<ÿnŠæyÎþµ°Œbè~@ ¥Oןì™aVò88B·Ä)âB/\Zùtªw“=ô]=œru˜©ÔñiJêóÂËïÑ™úpBß°>Ÿ€)Yx‡³ÀiÄ6“÷Ú/â$ 5¯’Ã6öGG‡[ž«‘ ѧEà´dÄn…œÏœV¡#„Õ
+ú*†›ì£ Ç¸~ïýs)BÚ ­sÿQŠ#ØGð,Øž0'¯^N^ºÂ|Pösú¹##<ã'!ÞYp¸î£ ¯MÁûü||Ô)
+> §E¬T: §
+:yß4¦éèæIœJù¢gÓ²˜YÃõ—m¹p´uœç IJ݆
+W
+î‹3Æaò'Š+N4c¿‘¡kö[ 2®ö‘Io<ÅàfS|^ n–ú™;ÍñÕÉ¿LõŽlF_VIÈ¡Â ×YÒ(v¬£o×<nX㉈ëÂÐÙZÁؽ*×f’h‚JEôñʪÖÒcv~ŸJUÿÚWÔxŸžŠÂ_oÅ8Ï,•BLM°¨«<×@R¾2 [’ÁÒ›™­÷Žûj;T®aÆòÂK]ÌñáÇ;æ¤,ÿ÷ªøš.ö°÷±¬p¤ƒû_V¾¾%Ë +•ÙÓËÇŒ³b«“
+2qö<ÙnkÆðÄrÔIróšV¶ÆYj\F‡“‰Uq&2½èái8Ék=Ä~ÆšþÕ8á \ø
+_ïP :½¢ùj‡à`ˆC ! Å'Äæv*¢Á‡ Ælu hREDPég…¦:|ùˆ… –®£Æš÷H€  Å–$ZÃl¨™bÇ .¨ÀÆÍ¿—0
+ü}!?0¥ˆ³$Ñ0ž矚Ú2uC?¡žÏPßÂEœâ«ñI&è¨Üj?îÚ¦jÆP½…”‰®ËàLŠ‹ÐÂ3¦²m9{(ÐÅ©dÉq·à7 ô›Ÿ×낼a([·š»ÅÀ
+ õeiz~]x?þ‹ÄEådŠ©Y ù'ë»ëèÏfõE8 .¡ÈIˆê'ÿv!âøendstream
+endobj
+802 0 obj
+3305
+endobj
+800 0 obj <<
+/Type /Page
+/Contents 801 0 R
+/Resources 799 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 803 0 R 804 0 R 805 0 R ]
+>> endobj
+803 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [430.559 694.403 449.953 705.312]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.18) >>
+>> endobj
+804 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [156.414 245.282 184.293 254.979]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.3) >>
+>> endobj
+805 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [263.683 218.184 291.562 227.881]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.16.3) >>
+>> endobj
+798 0 obj <<
+/D [800 0 R /XYZ 72 786.278 null]
+>> endobj
+157 0 obj <<
+/D [800 0 R /XYZ 72 559.575 null]
+>> endobj
+799 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F37 380 0 R /F26 391 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+814 0 obj <<
+/Length 815 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÛrÛÆõÝ_Á·€3&ì—¾¥ŽÕªNœŒ­¤M§‘KcP
+±…s=\Ϧ6¡­!·ñ@—†ñ* c8Φçð¤¬@Dœõ|Œhõ|ÕÆ_ß‹Á†Æ‚´TZõyèjW®?T®m¿XÑg±"óLVÔ::`ºãAãÚÛ%œ ܺ+?.qÀ—6 P5<ÝÖ RTK•³:2˜ÂZ¤¼ÈÈ f䜤ÓÕsXLi/X2Ž$Àl¢½TÃå*Ñipµs3è´3òÞ
+g0Ú(Œ­‡+š›ãÁU(ŽŽÙ.[–CѶ°³)Öü{ LÂ
+æ¤T˜˜|±ŠÑpsñ^
+z[/·÷¼RnDÍåºØóÒ-!—4Ùò™?:¾Ãe¿±kœãá¦l»²Z Qhs<jŽ{)Ær/Ä´Ö(
+°ÎajšºbP#w‰AäCÎÁ5á2fE=ÓZDaÚw1=/P;Xé1˜¾fƒe¦êÊñ`Ò5À
+u
+ƒeKÔyå«ò nkBeÔéLß°-@˜I³ld iªÞ¡+èÛèô½ß£üp|Wr59m™Àcmžü¾–)ÕaO}Ñò•R´Ã —Ãͱž¨ÝÕÇ=’% w#°x=<åöغ0 ñ"·jÄ0±²2©ºI'•É„Å܆Ê4
+Yà§
+lr?)N‘qÄt ®­Múxw§ÂÔèù+FÙæ¡;À0¢Ô#Ô‡+–‚Ag Á}`g™Á&`ØéTû¢ëÐë”͇FÓ»Û{ê^
+Ò[Ë%À¾<}àâ°Âù¶FƒF ¸.–4@Ò VÛš1lJº¹hîy^¨±o}ë(zÈôZ }ÓÔs(ˆÀøŽZ4£2%vÐñ<é£“ë§ æǪn!轄ÛLùò:47YÌá $°©ý.=Td¾xÎ(.XÒÕK|
+±ÜÅÃ:U«¼nÛòšÊvÀFr€-æ·¨nÜgI?µ&9‡ËlRñüC&5Ãå¡Ül|Ç@M#
+‹Z°_y{1äõ±“»N{Ì5Lµ¹í5îPs¾â€ºü·Àlœ˜}å(Y/º"”•b¥’c¨Çra¥òPÅš¨·P‡-¡öôU}8±".+4ÿr”ŠbR¨ô–9&Â%ÝòÇp¼ÚøÖ$½sg¸lÍ%ÝìHÆíñºuk¹ÈX`§]7åuÿ
+endobj
+815 0 obj
+2620
+endobj
+813 0 obj <<
+/Type /Page
+/Contents 814 0 R
+/Resources 812 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 816 0 R ]
+>> endobj
+816 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [179.666 149.485 199.06 159.182]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.19) >>
+>> endobj
+811 0 obj <<
+/D [813 0 R /XYZ 72 786.278 null]
+>> endobj
+161 0 obj <<
+/D [813 0 R /XYZ 72 332.868 null]
+>> endobj
+807 0 obj <<
+/D [813 0 R /XYZ 72 266.745 null]
+>> endobj
+808 0 obj <<
+/D [813 0 R /XYZ 72 246.35 null]
+>> endobj
+809 0 obj <<
+/D [813 0 R /XYZ 72 194.615 null]
+>> endobj
+810 0 obj <<
+/D [813 0 R /XYZ 72 145.002 null]
+>> endobj
+812 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F39 496 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+820 0 obj <<
+/Length 821 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZ_s㸠ßOá·Ê5—â‘zÌÎ6ô®;}Hçz77ŠM¯Õ“¥œ$ß%÷é ¤$Ûr’vÛí\&¢HàNºàð—.ŒX›1aìb½“.èï§E}sD©´dZáÛ3„«H¹’šÙL#ýûÛ7ï®E¶H9Ëy¾¸ÝzÚÛÍ?Í`.]®ÒT§ÉM½mÚ}Ñ—M½\I«’mÛìit½Ì³¦¥Lz$[}(×HW´ËnÿòæO·£
+yÒ—èțёÁÓó¤ÙÑ(ßý´Nܺüž§Êmp?8%×슞“ÓV/|'UÒ´ø”IAÿö[¿¦$bÈÊ-=i_xn–¸ÁrG\ëÆOˆ¤jŠÛ0/ 4GãLd¹õl OönßxÝ`¼õ2eyØÄD“€R~z0Œý†@Ñõ
+º–·ð,¹BÞà60ßùóÂuSwî烫×î-îÈÇO'Jk1* +^-x6uõ8²é‹Á¸qpžŠ^W9=
+íí…êpRDbUåwÍ uÁÄ}¹w욈?
+¦Ÿ¦ÏÔ¦7pèÊÚ<ñÅû¾[Z• ‚âœÿ4I1¯¬ ð‡ SÔ£µ ôY@4ÁæaG
+2ˆàÇ%y„¦‹0  Ë„þr0°…´âœ`à¦/ªr}UªÜ+üo±€rºÔÓiã—%8pQB>¡BA ¦ô¤qv¤urp5ÒMƒKS®î÷ ’sb+ð.è ˆW î‚1¤Lò±BÁÅÍ‹þ„ýÞ5"È9xI
+`$suù7ŒËÜйÁçÉU
+¸6ƒb;h(m4‡zzB6ô „Ó¢öx™òñ«I€·rãB•Ú5³¯øg:¤a“¥“Ÿ<o>Ìå
+<ì9ÍT6 ‹=ŠîPáJ`´¥IH„4±F>pa/Ö½kQ³¥gA´c÷ÈÙº@…Ù+Ü¿ª‚+ø²!º_Ë~G„ LÙFY¶®ÅF
+­·¯hn ¢y]Ü©ÐÆ"UÈà䋳F3:3ËC ‚Az…šbÓf(nñŒ³”ÁêEq<
+ƒG¨–uÙwÕÌ™ïƒ-ÅP˜´ÝŒ+ˆL3Ž·/3790Zý
+endobj
+821 0 obj
+2074
+endobj
+819 0 obj <<
+/Type /Page
+/Contents 820 0 R
+/Resources 818 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 822 0 R ]
+>> endobj
+822 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [478.083 291.566 497.477 302.475]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+817 0 obj <<
+/D [819 0 R /XYZ 72 786.278 null]
+>> endobj
+165 0 obj <<
+/D [819 0 R /XYZ 72 761.372 null]
+>> endobj
+818 0 obj <<
+/Font << /F26 391 0 R /F27 394 0 R /F33 497 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+826 0 obj <<
+/Length 827 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZ_“Û¶÷§Ð[x‹&€ Û'»íeÜL:y¸¶M§Ã£ Ç©’”OJ¿|v± þ‘xg×ÓÌ$s
+¶MK®Ù[ìÅ0YÐwáÍ?ïþüú66^BŠP)É{Q•÷D5“(eÇš‰ZÛÛº#1ýÎIAYƒè}Þ— m­Dt}ÓÚŸ¼ ö:­¿„ª<‹¾³Õö|¨8èʺàñw¨Ñj-&I
+<£Ìé’wÝ÷)¥†åØÊ ì¨Ýƒ|ì©«ƒÂÙ¾ávg©ãTJƒþ+^¾ÉûÜØ‹?ݤC¥5\
+#“<}O_±¡Hc2wµ³ëðW»­šÕ±îÄ¿¾¶ý_ëm«²¶ß5]‰‡ü}¤#"(k¦¼mêþÝaBxµA]ü×Éf²C™¥«Ö®¶/ÖJ†©^e¡r%ÓP
+‘>¾»šFc>ÖÙ½ÙüpÖ…4G4~¸Yƒ)òU"E4[¢ä%€`$J[”„’ž ‡¾rVá¡ü€£¶¦Ï’yâý*DéÚÁ)šáhSºäíù&ÕAx³62†:
+ìF­®Qâ‡HaàawÀÆ°CD#j
+<ÿ€OfG†'ªÒÄIÐ!ÌÄ7k¸
+|k_aYï¦Ïs 9>µ2øº:vÝS
+ÛÕvœbÀ¹Û•[~Î'üðOý;Ý­K£ù¡žÂÖÝÎqÂvì‘ ~ÄÓZ3®-Žmk‡­Â
+\dPʹPÆÉ÷+ßûæw¤C}ÅS†™zºÌþ4/ô!‰Þ{R—ׇ”@tM½ß^ˆY£Ÿ‰É ÉK|‘Ok,£G æÁ$LæXõÓ3ÃßDAw¨Éæ¾PŠ„|!:-_v” />‚ÑœéË91h÷hrc¾#;
+šºâçÆ¡<Ùj=ì>UÁ“ã†LÜ™9™†‹кs€|¦­éɆ”×…Y$¢ZDâßÌê%†ÂNÿûh;ô^xU&©i— qV€Ý .ó:9·RøWؒ˾p<p…Wu/“<x[…©É ÛÌ øeÒ¼·o›Óež‡c?Kš§%iÞOúøÒQtqð26féMp—ð,pôY–N¢Ù’«Ä_Ö2რ$„ÀÓ ÿøC[Qꎈ—` õudâúÇ Mù¥ƒRÅଲ9–.sN=æœ:õqru*‘¼<•HQrj®²hÅ p= gÀœ4ÀŠñ‡øèöyUÙ®÷q£ès@:OæUùP/Vj ÖUìë› ÷-£É]˜ˆªðnáiá²’0–Þl×Ä)¯7 œÐî"õçN`à^Ð:?Q šG×¹83ÜBd09|rÀ#™»s×Ûýeq,l]TMg9œøäÇLÌùsÜHksö± ¦ÒfvŒTJ×¾> ®4ËP³ý¡;C÷+]Šzú"¾ž^~Òp2]åÆ¢M¦ÇÚš§À»Üž¹B¢)£ÀNå’ÖGª;òÝ.Uáñê Æ^ ãY·ô=Éó1vA¤©m Ó&÷Q–Ê20•Ó‚CÛ<´ù~Oþ'ø±ÒgüHåÚ¥}|E?Dä,azª¬ÔÖ¤I.°æ¶0û’¦ ª°Â²PžÄ_⪊Šø\‰qU™cÑÏìgŦ_—‚GÖbþòžØõˆæwO•`ÒbÃgÕ@‰ÁGBs>ØÝR”å­^›Æ({2ìgy趫êô{8º¯_òPóh9z;ƒs½Óú0ü¬* /_/•“G¶çOb{^f;=O
+endobj
+827 0 obj
+2516
+endobj
+825 0 obj <<
+/Type /Page
+/Contents 826 0 R
+/Resources 824 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 828 0 R ]
+>> endobj
+828 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [251.484 314.898 265.424 324.898]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+823 0 obj <<
+/D [825 0 R /XYZ 72 786.278 null]
+>> endobj
+169 0 obj <<
+/D [825 0 R /XYZ 72 444.487 null]
+>> endobj
+824 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F26 391 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+832 0 obj <<
+/Length 833 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZÝo䶿üû9¸Õ‰_¢Ô<å’¸pƒkž>4EAïr½Âi¥>bûÚþïጴҮì; @ ?,E‡3üÍC‹UbeåÊfi,m¶Ú^‰ý}X ¥Ÿ Ž$µQ±Ñøõ ÁµVi¬ÒÕZ™8K Š¿½}õæZÚ•Hâ<ÉW·» z»ý{TTÝÕÚHõÍã·Wk™BñÍ7\u<ú†ŠMq¿gÁÇõ±n‹®¨+úþæÍÕ?nÿêÖ'˜Ÿ«}ú<µOËj×ÂÆ"3åÿ!‰·ok˜2½¹f¶´µ±Î‚ì ¨SIm\ë±”GÝÞsÕ•´ÑÞ5nÓá|Tb£¢%™ªî¨ÂW›¦ŸE[¿¥^uC¿UMß]¿£Š­ëÜ\‹»‚Ž¿^™4rEéîJÿê…Œu¸ ŠkzäÁâá«sEUT÷¤¬®Ê'*}ôMÍša„Ë=o|×7•ßÆ¡M¤qŽN0¸Å•Ë,Fî«mFf:TÙq2(„«™…I5‡-ÚrõŽ~]…¿&ò¯Ú`6¬†åšÈ•=´wíiHØN_‘Rw<–©ÔQW“L7ÌoÇûÀ#òH¿ô¾EÿˆÖþ¾¨6ØÙâ†CWßð”l%±ZóðÈ<‰ÚÒÑa †çhéÓ5žëû÷_Zµà¸èÊàÐ eytðŽl…ÂÝÞu4‰ºIèô‰híQMÝûü¥íØ
+ fÄ`¬Ñ~:;·ŸI¢‡¢,©Ä‹§¾'/YkaÀ'‚AjøÝ%aÅ#‚‡~é‹•h˜uq`uþñHÚÁh穾eƒ@‘Ì
+½f®ýzjFÃì`ÊJáÚº²¨ð ª4: Þ¾í¨i\RáÄ´ÅÖ7´p½÷Þ“s(l‹vÓ·äAuEZGËÐQƒG'ïàL_ýx;"¬|IÓ ¦–RR#Äb=¶~X ¥ŸvÏ°‰`×ÄBœky¬rý<¾?¯ æ(†¹7¼^%ØÖé®ßR&‹¥V3çªw(¬`ÏŠ6>ŸÖZ¥*NsX­ÒqbÓçÃÏó!I
+¸`r5n¢R ›x½³8—úä+É°Ž3`%ý&>ÅkÃsáJ¬H&ºV±‚ò:¯Ö +"óXb,b’ä¿¡#!3¸ô$¬ý½;’ý¿#}Ž#‹R‚„°ã:ÁXO˼¢ãÈfC¼J±ë« BcKD¤ñÇ„+”èH‚9 xF}8–þ0o¬gB€º“0<FC$4óqêêLyéIº$ñzGrä‚-†6hýâùEÈ<B8=xŒ§
+JîÏ
+g¼C¥$ôL¢µM¸‡¸gŠP s"µ8…KJçšû>l7A•EÛ…½°hÔ¢¡ÚË“V' šUl\Ird,9lú¬c¨}¢ÒÞaÇ“õTô°'Ú*áQ–ãXdjh\ 6ÀÏË…LŒ¯” ç¦õþ<̦Yp\<¢©Î¾„Q˜ B¡€Fæ_J(.‰@–¾
+^L)% øk³é¡N^/í£"0xÊË;ˆ1‡óɆLU¸æ@‰òëe¿h¹5„(ð,“Jx´4.P·t:®¤¤ þP–³.8™ÛPm¸Sp¶Mª`£Ð|?¸¦ ¯
+‡Ä× `LT:jKÏP#4..G¦6ÎÆ;ŸÒÚ–AXÃÞMˆ¨:Ê||FeøMd¬ó9ɯïÀ?©'‡Ê•KƒOí‹û=5ú¯ê&äÔ´ŽÞöìÃg#XvéÛ–¸?¨©ÓSäàÏS?RòÜ&Ž={¡ž^ Ýƒí¤‘Ÿúç ìD…8ôb¶@Ûó!¤’±”æùlØä§fgendstream
+endobj
+833 0 obj
+2678
+endobj
+831 0 obj <<
+/Type /Page
+/Contents 832 0 R
+/Resources 830 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 834 0 R 835 0 R ]
+>> endobj
+834 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [410.849 631.362 430.243 642.271]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+835 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [140.909 460.239 154.848 471.148]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+829 0 obj <<
+/D [831 0 R /XYZ 72 786.278 null]
+>> endobj
+830 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+839 0 obj <<
+/Length 840 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåÙŽÜÆñ]_1hfµ¤Ø+
+à YC– ȾY†AÍôîâc^mòó®êªæ1ÃÙ•ó—`±êê®û‰Ub•ÈU’Æ¡LÒÕöðB¬èïóÊ>ÀAj£B£qö ` MfY j•\†¿ŒCˆP¤’îúËí‹772Y‰(Ì¢lu{ç`nw?®‹ªÛFšõ­øù;Û}°MUT÷#Ñò°SWÝû¿^Ód»Ï›q$W% ›Ÿn¿ñ·Û ¸?ÈB÷àm¡ÊÒUcWw/­ÂÔ¬ÒP
+u¬V
+#­Ê•Z üßöæF˜É0]jÞGxNP
+gñº±]ßTn+Yw{K0ù¡î«L×Íë;øŒk$|Z¸«›“£íq жø mw´ºÝÈd âηåǼhˆk3•Sq2ôìuŠ³ %ÙD(¯v ˆ¤u:A#Ð
+O*ˆR1p•€Z@v!þ79Ù?{Û<þPÜ·¿;%s–A"”fS+á®®Ú~»µ-èn{†äêª,îsp¶]Ê㤠c“>‘È †Üær&ý¹lšLý_%sjfBàVG· C°Æ
+Â2 aw¥ÜRWŸÀxi2ºY
+aŽ£Ä^#Œ,w¨cAn&A7ã¬Ì2Ä }<àœl¯.[‚yØ[´Lôq4ÁÖ‚ˆÖõä\MFq Foæ¯qþ#_ ,j
+àWK .xÂ÷‚‚ý•œ
+¹oêþØ^p‚:2ó§c°€¤ ùt4\pÑ€sš¶pyu,‹áΛMªÜÀ~ÉQŒðF-õú£Pú®xI[#oì±!îhõ¡èö4¢È
+êvO‚ä´WKsZÛàÒDQ”rKXw¹%,Œ¹%Lè¼u(šíhÃ%txlp²¨˜;„6ä!¿"vq·i»áIéìI1)«DýsÙ 9hœRO&Y·mA)e¬§þ –dKÌj¶ØŒâæx±ÀÊX„ë3…›Š²rêMNpšÈ¶”;z貆|·ƒã-Ù¹¦Ì%VžÚ!±oi$´@Ô¤Âd“br©–”nįñÅ$赌ÒÓ,¶eµ&÷T®Ù'ø ïj°ki…ÔÁÒãh
+I„&Þ£ŠÒBÞ4®ø|äSΘ<à#Çô%“†ì&”ë’%!dÏ ã‚™pRŒy!UüÛ.°EFa*ÅWrÆWÉ`X`M©ssK…“«iJªÜŽ·8⪠*+¨³¶–9¦Lw‡€æ™i¦àn©žÇKƘ„*žeéΧÇqpqq=2ÙÃu¨ö 2¨ÿSIÁéP• ®rÛ7õõ:.Øjë’«ÁÕ’Ù`·…@\tŒ±IC×k¶¿X:eŸ\±ŽžZfšÛGŽºÖu˜Ì\!†D–9‘ÑÜÒ¡‡¦è:êÃQKw¹S¥æ7™éM48eQº¶„áÜa/øÁ |~œ}M4 <ìŒ —¢¢,èɨáS뉒ǮsƒCûœYcÎ$ô-ÍÊœú²*;¯–i™jŸûÃpC#j,qÏb;âLŽ'½¯ÁñÃÞú†I"ÁzÍIQî: ê’ á¦d ‚Á$"à!¢OŸôa+&òý,3m .ø”,u¿\v*‚ª¹1;D”csQqë¿žCØEª °³eÉ#6Š@Ei¨õ<Æ0·¥CDt¬""nMéW)õO¬¸ïú@xãü:Ät?(9©Ë|¼ô¤ ^‹K³¾›ª ,áæØ Òq§Ãç°ñ.•†Þù>Û)½Ôßl}#uÖM¤1õF‡îªòm"쳞v!Ïú«\ bÞ¶Û£gEÔ¿Šjkýk‡Æ’3-ÎÜZk±Ÿ§ á¤Ñ”Ó§/FõS uY±EÇ~M»{îäI9MM}ßäN4à,ußœõ«L¨ öY Ÿù¯ºU„á™fÕ¤e„¦Ì$ì½]Ð…¡wUý  \,Ažô³Þ½º{5€A¼Œ2{sE@ßYF<6Ô+›h7. îz¤ìhp
+Øýú‚2Âè&éÍÂ+ï&)ñئ‹®Ï!ý#°ÈK,æD¥3¢ŽÍÀ/gŽô@NH©áuçp
+endobj
+840 0 obj
+2736
+endobj
+838 0 obj <<
+/Type /Page
+/Contents 839 0 R
+/Resources 837 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 806 0 R
+/Annots [ 841 0 R ]
+>> endobj
+841 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [311.56 694.403 330.954 705.312]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+836 0 obj <<
+/D [838 0 R /XYZ 72 786.278 null]
+>> endobj
+837 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F39 496 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+845 0 obj <<
+/Length 846 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZmoÜÆîgÿŠë§R®á¾ï¢È·S7F€¶ê§$(hjå#|Gª$ϲÒþøÎììòåŽ'¹Ah!H\îûÎÎ<óÌPlSÀÛ¾1VçÜØMuxÆ6ôó~“Jß@õ”JäJâÛ·©çV¨Üj…ý{ýì‹WLmX‘»Âm®oCßë›ï²~h;sµBgeç±` ²êŠÊusõÃõ¿xÅÍl´¹–6NqÍþö§£ïÞÔïúï UÀ/£1‹m‘³4$¿Â]f×»+n³cÿ‚–vþvr(¯¸ÉâKÓTx{µ…Ú¸ÇÛÎûnbá
+Vdö{¸ê6Üñ³¯®'%R¹Tj³Õpip‚‹*wY ƒë椮Aý¢IêWÁ殶Š«ì9Èçk?àn¿-%D u3PáUÛ ¯ÿ‚^¦XbI˜xػŶ6çÑj`¹pvÓùÍí³­ «Ë ¡7Â挋•æ­¿,60[k¨}2³"—Z€Üs&&#b唯Öî9w\Æö¥:,¦
+U{¸ÛûƒA íI§s+_Î zoÁÕ¾Žã'°4.NbPËqä=®ãûГ$Rs@ÐØÿ܈Oà­æ¾vT";ƒBOé«úû‚IŸì9 4¶ƒ¡Î@SBF—ló¹²3¤.e4Ër6
+Áò¼Ñ"ÎÕ‰°96£‰ 1æ'Yœ7€€[ZÐ ¶ A $
+·í1ÐEÎÂ`Ú.]A¨8…}è<?0B9=ÁÝÒsœ,ÀšK3Ñ>DÚ›`Mp9 ŠÔó_·ŒF¥S|>`÷ü íêÊ÷ÿÇ»ÏïPÑ&¼›ÔJ¢±†'4¾éc³  3ÓNIHg—H'à2gH'… H‡Ýiz$§œŒ
+z'Ó©ÊÞ‡.zâ>
+´W»»£€¶”kø`‡+aèØÀ“Q;5j5l\'N¨å©ÝcÛÜî±Kˆ%±Ðù¿²Ñ(·V
+^g÷'O»©›ªóeO;€wàç*¸õkÚ)ËÐIuè
+±Gãßméü N@À@á.PßQ ¬Gg´ÚZÔèD‡¡f&\ê
+ã&&;‚AKM†Š$T1
+õ\±9¸L.ùŠ-'žÀ­D/…üy’¡‘^¿ÜïSBô2·^#Ñg?f?…ŸÂ¢Y®•ùß`Ñ”ßgéûª«‰
+½…g}–A7:wšn_±òý&•¾yd8Òé\`T<ìÅO?—'{A[ŽQ§MäÚ.]nOuÄ÷¡ š°ÕQ~j&ƒÊ‰J",%Ï^R·ëð)çnÞ™QËat¯P·¤¬ÜŽ©Ž­+rë–n¿=ûºAæÅûæJÇžÝÛzèJ$€\±,œâxÀmÄ-wÔ/«páQ˜iÔŽ(̎ߊB)xñ0 ­•€^&¸ô7ÿ ™‡œ7}ãŠ[«€Ÿôо–Š­Ãû¡l|{ìG/ ŒÌþœÙ/X¤>OƒŒüÖ'fÛ×7>Ñß‘WÝÃÝà#‡¥‹i»èFM$:Ó}vƒ0 KL7ªÈùi·÷!ßMßÌ:¿Äý@®ÒËþjÈA%•ÀQíäšè ÚcBþ]M÷F¯Ë;¤q%5Íô*o|˜Î÷ùš[£E8˜“/¶[_õ­Ö$š
+9¡}&ÿ‚E½ 2ˆ+~[MIxñã×
+‚vû$“ß Å”BÄ•®Ófæ ¶‘2†\¨‹_Sðhô8ý€³ŒE‘z‡œ0t
+ñ<>gá;wëi
+ƒßÐÝÜõ¯pQö]Rœh©5ád¸)Š¹!àZuÜBÌ=@Ãr\lmi0e<øJJìck„ˆéŒù™~ÕSBR°O€D
+ ÆRœà
+‚õØ´P²#Õ£ØvŒÙL$„žÂÎ<öH±ß\Õ1$ŒnD¥…ŽJÝ/œ#,¡Ø§v+§‘œÓç–«×0Ç‚­Œ'½ê˜p]ŨÃ!âé˜n‚+uBœÆ£Ø•+ ‚(¢|ØÔ2‘}+Ð53Ùˆ:C ³ÇÈáœb žx¼{?ÎME¾îø\üòéBú«ºcµæ—JLŽˆÙLjP~ ßÙyÞñåg^ ùjqŽÅc1‹ïþc‰Ùz _l๋ ^‚ÙÁóدåØþ¿ç?ÍOH8¡œ@îó°t‡€ˆV/Ýš¤D}ŒÎÈ;îëj…+ņ`Íu_\¸!c9K„ÁÅyTå4&:”Í‹Âü<aÕÝÐýfE)ƈª^kÍJ¹PXïËÇB¹pŸ«;ú²X«°Gá8 Lÿ]ýÃ/¿DûÆ™þ±»†xA€qðSÿ;Æ9 g]*¤;]‡cª«Ë!Ê¿
+endobj
+846 0 obj
+2926
+endobj
+844 0 obj <<
+/Type /Page
+/Contents 845 0 R
+/Resources 843 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+/Annots [ 847 0 R ]
+>> endobj
+847 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [148.96 335.304 162.899 345.001]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+842 0 obj <<
+/D [844 0 R /XYZ 72 786.278 null]
+>> endobj
+173 0 obj <<
+/D [844 0 R /XYZ 72 719.174 null]
+>> endobj
+843 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F26 391 0 R /F33 497 0 R /F39 496 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+852 0 obj <<
+/Length 853 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZÝܶï³ÿŠE€º$ˈ_ú@Ñ×íµ§F6OqPÈ×+X+]%­¯W ÿ{g8¤–ÚÕÞÙFr΃qÀ‰£ÑÌpæÇrù*†?¾JÅ*Í&ÒlUîŸñý½[ùÖK#J¥%Ó
+{®•L˜LVk©Y–h$ÿËæÙw×"]ñ˜åq¾Úl-é¦ú9ºíëvܾŽuüÕ‹]Ñ#ôß^­µÐÑ+zþÙu‡×\ªö«o©[»çíØÿ\ÿ øŸ®~Ù|l×Í-ûú›ohxÍ9SZÍ&ÿ‡3ß]sÈdZk!˜æ‰%ÛìÌÕZJí;ëï±-£m×Sc;;#‘Êèöj-Ò¨«Û+‘E£éâP´6Ä‘°¼:P¼(ª-öÆsE¦î­zðƒÅX—n¬%ágF]ó„åhù@É ÿ×ßÍø¼iм¯àíµ¨½‚•[†NATâ€B$"ªG|ÆQoöEݺÁ÷W:‰Š¦®hî@j× uIÙ„GÛC[Žu×Ò°U FË¢iLE퉴5ÿÝP½7V’Ì®„[L’3Tô0\’8‰†]wha¬£¶©±í¡éqg¿ cÓ‚Æ°V=Õ[¢²‚@¿ê`)³È ào’ 7~DEƒ‰ÉègOןxÝ¢I1žçÎæ¯~úᇅ…¢J;`c?R·U]£tôÆ‘™bêÄ8G×UàmΟŠ¦7Eåú•Ø˜–ˆÐ\C†Ïþ¶9†6„EbŒ –óËHp Àx&E.À…7¹ï«î%DÇEÝ[ïuài®»v¼ù«wi”w­Y
+|×)<„C.ø&“y¶êÍjû 0Šez•CË•„raÞ—©Ÿ€Øʲ”æP3•H°Kt:©$å‚J× Ëš±\øh›‡åŒØLs}¤›ô”ŠI z‚º
+¹Ë ±± …\BjaÑ à˽X™²)¬ßc¯nOØ؇ÄÅX¼)Cÿc¥„Œ6 l–’d—¥¼µ@êýûPoHö,xÚÑmßí©EiNFßœ:MݺaThFç5£ÞQVÏ£±^žFÿèî±ÓÄô˜wÁLíxÍ‘3HíÌ5¼%êî
+|ÑÔ¹¶³D'ŽJÈFH\Ä¥s`͸?âê‹îö#ñT:ÍX¬×cNA„_Þ—²8·Þ‡£8÷nå[/ðH
+ŽPâ²Vm*¶6sV9øp { þ e9¿dÔuf‘žÏ'Ø ã”'¤½J|²Q±R¥šÏÆgu`o˜‚µÆ‚2¡–º.&;R¿(Ë‹*¨0 Pr!(Û@Â…Í—&ŽÙëbv0†4è¼h v› NžåA¹¸'™®ºàóâuÜ…“Sý ÷ÖXÚ°Œ”!Âa’3ʨ¶2¥ÍòJëç…
+WPÅ඀<}šúÅΔ﮻þ¼õËýyöhô+>ù°‡nÅÑ®¯ìnM Lð¤£cïhèngÀSû¥T;ÎÁ;|
+=ò¦~³T;'žˆÒG,ÃÛ–N7#}nÊ°;ê-uO•ÁJžÀSq&ôüàgVÝïŠ[ ›ðÅ'ÒS 1_MÔKø­î‹n¡2ïœXuh¤»z0ìRšl£0{Ú(œŽ¾œ|þó{¦ä"Ñío]i»¸<ÇbË–sôœö
+H0»¢r{ÀXŒÇÕ&›RÉÂm¶ÚwXè—µÏóÔ…ƒ¸$a O?ò<Àò»qóL‡1¼3ßW1¦µp¥¾?Õâ(ò¹T ‡Üðq¡2_DE|À–?¡À½·†v—&Ø ˆÐª¦Â,
+k>ÐöBßqä¨8Fé)#„´<®ë–Š%YÖ°¯ÓK®`·Ês&r=³ÐTÃ;dÙ.¸7Q'@”žC”?+¼³#y™©/ ¼EÂ)éÀò!¼Û3~bLÙÐIJ³”¼87^”p3›\ò]F¤òD Z{)æÛÍxÆó õ&Iå®è {¿¦ÔÍy]7/$~u„V_úZäa®$¦
+b NAç8:vf9@£âžîµpüüˆy_,Nd Yüd§†düÒMK϶£o”Pi"ÅþØfQº@³¦é¹÷¦…|<<'1Ý”Ps¨ÛÒº*7>Þ¼wð‹tþ" ;ÿå‡ÇcuFç×ÏÉß" Õ!Ï®mœt!ä@÷p‹Ï,øÐÒ©ˆ»oÃÉÂ÷øº ØqGÑ.IÊ¡?üXŒ»'OõÔ‡Iöûõ¡@’~PªyDPté°®NAî.¡&œ +MNªŸ!£Æúµ–x*ÙL°œnaÍ©e=Uëàµc=B!jŸ#2øÍ/‰èDëcA)?Bì@Ø™
+endobj
+853 0 obj
+2504
+endobj
+851 0 obj <<
+/Type /Page
+/Contents 852 0 R
+/Resources 850 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+/Annots [ 854 0 R 855 0 R ]
+>> endobj
+854 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [264.26 476.597 283.654 487.506]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+855 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [188.524 463.048 210.948 473.957]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.3.3) >>
+>> endobj
+849 0 obj <<
+/D [851 0 R /XYZ 72 786.278 null]
+>> endobj
+177 0 obj <<
+/D [851 0 R /XYZ 72 563.243 null]
+>> endobj
+850 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F33 497 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+859 0 obj <<
+/Length 860 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåZKoäƾoþÄ —P†f¿Øäq“xƒm°u‹ƒ€"{$ÂrLrV«ÅþøTuUó1âhm :L³_¬ª®þê«¢Ä.?±³rg³4–6Û•Ç7bG?ïBë裙ڨØh|úÂÄ}˜¹W&ÎRƒóÿt÷æ«wÂìDçI¾»;ø¹wÕߣñÑõîf¯”ŽÜÇzl›¨íðWEoß}Gƒ?%B7<ñÐõ4
+‹CO{#óhäjÜ•Ú÷7{i#WçÁÏMÖ*ª[ØèXŒ5,†=ÝÀÔb …®u}1ºŠiŽž_ ™ç›Üý Ù Ô8÷
+(„Ly¢4ÑX}ËÎ]^ÜÌ‹ OókaYÓ•«ni×f\(KI :õ,Ý0Ôí­{,ªÕB×ÒæU=÷ãÁ iÝÖc]4õ'2ÅK•Pƒøf¯µ‰ÞÝd:šÍß l²Ü€K¿z'íâ˜E¢ã41|Øw⟮ïálýÄ•?è<ÖFó¼šÏ íF:™Á± IJ±Šä3~ö{Ô.—ä3¹ð²€u’±Åa¬wã¹o½æ0ãäÍÒÕä4ÞU`αÀƒx¦¶>¨èл°Œ\rï´ùÑ»ž×yÑáwÁš%Oì¨o|¤QÎm‰ÆJ¥q®Ò•Íï‚Ÿ cOç
+f(š¡£^²·lž©õáƤ0¡®hêùÄgÔ­®ŠŠZ÷q¤VY4 ;÷!L
+û®|óõÝ|» œ“ÙímgÚ\Ç‚ëø D,2I8âqaå0ÊÇŽÅ€›þ¼æ¯nü¶¾_¹vü)1 |èê
+žDD³°×ÞÂd¼‚÷Ä*Ïv½ÛÞ쵊3³Ëc#ÔNeÞ^Ãze5ÀÉd™¥ñà’X§è‚qj²I ¥6Ôx·áêYœËàé¨MÐáb °“fž7é©t¬”Å“°"Ýs¯bí} ¡7ô zÀ>½N a_‡é;ò p±àø¤ù^ù!Ã>sj8(p5¶¿_0<y²1 áË5pëÞ:E§|‰'2Ë@ù4ÑÔ÷Òi —r\°·ûXO ¢„JEp{è/»sS‘`
+népp‡ž‡`þC×vG‡"9‚·Ò:0ИæÌ4-UÄiÒ
+}Òsú¥µ¦ÃܺvbA®xsÄ”—Àû¥ËðŒ¯,>AŒõ‚Èhé:[oiÕ$’­Ó%ÆJaÚæ>:eÆÌÄhàÍ
+*Q–2–àñÔ3ŽÎ±+ L=¡Ü”ZD6°u¬?RpH¸ø¿‹3†”*'X(l÷ë¡ûz<'ŒWàÈŸ[B°´Á'°Õ‚¢3þzŸÑÂr—Úž r€=}¾:{¤³ÇVØËû
+ÐKÐÚàÜeX1il "3¤6¹ÇLìűŸw¡õÍ+ø Ir¹'ä-*××?“\ß Ñ” Âk+f¥ÓÛé–zÞÖ)|i$L¨©àœ„Ô|Aræø‹4çȦ åí‰tÁêÞš¢¤Wzþ鸾~îû½VB\?/ÝgþÔàé¥N"ñ™ËZðöZú$«©½@ÐÍ•Ž³ÿ
+9uÜtÖo`}Îf*º Ù w›åБäѪ#%êö€„sŸk‡lû
+^=çvVÍ ùRÝeaP3÷û¡×ŦøÛÛlJ_ú­©æã¹¥çù£Ÿ¼]×> :ükptÞ!¦ ¥Ïñ¢
+ˆßE Šš¯y9®¸äåJ¬’{Ç…Ôû)„]Ö‚lþ…:’±L´6*:ÐJCÍ3œ‘sÞËlœØl]?~?®ÍVu­[‰Lß‹¸,`ÓXâÙÅÑ^’p=æU0™&x‰ˆ3)ÿ;,üG4Ìo%áÞšÛ\äùXxúÂÂÿ}߆øËú”¥‡`D‚'Ký°K(b›°6܉Ñ5Í@[³sš¨¤qá“ ¦ ÛìÃM/*Š”Aóú—ÒHlN7ùã†8pqT8}ÙyGeÑ-¿JnMôPâêß»øÒÌdß,@®f’Ο³CI‚
+ÒÙôm¿:—#õ„ºôJ «€½ÈWlšƒÍy˜ãmš]±ˆÿÉÃù<oŠcûŠ=¦O3S†j¬l€5!G?b]2X˜‹¯5T•òßV€JbLÄ:ºˆæï,—µéÌ€ßÁ:.#m‚r*²eÝy püR Ç~é_\¤±ÂûõúŘ¯å´£‚4×Ùá¿
+endobj
+860 0 obj
+3002
+endobj
+858 0 obj <<
+/Type /Page
+/Contents 859 0 R
+/Resources 857 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+/Annots [ 861 0 R ]
+>> endobj
+861 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [128.757 245.064 148.151 255.973]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.10) >>
+>> endobj
+856 0 obj <<
+/D [858 0 R /XYZ 72 786.278 null]
+>> endobj
+181 0 obj <<
+/D [858 0 R /XYZ 72 612.857 null]
+>> endobj
+185 0 obj <<
+/D [858 0 R /XYZ 72 508.853 null]
+>> endobj
+857 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F37 380 0 R /F39 496 0 R /F26 391 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+865 0 obj <<
+/Length 866 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåZ[ä8~Ÿ‘à/”æeÓh’‰í\‘x˜…˜`[€Ä¢UºâêŠ&•Ij»gµ?žss®ÕÝ µ4åØÇöññ¹|çxÔ.„?µKõ.Í’@§Ùnz¥vü÷içZ¿‡>¦ŒbÄ~½@è;JßÄA–ÄHÿåí«wT¼Sa‡ùîö@´·åß½÷M;mwã›4÷ªæFgÞ`»sg‡b¨Úû3¯êá7 ½áX Üz@B‹måõ@jyóÛ¯ß}0ál•§A&²SÏ .² ÏeøW°X{CÑ|Æá•ÕŒLb„úõ•ÅÒ Tn5XC½…så=Àñì•õ"Rž=³žR7œD`ç¨kÿSÓbó¡áþj(êjïÍ}-”í‡ëà 6ùÎWx?9-ËËãZ–}@´* r“,(¿¾ô({zE/¿w7>L¡Ý¿'nðÄ*ö€!Ø,÷úêë—ö d¹g›Òò<»,†‚ÉNÅN½ÏÜk¦t³Jyö±ê‡Å¬¢)y3=ÄxîÆO¸ÔÈéb±º-J[7~dbïcäQ$ù‘c:ñ¾èI8±²ŒèLär^ºÆ–x\£<Rà‡Š‰#ÏWOÊð}Ïz~]r¹»] èë‚]5÷lí™æØnmh7§smO"([rç~}ÅËgz¥Á>£P9³°m²Õ?0_§B¶åÌ?û¡í˜“¾]X(ô+r§ƒqäÑB*ÓýƒŒ§+#AwÜ”ÓÍÉ\è6uõ"}uøÌ"3šX
+G ÃÕp*Î=*rˆ– ¢æª9´ÝI´÷ã_X<O'¼Ãl
+ÈÄÉ{b"¦‹ÀÎÆîmßÝç›L{t"å}ùY¸^ØîTðÀõ 6œ-Nj-ÌLc_È.U9ånãVŽU¼¶@ZŠ4¿¼ Ó‚Ûã°V·—¦dåŒXÑÅ<bž ›yONzŽ9qhÒeö á“%‡Ñh QB×µêÏ<ãØvÕréEÍ}ý¾¨…دaßœ:ßÌ^FD©Â¹7d 4JglCõ½‹ÃhÁþ¾åCupLP{tLÈŽŽ½ÚeÏ+ -ÿ¢Fãïx6þ$Ë„ãŽ"ªQz:r%é¡Êáu³¹â„J6jd#Š•ÅèW—Cì€^îÛÓù2๑͡w½yN›§tu¹f–sö8ð³°qZz©yØuèÚ·þ³­ÆYëû@ï¹=ä¥a¦raʬTU´éw,CI°3|Ið Q†¼å«¯nG¸‡Ûd&ÈÓè%`.Š”„Æ\„?_o¨à‹°É¢ÙâWÑæ(œ„™Hë› Ó1QDÔél™<Ò0rO™èJÔŒƒT;TGÎ!W‹K¯Â:ô@ é¹µá0]…î îøþ&³©/–{I › ¦ÒÓ©@' rŒ›¸¥}‰„ÁiÍ­Ûm
+Žé¡ªÉ[(ÑGr@ ÓÕ©ª‹Ž?Èd"Öwøa/Ð ÕžöÀËØ€ßíQVØ8Ápãõlw8:t_úiòÄË©`*Œ.L½òv[(« ¤m6 \Aâˆr
+¨p ­~Q¶ÌcæLŽ(rR5£ÖªfFE_ƒÎíÉ¢u®Ï)ÊF—#Ç™ÄW[*Ù¤YZ&‹øîöì¡ê‹D½|–ÑBʸ'§ ¾p°7±õ˜&@Ã"™Ç…píb Çí0ÎZK'ËñTfÉzÿÜK¨Æ–—¾ 3`်„‘1áìÅy.v‡ÇG‚µr£è‡ÞÖ‡'û7U³ÇÉIâ<’ˆ7Iæ_TòÎ$•€øܵw?ñ‡ø\hÉxº‘W¯å•ˆ/†YKûHÒ¥¨zî«ä—°<>á)ÕÎ3
+N¿B Xtg±aÐK!ÎÃ_ÎA¸íæÜÛsfʶ û€ùßbû…
+Uê¥;Ã*Q¤"W2QÆ“Ú%wÛGŠˆÌ)
+
+±ÎZõ÷vrå<ÅÊ9Ú1?„‹Çƒ…J(È%³ÄåŠ|×¢D¬ë™¼
+Ù®´ý¾«$l•ÌžD1E”b'€@bC0m´‚Íà—úŸ´Ìì%äBê¿ðØõ…XæF>àéäh<¾6Éù „ôjîó¦)O
+Rç ·iö¢ £Ù«£d•/&Œ7OKQH! 
+wŸ…Î
+g¯l]W•ð Ÿ}äXßžªè“6fåiükp²ÐÉA.>Ó~Ü#Ò#‘bâknˆ¨Ç¢3½
+*XE‹ÓÔû5«¬Ëke†j5Y†páJ±2
+endobj
+866 0 obj
+3259
+endobj
+864 0 obj <<
+/Type /Page
+/Contents 865 0 R
+/Resources 863 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+>> endobj
+862 0 obj <<
+/D [864 0 R /XYZ 72 786.278 null]
+>> endobj
+863 0 obj <<
+/Font << /F15 393 0 R /F30 512 0 R /F39 496 0 R /F33 497 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+879 0 obj <<
+/Length 880 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍYëãHÿ¾üOαéu¿ÜmN|Ø·0Ü– X„<Žgb6±ƒíÜL„ø߯ª«ÛÄ™™Ý;ÄiFJ?«««ëñ«2_ÄðÇF,ŒM˜0v‘ï_ñý}\„Ö70F+•–L+ì=³p¥´eiš@C1%Íõõ×ipθtÖWëWoÞ ³à1Kãt±¾skÖ›¿G›úx»+–+-t´æÿü}Ñýy—U݇XÇ4XV5ÞÕUwó;˜àˬÿøêëõ«•fˆ® ü98ÉÔ.šbq÷j¥$³z‘2ÍåBZÆ…œ™†ýÒ(?Áf­¡ùA1S‰\¬8K´íï#åÌ}Þ!soÞq=šQ
+åçñbág$@`öõëú{JÅ$¼^—'3|®$“Ð^%Œs5sÏp c$¼©€Üô÷˜ðîÑݱ©–+)EÔm lÈ(?6MQ-…:(»¢j˺¢nVm¨ÑÂŽ–}¿ÔI”íŽEË– QðÒâݱÊ;Üï¯Ú‹\3¥áiDÌ´°ÿ;õ•[÷výþæoc\7YÕÞÕÍþ'WCõŒÊ—ª¡ùy«¡~©Ú§Õð½Sõ†“bc¢‡n&<Xæ” ÆâÚMùHó™£ ¢Œºm×s ìÉÕwžÊR˜ètX®à§ ÉL”FŠ„ÅIr©:—²N‹mXù°-sdvKÇ<”»µná(KG-VÒ‚<´€çEJÉ;mÞ”~™·­ÒÛ¦è²rGÆzK­À2½)oñ¿pfÆü­’‰¨ñ%,¨&ž¨áM˜X®à y´^¦It&ZiÁΑ¶UÑû¬íŠ¦¬î©».÷ÅŒ,b2ãT“ض%>£%º §ô
+NÏi¸®ü¼sB®±ÛÕK‘FžBÖÜ–pBs"ÂÓÃÐ3%FEoÝcÄ“W8gKHî ÈO<º«1LÇÁxýµ0,5N-˜`,ÕDyŽ„`Dµ} ¯‘$Ñé‚ìÑÖ^’›Hÿ‚ÜÈìyOJ1¡äˆÒz†RÊ@GF„ðÕ„tF…?÷å÷¨ä…Œ@öhGy/3qMf)gR÷2›ÞvÂ
+h<7øHïÔœ{:6‡„eùR~Ž* hžPò¬ò®$B9Œõœ¥\þ(íù,¦Ä¥<Á#*»š% -úåìë'Ò‰C h0xP™Æ3Ü
+I%!ü†º]çÐQSP•X
+Þû2.HáRsÊ-n;¶À‹Ž‰ ¶¡ot¶ÞãVƒá$kÝ L êÔÑ-ÛÖÇ݆ø i´[¹)Û Œl3s%w†„ÍU]­z9:ï T耬ÉrPRdO8¦Üv'Ú•áO:£Ï8ê¢,¢°Gˆ5NÔ Õ\“ëØì__Â…[¯åá¹Æ”Ó?ÃȆGF:)§¹€áv&óv^úç @­l¹ê (™HŠêsq‚Á /kÒ1êÂœDÛ–·å®ì¼ŽâZ´]ü-JXì÷»lß 3BÇ/º‚!4rxìaØ¡/Ã`¬ú0ˆ=Ò4òŠ—Ù–û¶Ø!;†Gîù— È.‡ 
+3îç6”íˆ0OÆçCï5]™wX$Àþˆè=僓Ãqðkù±ÅÛòÔsÊM„JÛ`= ;YsܺÃMp/yFªîv‚7¿f-²‚jåõ~ïøé…£ý’iôžÌ\윂}uÊ®}ÁI ÌÂÖ1³èlmLUL˜Ê³`˜¥_(Tu7cˆJ§ùOl
+Í]ZïÜ‘»éëQ2%%Ç!†ò¸q¨JÓ
+„TŸK_³½8Œ®š–bÁ­ÛÅ~CU<3´AÜeµ =— ÀÙWÝl0«Ô×öTŸ#ý„$öˆ(9ì²¼ØÐh¸¶{By]AŒ+ª
+eÒ³"ãN†Î¨\ï×ÌäV±e²ÿœq×Åô»á´z¢˜Lä^!·.ÎB=‹<ÚR1…:ûÛóQ‚%®VwíãKKA{›á®1œõÞÉ9 ©FþIz/ìâ»óTCqÒµýNŒÞWñð_—Žù“ú  ”+ú@“uD¡& Î}Gh¨1qWê>≺Oï>=s«!8¤Ï+!8“øíöih¥åùIB
+&„¾Ý~
+endobj
+880 0 obj
+2721
+endobj
+878 0 obj <<
+/Type /Page
+/Contents 879 0 R
+/Resources 877 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+/Annots [ 883 0 R ]
+>> endobj
+883 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [223.636 234.809 229.09 244.506]
+/Subtype /Link
+/A << /S /GoTo /D (figure.1) >>
+>> endobj
+876 0 obj <<
+/D [878 0 R /XYZ 72 786.278 null]
+>> endobj
+189 0 obj <<
+/D [878 0 R /XYZ 72 632.949 null]
+>> endobj
+877 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F26 391 0 R /F30 512 0 R /F34 583 0 R /F31 881 0 R /F28 523 0 R /F1 882 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+887 0 obj <<
+/Length 888 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåXÛŽÛ6}ßý¡Or°b5äð¢}hÑi‹}H",t‹Bµi[¨-9’ìæë3%_ey·M/@a,$q†s93<C,1ý Ð<ÐF1®M0]_AàýÛÏ´æ5Q
+&Ñ}]PŒz͈#KbuI_H¦¤ "ˆ[ÓÁ» f²•õOZ}·Uï¾~±†à‡òêÕUðj+‘0žÈà‰†øCøTCâÄPĵb5¥ç@Iœâ÷)ér@Lð$A:ouÓÙ/a
+¿ÝäUUV/o²¦ÊïïbÓL"BïÄ·bãÄo–6;ÙükúÓÕót0ƒœÜ0 æiâçÂ\~.ÌÕ_ǼEíöäÏï[Ì^žƒÜ‹oÇ1Gd2ù“ëS¤Œdš«§"eN‘£éìã‘z]6Yc¡ÐÂ'M«¬¨çeµ#2 Jªg(yÇ(œÂ‰ *ÌwõªhROôqˆëE¾x_YªOBøf!ò0p>lòi¶ò{Ÿ­7+[Ó—ˆC
+Ò/7Ën㦲3{væWæï‹i“—…ÛÂÍn˶ʚ¼Xt&ú¬3§í•×€)y£Ô)Ê^m^¸Å#ˆSAu—O«üw¯t/5ªSºv‰ˆ0ÛlVy±àaSúEŸ”Àp:¡X–Y•MÙ\|ÅŽÔÅH<¬/’»¤ÒQ]謢¡öó
+endobj
+888 0 obj
+1072
+endobj
+886 0 obj <<
+/Type /Page
+/Contents 887 0 R
+/Resources 885 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 848 0 R
+>> endobj
+868 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 889 0 R
+/Length 890 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+890 0 obj
+29
+endobj
+891 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 892 0 R
+>>
+>>
+/Length 893 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ}T9’T1 Í}
+‡ðÑbyI©â
+Maæ¯÷Âm4§úpÊ•šj(MÁ¥K/C­%r á2à3…<‚¹pkÛò¦Õ<
+1—á1Á๥\F`‰"-ÿ<0MNIµé/âÝ å4²PHNK^鎚ԉôðÜN …;CQúðh5´Q±ð| Cƒ\º‡Èè "½«D™—[î=ë%Lœ>Ã’E7Fß瀘r¨ÒêhŽ¨%…àÖ.Cè\”n󞥹‚0ŽœQN륟°­ |A¿z†8–IË86Åmöl ô ¡‹÷ÿŽ„¾`TPs£f=²œ±e½\½a|蚢{ù™
+endobj
+893 0 obj
+573
+endobj
+892 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+889 0 obj <<
+/XObject << /Im1 891 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+869 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 894 0 R
+/Length 895 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+895 0 obj
+29
+endobj
+896 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 897 0 R
+>>
+>>
+/Length 898 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚT¹’“1 îý.¡àG‡å£Ý`I:†* Ç)¶âõWŸä?ÙÄþ$ë>–®„¿}ßîåµpýU˜ê?ˆj÷"üû~\`^Ê«óÂʾn÷út-?÷ÊFõú½¤ Ýø]ïï~¼¿¾”O×ú\¾T%|¿V¡úíÿKò/…™»š‚—À½14l®ã/Ê› ;šÂÌ_o…ÛhNõá”+5ÕPš‚K—:^‡ZKäÂ-dÀg
+ysâÖ¶åM«y
+w†¢ôáÑjh¢bá'ø†¹t‘ÑDzW7ˆ2/·Ü{ÖKÜqO' ˜8;$|(†%‹nŒ¾Ï1åP¥ÕÑQK
+Á­]†Ð9)ÝæO:=Ksa9!¢œÖ'J?a[ø‚~õ q4,’–qlŠÛìÙ@èBïÿ }Á¨ $:æFÍzd8cËz¹zÃøÐ9E·ò3z­ —Á5{N$Õ5"”ÖQû$Âöã¥û®=ý€>Pp=1/ã¬ÃaÇ|bU6á“6ê$9”x}F].Ê’÷ˆQ¢(g¸;ú™Kv?ñŠ¾É ,¡3ã„&LË5u~“Ü,‘\¤Ø;3lÁÃaÃ^6Ë2
+endobj
+898 0 obj
+573
+endobj
+897 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+894 0 obj <<
+/XObject << /Im2 896 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+870 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 899 0 R
+/Length 900 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+900 0 obj
+29
+endobj
+901 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 902 0 R
+>>
+>>
+/Length 903 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚUT¹r1 íù,“fƒƒàÑz&àH]&•2¹Æ*\ù÷ƒpåD–v@<
+N÷Æ`Ø\Ç?’=$6@v(˜ÁÌOo…Ûh.õá’“šj¦à¥K/ÏC­%r†p è™ÂÉœ¸µíyËjž
+J¢cnԬǭgnY/§7ŒSt+¿0טp0\³çDR]#RiµO!|?Nº/ãÚÓè‡Ñó2Î: vÌ &Qe >i£N’C‰·ÐgÔÕá¢,y%Šr¦»³Ÿ¹d÷¯è› ºB1^@h´\S×7ÉÍÉEŠ°ó†m ylØËfY`]Qßļ×pn/Ýo 9YÀ¸çœD~j3{yKDó{ {üº”çòørDendstream
+endobj
+903 0 obj
+587
+endobj
+902 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+899 0 obj <<
+/XObject << /Im3 901 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+871 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 904 0 R
+/Length 905 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+905 0 obj
+29
+endobj
+906 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 907 0 R
+>>
+>>
+/Length 908 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚUT¹r1 íù,“fƒƒàÑz&àH]&•2¹Æ*\ù÷ƒpG–v@<
+N÷Æ`Ø\Ç;É› ;L‚`槷Âm4—úpÉIM5HSðÒ¥Ž—ç¡Ö9C¸… ôLadNÜÚö¼e5O€[8”ån¤)-­Dœ*¦BŒ‡Ûð˜PðÜV΄x¢¸–˜&g¼”Úôñžr:Y($§'¯ GMêÄõðÜ. E8CQúðl5Ø€¨XÄ ½…£AnÝÃdô“ÞÕ¢ÌË=÷žõÜ3&Î Š‰É¢£ïsÀL9¨´:š#j)!¹µËœSÒíþ”3²4'ã‘"Êé}¢ô¾µA/èWïÑGÃáÒ2Ž-q›=¾!uñþß0€à F%Ñ17jÖãÖ3·¬—ÓƇÎ)º•_˜ Èk L¸ ®Ùs"©®©´ŽÚ§¾'Ý—qíéô‚Ãè‰yg† ;æ “¨²Ÿ´Q'É¡Ä[è3êêpQ–¼GŽE9ÓÝÙÏ\²û‰WôMa ]¡/ 4aZ®©ë›äf‰ä"ÅØyÃ6<6ìe³,°®¨obÞk¸·—î7Ðœ,`ÜsN"?µ™½¼%¢ù=†=þ]Êsù øˆDendstream
+endobj
+908 0 obj
+588
+endobj
+907 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+904 0 obj <<
+/XObject << /Im4 906 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+872 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 909 0 R
+/Length 910 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+910 0 obj
+29
+endobj
+911 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 912 0 R
+>>
+>>
+/Length 913 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ]T¹r1 íù,“fC\<ZÏä©Ë¤R&×X…+ÿ~ð
+endobj
+913 0 obj
+591
+endobj
+912 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+909 0 obj <<
+/XObject << /Im5 911 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+873 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 914 0 R
+/Length 915 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+915 0 obj
+29
+endobj
+916 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 917 0 R
+>>
+>>
+/Length 918 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ]T9’1 Ìù
+†v2ÆA‚dê*?`-e.GrùªU°‘¿o4ÀQÉÖJ3Ý$Ž&
+endobj
+918 0 obj
+596
+endobj
+917 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+914 0 obj <<
+/XObject << /Im6 916 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+874 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 919 0 R
+/Length 920 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+920 0 obj
+29
+endobj
+921 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 922 0 R
+>>
+>>
+/Length 923 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚUT9’1 Ìù
+†và1‚Gê*?`-e.GrùªU°‘¿o4ÀQYZi¦›ÄE ¹tp%üí÷í^Þ
+×ß…©þõQǽðìý ­lN_Ÿ¶°rn¿–Kyóˆ¶_·{ýt-¿ôʲŽE­^x:l µúጀñ»Þßý|ýS>_ëKùZ•ðýV…ê÷§ÌòÀÏÅKrýRx·)Ø ÜÃÃæ:þcö`l:€ì@YF f¾{+ÜFsÖ‡3wjªá4/]Þ ¾¼µ–È=„[Ø`)ìQ̉[Û‘7Wó¸E@YFšâÑÒJÄ]EÂTˆñp <·•{""QË?L“3_²6}G|:¤œAÉ Æ+ÓQ“:qü
+åŒ>Ñú‰ØÚ°.˜Wï1GÃáÐ2ŽÍ¸Íž„¿¡tñùß @ø ¤‚–è˜5ëqêÀY[öËÝäC§Šnå4¾Ö€ÂeÀpÍžŠ¤ºF”Ò:zŸ$b?vº9ÜêtAÁÀaÌļ³C…ú„U6q¥:I%Þ¤Ïè«ÃEÙò5J4å,wW?ó’ÝO¼bn2—Ðò¦å5õõ&y³Dò"Å°ó„m x$l¸—Ͳ Àº¢¿‰y_Ãu¸½t?¦²€qÎ-ìD}j3guKdós {üº”—òtð}endstream
+endobj
+923 0 obj
+593
+endobj
+922 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+919 0 obj <<
+/XObject << /Im7 921 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+875 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 200.999 200.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 924 0 R
+/Length 925 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+925 0 obj
+29
+endobj
+926 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 200 200]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 927 0 R
+>>
+>>
+/Length 928 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚmT¹ŽÜ0 íý*“b¢Ž6@>`3Ó©&ȱØ)¶Úß) ã±ôHñÓÎ…ð¬ýþØ^7.ü}Û^ s‘rÑrÇi£}vkåÂ4w€ÇÆÁ{ÇzùŸÔÉ
+»Ðµ<ÁE¸?¶û£|¾mŸ¾¶ÂÍÊí§Çá¡ <åB»t<@ÔÕ(ÞÛãï·çíËÍ~+Jø/BåÇæ¦ß|IIòPäÄ/ÿðc“ä_7îd…mN·Š°5÷w”›v ÛšÂÌOï×^jÝ)Wªª¡4›N¿H›‡ZMäÂ5dÀg
+ysàZ—åE«y
+endobj
+928 0 obj
+618
+endobj
+927 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Times-Roman
+>>
+endobj
+924 0 obj <<
+/XObject << /Im8 926 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+884 0 obj <<
+/D [886 0 R /XYZ 72 786.278 null]
+>> endobj
+867 0 obj <<
+/D [886 0 R /XYZ 119.696 314.795 null]
+>> endobj
+885 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F33 497 0 R /F30 512 0 R /F28 523 0 R >>
+/XObject << /Fm1 868 0 R /Fm2 869 0 R /Fm3 870 0 R /Fm4 871 0 R /Fm5 872 0 R /Fm6 873 0 R /Fm7 874 0 R /Fm8 875 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+932 0 obj <<
+/Length 933 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZmã¶îç+Ðßà~“‹#¾‰T‹
+­L¯…ÈÒž$ßÚýõ™áPZÙ–w÷Ò4M‹â€5_†CÎ gŽŽ/øÇF,ŒM™0vQì^ñýû~1´¾‚1¢TZ2­°÷ a¬´eY–BC1%Íuúë<8gÜ
+Úë³Õ«OÞ³à Ë’l±ÚxšÕú¯ÑŠÿcõõëÕ·oÿ²ŒµÐÑï`à‹Cïêõw_ç}[þ–脦.Hwžà†z›ªÉ{j:\ßÃB¾üûêO¯¾X½Š53°}l™J€ƒ1™ÙEë›W±’ÌêEÆ™.¤e\È™éØÀ_&xʬ54ÿ¨µ„©T.bÁ¸Ô£ÜRÎÈýöÉ®'s r¡Â<Š=HpÆ«aÝH7J)“`+–§3çŒ%“ÐŽSƹš‘søPD,€‚ÛQŽ“³ŽöÛºÎ-c)U´Ù×E_6u‡]åUÕ,E=ÐlÞÞ–}›·Gìò¨+òª¬ïh®¬ñWDý6°j]w¿Œ…‰pü°ÄM Û¨i×e÷Ž–­ËÖùÙüUEåæˆ{xžy_ÌÑ 2/ù˧1Ÿ±‰ÖàÅ<ëyÑWG’ïXºjÝѱveÛ6m‡Gèˆ8ä‘pì6ˆg¯×PDù¡ìÁBé“s½YZí[àÒîšÖ£ËT"ÓÙj:õ õK`ü€š0Ðæu·iZ¸"Á":†•xˆÀâR¡0¸vAƒµFšš~˾sÕ&ì^¯ÇI/øZ†~34 EÔà±±ÉÏ·D£e©ìˆtø©ÜšÖt[—£~oH’®Êk”¶'MA˜çUׄo«òýÞ…ßÁDoûSþ$cÓuåmNé¸ÜÒ û­ìÔ[Fo ~¾ï‚9壽¯B¸šcˆÐLi %p-•þyÃê;Ôá—?:ªzÌUžeÿbX}iTU¿ì¨ª¢¨ŠWëŠçˆ„iaþžóÝ¿ÃsþŸŽZÇy L¤;1+ H͆F¶Ÿþ ‘2rŸW46‰ªÂ¤¾p|iêeÞäg"„õËg'9S€‰£-òtï÷ö}~óÚ{é4™p0 3©~=³…a Ï&:P†»ä§8Ktú¿ŒY3ðÛå8ŽtÆ[J„Ô))é¸ö¾u=¦&Ì»À58Bb.ÓŸÐò&À‚Úy}Wù¬Ç)'ùùŽ~w.ïö­g­QµÍŽÆGFCÒ*=.²þd@Ií¶/ ¯dÜå0ðĤ& ¹ÁõÜ:FEµ»Ë§|äJ]f¾Ï/P `!›F˜”ym|æÉÙa$Lßs.e93æ9,ƒ}¼'uÄøº iÖŒ.ÂÕ Û”•žz‘äúºÁ)xú4Khq™M|ߟÒãhxÓSóÑÒØó–&7>ãFˆ+Î/±ÇÙÞÐS=54¡U5ç78|fï÷mÓ{ I›a4Á-Àò÷Û
+ÿþ¿£¥äñuÞ®©w
+T®Pj t~oNòsÊ6¡
+µ#È,@’²u©¦Ãa½G²°¨s=
+×uTÕ3š¼9"ý1‘H98ë‡wøÍÃa˶¨ÜÍ ä$L Zq‡Å ¾ÕP(ìŽdøü0Å'([Ù–b¨2W^­Èp™2)ÒŸ‹¬Í¿Žx߶’ 3½|Rf@Kq<Ìjwºì8·ì8‡t@S:סN y#3â °#5üd/‚;
+éÅ£‹¤3rhàÅä ú€ žŽY¤çUyˆÒSða¹=AVFß,34]ÿ®hËûþ÷`X.¢?7„E`Þß ø]-³4:‡VEÞ3á’Ϩ86r«¤šT@X€PB`uã Lû €CùšrMC¥6ð@h¢œbK³ï©…”àXá<7 R,zû`„uÛf_ηm (ë#u×eWì».h¬ËM<w- OÔ(r¬¬â]ù»sõŒ‰lÊÆçæÄB'
+Ìû/bdªè
+^ÑßxÍ †¢± @š
+ÊYD‰ñŽÑMµßÕ´%3_©òsטÎ
+lg°\ïiÌâ–™€€'=f÷1}¶¨€W5~$C¥–ÓÍà‚2³ÿBÓõ7÷HçöDÁçÞ UÔØ…ø“Ì|¿BoÉ$UCçBÅDA*ÆvàØ¡ÎTÇØ¿¦cp¥›?«b9Q±ÿ6£´g¯\N’QŒ¼¦)w P*ˆ”™<õH”k 3/šP8k˜É<.€ßðæÓ€ØÀkjçCPƒÇ Æ~O®Ü.è(¾º™+!AÂsÂŒàþÚ-„° ýôѨÎìïa§‚•"o„DLq@øÜ–Í@èP¶+©xDT^+ðû¡töo‡7Á€Û‹|ß ¨}ôÄ󃂆¯“
+H»«%f˜aÁ÷Cáéd#@~yë¿m¦`ü~&ïØ{¿ozwö¥-ã2rmY’ÁÓZ¤ð~J=£×D§D8†…_…xD°ðf:»w—æRˆÅb\ðéåƒ …
+n)©Šf] !lð¤¹kŠ°Ëdg‘Üó3ÑzŽ‘?Å”,ÏêQB¡§ñÙÆGˆyI…
+¨ä„ÏÌ‹ %~YÇ
+ ØÌÊçþG€ì|ñøÉŠ—Öç[¬)ùT~e‡
+endobj
+933 0 obj
+2620
+endobj
+931 0 obj <<
+/Type /Page
+/Contents 932 0 R
+/Resources 930 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+>> endobj
+929 0 obj <<
+/D [931 0 R /XYZ 72 786.278 null]
+>> endobj
+193 0 obj <<
+/D [931 0 R /XYZ 72 249.403 null]
+>> endobj
+930 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F30 512 0 R /F1 882 0 R /F26 391 0 R /F31 881 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+938 0 obj <<
+/Length 939 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZÝܶ÷Kÿ…ëStÀ-#~èƒ}°[uÓ$†³EšÂw¹·‚µÒFÒÚ¹ |g8C}ìêöì¢(RðŠÔ’3¿ùÍèäM ÿäM¦n²<*Ëo6‡gò†þ}¸ Oß@IšD‹Ä`ë ÁU\éDäi‚ò/ÖϾ~%“ Û›õÎË®·ÿŒvms¸]ie¢~ïð!‰Þܪ<jºþ‡M[{zù÷¢¾?÷ŽZoÝε®Þøf}[Ô8äTTôú§8‰Ÿo›÷·+•Eî;3³¥é_4Ð |
+þ‰…`
+›j2‘à˜ ÀL{™Ÿb/Ù“TÊaÕV—lT+›dt·71XëÜjaï°Èpoãš
+
+<ÓÒÄßÂ=À…Büâ@•$QQVÅûÊawrnQÊfhQ8À[”úŽzKj¹¶.*Œ~8¸;’±lÊÝ òF€â^útpp ÔÁÀzZÆêTH¼éMQÖýúáè–àB\
+AÙ‘e½-7EOؚ™$³IèÖ¼+ª„íàÒöoqƒü{:fhmzP]â-wÔ…·3›‚ÝŸ®ªã>ŠÝØÈ#¬Å“Œš´ܬBÏlæ.̱ ® ‹Úò~ï/è·¦¥ž²®?²TŠrío¢À‡IÇ<'µ@–˳ùFx’Ö$Ý7Ô3@vzx©/ô©ì÷Ax= ÚëšzŽE g|ªŠönaGdæù‘ž$<Px%Þ:_üôîlØ5½C”Í£ƒ'ÄÏ>ïX°l½m™èǽ«ivÚ¨÷Pœ`~åË;òÚhsjI{Ü•w…¶ÕXŽÐ[%'F¨ã/^—5ïÄy*
+¯ðXȇax »Ã'^£G=ˆÄ{z"“Ä JVУ_Œ}ßu½ð;”)DÇt¶ÍYŽDmÑõwÉ;¯w¦x 6lòY€Ä TÚæžâ|V
+Æ$¶ýÎ,3ÚgÃ$yDhêhu [ £Äñ§îDA e7õaŠ£MâÂþ5'ªžT8z˜°:|Ýw®ÚÑópؘ<0®Q7ŸáçSAnQö¦°ÀŽÇ4ÏÓ÷£ßߥQ¥JX;Ý•Õ²¸é]ý£¸RA?xÒŸÈ%á´OÍ;*賤Ûóž»%M‡Lî*‘
+BØ:ˆ<{¹J$1æE Øô©b
+
+²+t êÞc÷ë¿Üõnm5lb•xú°Ê…âL_è@¡m~Óº›Ý3ÈDžørz£ALé…׫ þ—üÈAžgô~üø Œa¥ sJ®Ó†W‹ŸRì`ոᰇ³)¸Ø?údا6BkØ'lW¦ z®´Ðð¼J…”faŸT‘i*fJ™_G¬¿:4þ…<!‰~LWµäÈ™HMÈeÊ-'”uÄ08òËi"si~'Õ5sA™¡1—â€Atñ "Ixc0¡¥eä’œÁl_²õ+ŒšžúSë¸L ‰Åç)``ŵŒƒyØ’à,úX6íì»,àdOr‰IGÏñݤgÿŠÑpƒg5©Zbߧ²ªÆ%ùƒÀ´Ê‡-âj*gþ¨°Òø~`äùz¨þú7\|?¯äŸWOmÂz(k&ÕF;#Cñ—_íNõ&Ô÷Âùúz-L“DYÓï¦èÕ‹©rÓž6ˆób©FŸÖTÈU/
+‹©<ÑpØê›…‚ 2€ŸÊ>^¼d&c¿qºeßÑ
+ç¾`¨ŠK:m0§꽎,à+4CZfÍK´¯{ú‹ ¢A Õe‘’p÷áÈ_úbÀOEÉ÷ýIÑ#ù¡<ðÓ'_O[L#’!#ÿÇà;£mè°ˆ=üw*uCÚuå¯nµu¨º…t06¥…ûضèñNM àÍ™,6!Ýú¥Äòö*KSô5…7M½åïF“G 
+endobj
+939 0 obj
+3397
+endobj
+937 0 obj <<
+/Type /Page
+/Contents 938 0 R
+/Resources 936 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+/Annots [ 940 0 R 941 0 R ]
+>> endobj
+940 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [289.423 334.083 294.878 344.992]
+/Subtype /Link
+/A << /S /GoTo /D (section.8) >>
+>> endobj
+941 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [328.211 334.083 339.12 344.992]
+/Subtype /Link
+/A << /S /GoTo /D (section.8) >>
+>> endobj
+935 0 obj <<
+/D [937 0 R /XYZ 72 786.278 null]
+>> endobj
+197 0 obj <<
+/D [937 0 R /XYZ 72 618.481 null]
+>> endobj
+936 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F30 512 0 R /F26 391 0 R /F43 549 0 R /F1 882 0 R /F37 380 0 R /F39 496 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+945 0 obj <<
+/Length 946 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåÉrã¸5çÎ!¿ #]eq ‰¹u2vÊ™é¥ÜJrȤºh ’™¡I7—v<_Ÿ·
+ü„Hâñµb j»ï Ú¦©ê™{)fq2º—„϶¶ãEWÏ Vq¨T6 ¾¸¾þxõö/¯¸úîãå»·«Yò…Ppco(!bOƒ?·¤c¸ìXi$ŠÆëðB¦*hŠŽ™à „vuªÉì‰eÆSîE ›·¶Z[^²òÖm[Ü”î(ïÜoušøÈ›®¸CýÐ&Fýà³ÊvÀZÚß‚þãR én‘
+`D‡&2
+n¥ô€àÎmóy°¡bvÌ#Ç)æí¡dÏ™1½³hX–õ®Xçåˆðy'–ÌÀf…~†Œ²œŠYPk†¶µnóÁ®CE‡(ƒo‚
+rÐO™È‘ýÏZËïñëPiý|¹`ê9çÍ°=†WÍoÏ–‰ôYTu“drq² AXaÍX„±£ÁW_bE¥£ œùr,BÆe¤·ûÄw‡‰~”#\ìT*Gp4 $TðbU9ÎÇÜçw ”®ÔôA8ÌgôÙ„Iäïû>'¼z¼·s Õab< å7YTF¨/hŸBõY÷ k¨ñÉQvL/ž½¸˜Pä šù’
+΀N£$ÒÆ&géã¬ÕÞÙÜ-ÛÍQQ7ŒS‹‰øL@¼À¤œ¾ÜG“p/\Åbé®dæsk%²±ÚŠÃR‰_eµÙTm“ùP™‰t0¹Üõ<DF
+KÙ µp>W(Éq¡„Ç›ô v¨ƒJqïëTgÀ·êŽ £˜+„Ò±_¥.úà뢿"{OFç¼Ù–uîÎIÒöÁ½uT5A‘ùdÍSžª™2-^R3Aº!õÿGÍÆ?%‚þ~®£nB5Ð4Î õ °7òHîr³RE#óÁ³:\²%á
+- ÷ÖÎ8ŽrL€Ù6õ[=ѺHp`÷ü8@9Ÿé*ÄzÕñoáè(ª¥«j" sjyp«{(>È!˜ˆ“fŸ×µ÷ìਯ
+j»Á’},|7–›¢±knêàûõÝ=Íq#ØÑö.3‚ŠU˜d¾˜ß¼¤bíAñw–ý|¥Þº”PNÃÖ4c×£V"În"E­V<﨣CÞ+ÁNð Énpš
+jïBqÓ;ɴ쇑ú HiÊc7åÉ(Ù3Éh¢35á‡?òåE?â":M:¦ÓH7ÐÀó¡Ôeðz¶›¡4¨ß fIZ„±ôpÜÙG¤;×'tWÉùô¶ðiÜ‘šÔ+ÚCp˜¦ÓJ¾±yËóA7™~2!³ÑD/Õ)k…t“,%Í|3BhðZB|I7âüðC£Š´GòK°á± , ôl¸>Õ™/«³‘(Ž/ºŒö£§ÝÙÉ}ß¿¾~ýæbuq=we©÷ýœ¢Úë¼£t€&o4/IH0øSÙ]N­]Œ§l$Bò¡îÅÛÜ-\G„Òضn6°.°þá\VA^T4Ê<Ÿ£ÐÝqTu2}ïÞ|ûnõñýÅõ›«ÕêbV"±áÎ$½†Ýš”º5$3÷.à hÆ™ƒôNDÇéðU6>À‘ïfGNî±—;îÈÃc?(:w)”»èÄ+?ã(&ÕÁÆ:ÎU;LkRlò.ç•ýgÑvèÉâ,qc£ÔeôøØ•„4Jõ¡ØxS¸·H é'Ê7'˜xŽ88RâQîÀœÎx¹‡[Ë\ó#;1jÊð9„
+N©±•UJÄÞ›’Já¶/Ê£¤ÔÁkj×e¾]'\‚_°uÈ'èJq¶…n
+H’›ÇC¡û`z`w3C›4ÔYeÞQ¨ÂõºhÖý]ÛáÌ‹BH2 ÚýxŒ’ pËÿ‚¡§ù¤a¡Fe"ðtèÀmø
+Ãt ¢ZCe:c÷SÌèÈœÏùx…p˲ðņ+\ã,!É­×Åf¨¨×FY—$…C±)Úu߶\Ä“¢›Ôup«ª®~·C“™%g?È­GU—Ó+Ø>]²¹ú®s•[Yž»2p;z{è··u_ºRp_Á‹4'š;c÷ÿMá2§IùÈL>9*^ù&̨أq8+èxž3àÎ9çÊ7°O&£BÃRšçG®Ó5ºªÝôÌÝÃópøw Éÿ.ÁÇó³2.÷—"Ó$dÿ½’pT؇eO…§¦eñNËäK§eé×ÿŸgÈ(ól›/Æþ>~ïéQ§‡
+™eÇO4Œþ·‰)ƒendstream
+endobj
+946 0 obj
+3071
+endobj
+944 0 obj <<
+/Type /Page
+/Contents 945 0 R
+/Resources 943 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+/Annots [ 947 0 R 948 0 R ]
+>> endobj
+947 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [394.423 613.108 413.817 624.017]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+948 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [445.938 613.108 456.847 624.017]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+942 0 obj <<
+/D [944 0 R /XYZ 72 786.278 null]
+>> endobj
+943 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+952 0 obj <<
+/Length 953 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZéÛÆúÑù'„
+%‚Qò¡-¾^Ò Np0ž‘ᛲÈSñ2hì×é@[Ëaóï‘­Œñ†¡¢»Ð»ièWÃ> •¬-ù'm¼D²ï/òm˜Q ÷ŸRm ¸Ô¯»Ïy ;Ý-ƒ¦`¼\­NpR²žÜ ¾Ûê Šlª©Ï¢Œ$e#fëA§WèôHB )ü®›ÚsëN6ª`«¦îªµoé(qðí®b»áqÚ¡P 3ÆÆ9žá”·(¹Òq£o1Tq÷[ØЩe%H'|“K‘äðŽ;r–¢/êÉØÁ¸ °ÑQá÷xl›c[Á`‡FX{žNö
+s¶­3ª(wѳ+'†ãþ]y8î=f“Ó±Ny½Ý55Èø[$Ùœökž#ÞÂc«m‚O¯u.›üšç˜ Ä­m¨%ØaÞ Ç]rñ!.÷ž3Q]ýB è…ì
+Ô˜ž
+FúáˆËyø|AIb“iØ8TÚÎ ZÓzFkÏf"Šƒ êUÔ^â‚‹MíyÞ ©6±†N³™.u¬¡½Ìb¨gä ‚`9ìøž•Ù×r^õXD|ºí|ÙÑ‚ë‹Ù{¹¬,R Ç®¦Yeß C‘1Ë•o6›Ëå‡f½Ù—Ûë™pðï0EP¬*ò‡L1up©RØ"œu;úkÄÓûùÿ°Fû¶Æ/‡ã$k|éWýc¶xÏ >!ˆ½­Öýîþú¯¶»þú~Qþ/š—‰J4¯<¶.{ؼL®>ɼ\œÛìÛ¼ìætrLÖ Gšº‡A¥ Ý ò"Ü]ÈfJH Ûv…,»¹™…'(?óŒÏ™ßÝ™ú¸0€Ÿuy Â60.«`î¹Tˆàª qT¥úÉñØ dpì 3ž–ãág#G™Õ‚!ùa±ôqê©`8Êò¥)ow¢ïSWnE'•h
+wÝå›+k%Gâûoܧ}_1+è3güƇݬNmëd ®¨ @çÜñþC÷ED!l‚€Šá;›¶Q͸å5ÿÚ3¦‘sGÙupBÜG™¶Td‘"TƒbHÍ#r°¨ÌN°Nðö7·ƒàÿ|Æ›°‹Ñ=ì^jFì°d‰Ï‡ˆØY¸“b»¢¯ à õñ=[ÐɆß
+¨oj{Ø{c(¶Þ*jå
+…—wP„`K‰µ;=?ScsÑÃ*veéÕºËÅÀvóâ|¤è<Iͤ~ ”$%úÕ|Uy Š)Êî5o¡yÄðM€ÊqÒU ¯:Áb ºA&œ"سŒ”⬭ ÆÑ¢Qà;žðPlSÒ'rU7A"|5¬'XÖxÄ"²HŽ âÙÊ‹–oV«¦]_Xl8w í*”и@´¢ø
+<<Å–`³4 ²
+~ÝW‡Ð'—¥<C÷ئ0™9ˆ$dݵ,fzj¢rà;·‡¿Ÿ:Ùk&9¯¦¤C­y‘$LèQ˜Ü[ Ž]õ‚IjÆÜ]2>-´¼w–•n¶H-ˆà·@e÷¡ïîcÝ· ˜Ð±? .8¼ìüè‚žñ–pÇÝœ3p|
+Šæ.é"ƒ*‡ló¼O¸•¬^•?æB—˜m">_Æ,]Ð-L63ÑÓÀ 4wú¡è Ez2¿ “‹—_LxÉNàe†XÌYØy~áÊ C¬0¼®:0™UÏSFj‡9ƒÛgv‚­fj‚­fæÌX°Õ¥Õ’ñpíª9O\o•²ÿYÓös®˜P£å½ ‚u̜졑Ç~uƒÑ9½¦6¢Ê=¤WwͶ.jðˆ]x£A; û8#ášr§xÁ€KÈ–{ ’gÐ[®¼ ¤f¦g*NmUHƒ¼Ò°…YJ‹n”¡gÝœîö~‰\Ö<{
+…Ó!Á'×ô}sฬΠM߆¢ââ9òüaÐjëîÔòƒ|áÄúL&åªÉ°€é¨+Ãg&f×öåðª3ÞT݉žÃ`Ùö&.
+ɸ¼À)í©®å
+”ìßõ?áô(ý³;oýèÉ
+Ù\8äŠÊÍ\³“uý1±ïPÖTß;pr~e¤…ô5ÑÙ*yðÂÁ©¨E UmøK1Ù*'yc;ïrKµY†ÿEß{!n‡*‡+³zìê©àb­ÓGáë.)­àžo?~¹ý'Èìtendstream
+endobj
+953 0 obj
+3250
+endobj
+951 0 obj <<
+/Type /Page
+/Contents 952 0 R
+/Resources 950 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+/Annots [ 954 0 R ]
+>> endobj
+954 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [494.463 320.367 508.402 330.367]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+949 0 obj <<
+/D [951 0 R /XYZ 72 786.278 null]
+>> endobj
+201 0 obj <<
+/D [951 0 R /XYZ 72 719.477 null]
+>> endobj
+205 0 obj <<
+/D [951 0 R /XYZ 72 698.281 null]
+>> endobj
+950 0 obj <<
+/Font << /F15 393 0 R /F30 512 0 R /F27 394 0 R /F37 380 0 R /F26 391 0 R /F39 496 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+958 0 obj <<
+/Length 959 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZKãÆrÜü 9ÀªÍ~‘샳÷ÞE<ˆv`PgÄ EÊ$µ³“_Ÿª®jŠ”¨™1,$ì²ÙÏê¾*J.bø“‹T-Ò,*ÍëÝ+¹ ¿ûE(}uÔÓX-¬Á·g:.CÏ¥¶"K,ösóê›·Ò.d,\ì7·¾ïÍæ—èf›×÷ÝÕR§6êzþ-ßo±d¢ŠÏeQ¿†— š·µçÕ]Ó–ývG6E·nËÕÕReQ±á.øšFÍÔ}ÆÿüÐ$*k“S7jjilÓq§]^7-õÛæ,O_ÔôÚû*_Ãjÿ¸ù+ìd)qËÎïh…s>B7­ý2ðØ],‡56l©æ6ïú¢¥rÕÐò÷‡ýr¼5-Q\Xà›·*̤HtÂØË
+öî{MX+¸UÅþ.h©X˜%ï¤ÏÏŒF-ìÄÅ2‘Á„8Ú
+¨TWK)­Œ~*ú¾¬ïðJLôqO'˜‡:}º‚š¼Íwì°›‘ ŽKÅÂ:ã'¿Þï«r ã›Z›h×T8ø ÑIÄ—Ùo©^ѤZEà Ȍ÷û§™e¥‚m¤Ü!¯74—™™K%"Éô˧Â{í˼*óŽNæÍÛUÙ·yëAE»òK±K0ÆE?=”=éÂЛ6Xô¨'Wƒ¢é ôXÀê‡+¯Ô¨tK™aR;ѽ©XÍ[v¬‡k¸- Rø Õ¼¸0Ù«ïnŽæk…±0«sBÚä²±_
+8ã(.1/Ñ °AÔYÐ2,–Ö‡¶ –p.š%åe¬º†Jƒ‚ãË-ñ€¨Åk‰? eŒ° Àø0Ê®;°[è0ÝCß\‚ë<´ûjpýî ®?7åæÿ ýAÚÄÈBûC[{ÕŠõD-¡mŸSõ½Cõ, EOlvÊGL|‰àà>¬øWª8çA(”g$Ž ö
+n
+M£;Ä×~›ã6 Ȥê#üÂK·§c\—¿ÆÒx †ÚÛY§Àåe©|Æoƒã ¾ŒjàóÕãœÅÍÔcüøãws ›Ž"13U"ÒôE3-µƒ˜59ENЪô~ÃÚQE…U6}“¤×‡mb1|ÝyÍcé¼±²nèÙV]wO
+€–qÉXënà:Á¢2ào܉¬
+mÑgãILtW=î·¯g›ûˆuÐÏ£*Â…KVt
+^T´"^×6ª“Ѻ©šö„þqGåÜš‡Øë±/vùžGÕ›æ#4·¼f712n ¿h4±†Ñ^ì‘tàùÐmõÆ núBWö‡~ý7CF‚ç[SŸ ¬„üùÑW&c»€ ÖM aeQÿ Õ
+]LöÍÌ4¨ø"3fŠñ þ<yÑ'~âÏÒYVKÙ ßx¥*å‚î0ÔÍÛ¬"_=Ê!®rnŠ!úâ MK1—⟠É^NÆ ëÛrÝû{ƒ¥Ù)5÷^+jªDLÅ®USßù(A!NœPq:M¤yŒ!Ìù~¾wdÃ[Êü4Œ¡B€¾C²» ïá°
+‚•ÉpíË/žªqåØt稷´ÀÙÌWÌ”¼)ûîSÑ~Bag&«ý~Ž‰;!Á¼/3q¤¦éL<©u/aâZÄFÿo0q >ÅüÐM²u>uÙŽCf¶ˆiÚí#Õli(k5:"xä^¥ îí˜%¤ÑA±íeŶsŠE×Aèc.Љg7ãçÉ$®²Ð@éæ˜dLáÛ1Ë¡œŽ2ïâH&¾ #e°A±ÁÀ/:½Iú¨hypyK]i,<¾ŸÒa^¢¤c)Úšx¾rV¡¡%r9<œ0VØ·‘Ù‡*:Qv‰H”ÉèH‡ýk*å›M‹áƆ_=nÆQkZý³X÷¡á[â¢B°Ú\
+û5<?m–êCO5×-^œèÆ8nBH̤7•Å(´÷ØÃqÔ…õg‹Så†úÍGVÐ# vòQ .åa!8«—;Œ¿ ¬ý¡§Fï ‰³Xô”¥>÷täKu´)Û‚Ù,¼a—sCƒ‡Ì(Nž[ó `ÌQûèñü'8瀖
+8 ÚÝÓcÝ=ÁŸ¾({Ù1ÿãqƒendstream
+endobj
+959 0 obj
+2888
+endobj
+957 0 obj <<
+/Type /Page
+/Contents 958 0 R
+/Resources 956 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+/Annots [ 960 0 R 961 0 R ]
+>> endobj
+960 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [94.621 282.186 108.561 293.095]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+961 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [155.032 282.186 165.941 293.095]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+955 0 obj <<
+/D [957 0 R /XYZ 72 786.278 null]
+>> endobj
+209 0 obj <<
+/D [957 0 R /XYZ 72 719.477 null]
+>> endobj
+956 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F26 391 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+965 0 obj <<
+/Length 966 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZK“Û¸¾ûW趜ÔK<Iææ¤üJRöa§²‡ÝÔ$Ak(RKRO~}ºÑ
+¿>3q®tΊÂ@C1%³ëó¯ïÁ9ã¹ Z¹{ñýk‘ÍxÊŠ´˜Ý­ýœ»ÕOIY÷7s-trÇyùò׿iíã?mupÝÏ©NiìPwå¦v+úªšzC­‡mÙ»Û›ÝýmÆeÆ”³9Ç#~ïkË6@"Ó´.ýâ:=Y¡?»@|‰Ee—÷pdŽk^¼º{1×,ƒ+›Édªƒìà>™,òYëfës%Y®AF†¥ÙLæŒ 95n+tF¸ayžÑ„£¸S¦ŒœÍuÆèG”˜”{ ~ÿšëÑ(‹PaÅÏq¶¨„†uüá¬R1 Z†Gæf‚Ñ9ÜAŽwÁ8W'}2 Z+`φsœðz<G®’¦½™ -@7"OnD–¸–8?QW¸b9œp±ßOÜ/X!ãá>Þh“x-ÆýeÒÔÕ#¶xÒou $s$é¹X”}˜o[G]‡Î­ØÍ\ñ –ÃÛr³¥ +÷ÑïQ…•5~õ¥­JÛ•¨]Dµìhá}Y¯¨¯YSè*.y<n„Z;7
+Af‰,liÀ}Úñ%q­KÄESÖÈt"Å^[‡ß6Ü2}ÂÝ_*…©<jÙP\*]ð¬eXñ]÷çhPƒekÐ) y&û•0þ'D˶ê¦à¯`h]G?Ä‚§À/g™ùè“,Uêùò§‘ï!Hñ±R^*£,K#ÇQ@
+Ü÷Dî¿9r9Gj–æÙr´o Üüá~•pŸ/šzË5ÿÂýVQÒ[×R¥ú¼æSÀÇìù©4[û;%aûä1‹É#„½m{jÚÕ
+’ÌŽ>¼ƒÁÎ:üŽŠP4<‘˜œ¥<æWÊNBøÍ™éV ëƒ=ø;2¹ð  {9„0½=eàà gú¸°*%§B©¯¶eß»:ÿÈ;ã„Û5íchüÂô³é''<éû}UºP‡\ …»4újC"’nq’cÃʇ²ªŽìM屚Âo£ÂPLp>Î O,{ª
+U¼i=„w
+²X^¹BIrf21¦ôöó¤r–óll`þ,>”GRâIŠ
+ QçcŠïÿ[Š#…
+ª£ÀøQga}ˆ!Q”J“š*DªtŒÜ‡Â6ŒmpM5)ÿ¹¸V-ã
+¬Æd_bÈ€J*¢*PÎ
+cR*¨·
+6¥Fyv.mUy%…»¦š34‡tÁ„…è´(˜á§dï0òNµ/¢ô[ ªT%Ê*ÐÄT
+fÜ6qdΩˇ¾°°u˜mù9•^ðǵÀíÚ¶n¦+‰BF,$ËAšÇ9Åü9°ËeÓ®€ef®ð"Γ˜÷<”£I)ítH‡˜–'Oñ
+–•i_hÁÍãE“O†¨AðÄ'7^&¦ ÓÀï*üÒ‹5¶Žç£3@—=ôÍÎz{|ûW“• q@½
+s©8Fº°hNÇ™_!Ðèý“±ÖCÔ˜¥I¤<,%Å8zŠ™<:|ògE„}«òô³ÿ—#gS‘§s“ž“píBèëÿÐó&5ê™endstream
+endobj
+966 0 obj
+2560
+endobj
+964 0 obj <<
+/Type /Page
+/Contents 965 0 R
+/Resources 963 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 934 0 R
+>> endobj
+962 0 obj <<
+/D [964 0 R /XYZ 72 786.278 null]
+>> endobj
+213 0 obj <<
+/D [964 0 R /XYZ 72 199.968 null]
+>> endobj
+963 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F26 391 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+973 0 obj <<
+/Length 974 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝYKoÛʺtþ„D¼œ‡ìÎMóêM\ÄÀEÑ´4²ˆP¢LRvÝ_ßó˜¡H™–²ê¢ðBÙ33ç}¾3³þÄÌÊ™ÍÒXÚl¶Ü^‰ÿý˜…ѯ0ǔڨØhüº@¸” ©ã<I/Ñg"¶¨E–Çyž#ùì~&^昻ï7ø‰_ÞoóÙ_ë«ß®f¿]-Â)\)=³r–Ä*Ïf›­ìJebcžô—8L¸ 6ç³›5‘Þ¬þ½/ï›/T*#ùçùÂ$:ºÙЄŠÚ®)ww¼ø](}3ÏTäÜkœÑÑ÷Ä$›r9—Y´a¢²å]8áƒk¶ÅŽÇHX7+þZ×Íñàίá8ÁKMÑv®qž°èøW(þ½Ý¿ÁAÚž9=ÿ×Íß~y¯Ô@B­Mœ˜ÔËù'¦é`H•™!p lveQ•^ÏLE_ê®\¢PJ{锊Vå+à“7ðLãökqÊF]Ñ•õ®å…zÍ¿ýÞ%’lŠ¦X‚¬<…šp¯cäôêÝÍÀÂÄ©½äf@§’8Ëtoq•OXüz.M´;
+8¡cca§'èèSÇ—m½-n+2|ÝÎe=ù·.•WH±#
+-É ˆtú
+ª¬ïî&)x}YT•W\}ª—…‰µ1„2Nõ™è~YcBÄ"“l¤0i'Vî@J»\_sÝ·mÑt¯W#€—zš×È•=·À¥…c~ÔTØ.´Š33Ëc#ÔLe±
+f¶'Q¯“X§
+|%NMvt5ô6‡´"µ_G¹‚ 'G€ÊŒ0Gº^N¥c¥,ÅŠt‚Ï…ŠŒi,„ž3ÈçX!)Bdç“%*‰èþ€a›CØvŒOÌøÈši5Àúd¥ %(Ðuh6õ¡Záù ù¬üe®„ nxžß'0„ é\çï¾MݘÇi’ô>Ȩxó²n ¡ì)fêݪåk!hUpÒÄ)H§L€óèÄ™øòõ©m>ɃgIAÎ;L“ÏùRÖ_ÊfQIÃÀoŸ5aÜm(“#ÕÆO- ¥ÏœÒ'Lœ&_œM£Ê=`²t•'jù·u~×íK6W*ÕQx
+ÞÏîÁUc)#OâDe”þª]ÝUÀ‰°<ª¯äpôÎaÈ ŒÁJ›²EX•G×kÊò8»)ä¤Ãïö±ì¸ð`ÊWø+½—Òð¹b´JX‘¸ ÅtΟ"¬ÃŒtˆ@0”' íj¨»h<p®ß7nÇóŒ(›OZÈz=Áê²+ùþn»²òVÛž&øHWüP.‹Æà­®ëü ùÑgªš}îÇaï½ ËД8ź¯¬…¯¹uU7£ò»»óå˜Ù£Á~ÏA½CMà±Ær5F ‘ ,’: üJN©¨*·e×ò2•}Ê>L4îþ
+ˆYÊÀD=Å'6F££>ý}²…˜“çö$!¬¦’S9´œò‹Uß`
+9 °w ˜Ói!¤…yeƧˆ{q™}H •Ë8ƒníD’¹‚ZJøÀD]•À.Ï6Œ½ˆ åße1Æ°žpÒ?
+L8 Å‚ ~&Ø DõI%æc»–®dÏ…
+|'z[“!|EjfÑ¿DØ ‚¹eMæ1-AIi†1 }Ý6Ø †=Ge˜^ÈN=†ÓžW ؼ¼Û„Ç2øDí”cƒyƒ³ƒÿJ³ÅŠ‹ûUqç§)G'!Q‘VëaWÞ¼}xÉ5ÂÌHU~•Ÿ÷;híá£Ý”k~ë€mÇgºQK =Hõy/ü›Cb®¡6íl+˜ŠÓ›$`z)ÍËIå¿ïù‰endstream
+endobj
+974 0 obj
+2399
+endobj
+972 0 obj <<
+/Type /Page
+/Contents 973 0 R
+/Resources 971 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+/Annots [ 975 0 R ]
+>> endobj
+968 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 30 20]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 977 0 R
+/Length 978 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+978 0 obj
+29
+endobj
+979 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 29 19]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+>>
+/Length 980 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚí“Á ‚0†9÷Äo)r# QnU^M<›èÁ¡#8èOŸiNN$þMèkûú•¾÷G Å}ûõ·»x¢¥™¤Äö«8Š{%ë´w(*!Ë3ÉÓ¾J3y€Ÿ,TIQméó×Âõ°ÒZ_­Ø¨ëz&6Ïs6´Œ¶mÙ˜#cÌ
+endobj
+980 0 obj
+255
+endobj
+977 0 obj <<
+/XObject << /Im9 979 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+975 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [393.34 169.824 398.794 179.521]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2) >>
+>> endobj
+970 0 obj <<
+/D [972 0 R /XYZ 72 786.278 null]
+>> endobj
+967 0 obj <<
+/D [972 0 R /XYZ 120.726 535.822 null]
+>> endobj
+217 0 obj <<
+/D [972 0 R /XYZ 72 217.517 null]
+>> endobj
+971 0 obj <<
+/Font << /F15 393 0 R /F33 497 0 R /F39 496 0 R /F27 394 0 R /F26 391 0 R >>
+/XObject << /Fm9 968 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+990 0 obj <<
+/Length 991 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ­ZYã¸ò¸òü²ˆk)’:˜<Ín2É$AÈ4°Ù`![´-´,yuÌLçק.ÊòÑÓ¹Ð@›*–xëøª¨d¥à/Yåz•Y¬óbµ=~•¬øïiZsÚÔĩŧW×smÒ¸ÈRäÿöñ«oÞ%é*Q±Snõ¸#ÞÇêïÑÐýÃÚØ"Úõåv¬»¶lð9‹Êc7µºˆF|Σn't~<ÕŸ}ÃÍR8šÙ?ñÃPÿÓñÃ?ÿôÕïçÅi­c“8Þü´
+­ó.ÔÊÄ.uóâu±Êc—/—ž$×£±ËrØwxóKbJcí
+^ÇËÒù¾å=/B€VÏÍCÙVW½§¾Û4þÈÔz`bÍB컇µÎ£jÚú
+×½Zk“ÅiaWëÏËÑ„ã…imùrû
+ž!ädw&-’XÍ ä%·¾)3aapæŒþÈ‘Õ¥Ha¢Šò ¤lB|ö÷û5[„3" ~|
+¼<š­ÓÑû]pOt„©‚ š¤åž©ÚÁ - $òœ-Ý m¨ì¾ÜYÛÒB§Wý›»'ƒzµ<™~üœË4¾€M;3Ÿ8Ep˜öåø T+e®òkÏ€ÓBv“ D̓`Š­#mθ ™Zcù$é
+͔魇Ž ¬å&ä’‡±]X‹¦¢ZN³±N.5Ž9àqáC§)jCkÂvȳˆ,g-]·( µ¢gÜÞ–-§ƒ© ®²hšÙ週A6ˆ£¢1<€P¶í4wAPßA;lQ £¡ˆÑ1¤œès n‰GGÃñ¶!dhDq̺ÕÆ´à9tÖí7Köñ'-o¼dA8¿½¥ÏL:$¨‚Üî#,šÒÒvKfž‡*P6ç’R°zB h‚¸1¥ÃGvÜغ,µ!åPïi}Øö¿„wÞgìôqØ0MÕM›‘Œ 4äÂ<• çIždE#w.†ó +Øœ¥PŠ¼;lœ$¡ló¹úXß îàH”]ԨɲèÔ””_f9È©kÄUg7ÕR$eÅ6'ÿ\ɆŸáàýÈÃFÅu3¦Ïò¹zE;_¢Û~#F®’KÊ ¸á”º÷o.¢‡^ pJ:çHQ³8ÁÉäè:
+” °v`ËZâb`bm A{@D šÃ2È%átþý46u€ÞUì_VMV3‚ìïá%ëb§³×Q  Š”ÐqnMµK~$«ÇÆÂGî˜Ãq‘°õHŽñ\ˆH™pOÇÛ
+Ã2‚§dTöÂRò»è¼4ØKŸHuNHy˜…Œ‘׌©ãv뇗\‹@_UŽ%X“SM#•Ü
+÷ë<Í%¥B2_ðà<m#3ʨÜÏ©’AO'DªÍóØHõ‘À–üŠ‡ ¬aæâv¶PF‚e]O¡’Ô•˜†ûÝ#ˆ½NHÀΔÍÁÑ@ÎålöŸg979NÛ4ýoSÀR  q7 ©'V PÊ¢BVªÌ¢Ð¤F¡C®ìR…¾o)W&I8‡PYÄuZ,™öØæê‘
+·…ИZ&;q·Ÿiq¢rFy Ž%e@:11è½ÊÏ#^”Ή‰¡B5H7y“FÚØ&nÞØÿávVÿ/·³2ð×.gª\\kHú0*—•uºÁ¤ Ý®&áÖNl †mÍe?2•,û̦EˆF)16)1²°S#pÉ[½Ÿ“å‘9)ÓJŠPð.Þ ¹ý쫺%Äy¸0reÕäëÈõ?¦ÊJЃZFñ<Öʉ¸~{'‚Û¸°¡_q}{m­Ž>Ô„EÊ“ #‰i®/úDŠf¾„è+f!}fÅæFnKàQktÆÅë‚Š×8WWu~¹Õ›‚&G'&©ÒË'Я©ƒ Áù–WÀXõ w‡›5ì_\êÀèFyàê]ÄQï8â
+J*çb5`ßøÛ¬êDE7 NЀŸó8„“°Rîu‘ jdgƒÖ9,rf´Û‚õ«{5³8Ï36îBÊ 2-
+éÒxÌžy¤¾Z¨PbòÙ -™D2{ø2 ‚¬E"ÂÄ¥o|­¸Ø8¿F¿’ˆ`>BrÁà¶x!äJ!
+endobj
+991 0 obj
+4047
+endobj
+989 0 obj <<
+/Type /Page
+/Contents 990 0 R
+/Resources 988 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+/Annots [ 992 0 R 993 0 R 994 0 R 995 0 R ]
+>> endobj
+992 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [294.319 748.292 303.286 759.508]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.11) >>
+>> endobj
+993 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [122.441 531.505 136.38 541.202]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.3) >>
+>> endobj
+994 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [319.427 305.559 324.882 315.256]
+/Subtype /Link
+/A << /S /GoTo /D (figure.3) >>
+>> endobj
+995 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [459.301 291.404 468.268 303.226]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.12) >>
+>> endobj
+987 0 obj <<
+/D [989 0 R /XYZ 72 786.278 null]
+>> endobj
+221 0 obj <<
+/D [989 0 R /XYZ 72 407.847 null]
+>> endobj
+969 0 obj <<
+/D [989 0 R /XYZ 88.587 141.006 null]
+>> endobj
+984 0 obj <<
+/D [989 0 R /XYZ 88.587 119.088 null]
+>> endobj
+988 0 obj <<
+/Font << /F15 393 0 R /F28 523 0 R /F33 497 0 R /F39 496 0 R /F27 394 0 R /F37 380 0 R /F30 512 0 R /F34 583 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1000 0 obj <<
+/Length 1001 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕXKÛF ¾oý :Ê@<ѼôÐCƒfÑ´I“ F‹¢)‚±¬µ‘¥$w»íŸ/9ɲ-¯7z(A43É!?~¤Ìƒþxˆ Ic&’4È·W< ¿Aÿô#쑤Ғi…« ‚ó^r.Ë¢ø’¼à,Žã`Îe̲,Cñç‹«§×\<Y°¸q¢‹Õï¡yi>ûcñÃÕ‹Å K&¥$Ï‚Ogøÿa÷Ó ë7ž^oy|W_½»
+Þí]‰“‘ ‘óN,Ï8‘Éì³àƒs¡9
+Â&˜ÒÂœa2Kƒ¦nö!îEUÆøþ^Ûõ®)fs©’P>›ÍU¢ÂÅÝL¤a›i˜×Unº¢‚+ÚYÚnknÛ'°ÒÜGüHÔÖm­êÊ+_š¶WÐzEþmÞûƒÒv­Ö¸ŠCS­0˜à0`
+ˆ”BT(@Ŧ8ˆ­_ÜøïÚwöOL¦—Èg" 7¦1yW4'áQ®>†6¤„‹&@‚qÁ‘OS5À_ÄÕŒ+0â üf¸XªÂëY‡u³5º|§¹ˆ˜†Ð¢’çÅMí¢%âp]n…
+m…Qè°Ž„íö¶,¶íõû«¢3¶liѹÃú¨ŠÆ”´h»f—w”Xºƒ~C®pngs³w‚{Áá>èMKg«¢Í»$q‚_YÚÝæ×Ü^pÿ;[–ø¤±¶[»*Z9?ñ¡u×¢ç£Ü»·Æ¹§­»MÝzíƒ"#ÿœÆM
+î*ZÚj¯Üaò?2V,ÎÈ6äQ¹l÷ôq(¥‡ ®Ž5j(.uç51¨à˜qüLÛî¶þ¹Û”ÀÕ$b€·:ks±X#©ª,\7Öq%Ý{àBí™ 6ˆ®,ܳäÆ´ž.˦0«{óyv¬$››¦±DÃ.üèrʱ´+o™¨FÉA5Ö“ô³›…½º%.îI¾-º –îéàYû’h©¤d4Š¢ÒŽ²(”o½
+=7æò?A‘±M0 œBêë)pêËd9Âðy¼¾v…Få:?ŒH3@žŽºCni~CqÉH#°§Ké]ðo¿]|¿øí틯ßüòb"QæH{yläÏH9Ù‘˜77ìgìzã€ãw¼¯‰÷Øbc‰jp‰0ßõjÏ®èDƒÍtÌtù®i<!Cb“¤Gik==Ö£ï$í ‰+ÛÞ–&w…”ŒFxnë­ª¿‚’
+&:Äéð¦§4áË
+'`éU%rh;S÷áQÊ"¡ï#Òó”Å'.£X‚•?Èü3a¨¯æófÔØŒ˜*8–fGÄxjæÊDÊ/3„÷¸~¼>eÇ6ˆýèJOÙYZs9–>Çø-à oôC >ç¦-è+0pßS‡dü==€( Ž7M½¥'ŽŽ'Ÿ–ëÆ®qžÁsäÜ#¾€ï¹àù1¸÷oŽŒ =®Ù½‰ò;dˆ¢ZípqT¸çGzî‹Àm £
+RuÔÎñ›z¢ã¼7ÝÎ\z¢›¿zùÓc»9šôÝÍú! oä4<:˜ÁŽŸ8ñ¨ÛÐQç{XŽ=í¿ØI¤4ý×$Õgé`•K#*SÖë{Z8½YäMÂÆ9®ÀŽ)jwN˨ÝMµ!c@Güß´¶HÒü Ž7ŧm\ À+ø꤇ƒ”'Du1ÔÞKßÿ„Θã
+endobj
+1001 0 obj
+1729
+endobj
+999 0 obj <<
+/Type /Page
+/Contents 1000 0 R
+/Resources 998 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+/Annots [ 1002 0 R ]
+>> endobj
+982 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 177.999 137.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1003 0 R
+/Length 1004 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1004 0 obj
+30
+endobj
+1005 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 177 137]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1006 0 R
+>>
+>>
+/Length 1007 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+endobj
+1007 0 obj
+50
+endobj
+1006 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 177
+/Height 137
+/BitsPerComponent 8
+/Length 1008 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÝÁrÛ0 „aŸûþïëöÔñĉC‚
+FWŸ5r?A›q§ 4e€Åôòm÷-J‰5 ²°ì-S˜ŠØo*h¢·úù*²þ”µ×¿ÿf ¦Ž¥Ü`˜9´¯êçÛ²’ÁþSYsƒöozú>øë YA{ÿ_A0‡­²£q—È5.æ0³èJ'~—«‘
+-Á0gÌÌE"0Â`ÀCiìKE×~Q÷ù´x¸M5Ó%ÃÖ"Qj±ŒZolÊw£ø5bb› ‘Þ(~þvw²bû'YT8$y2ÏÐMx8–
+0‹Dc3‰‡ ¥ üQz“³å›6cÆ–½´^`XˆÄÌËÌaç ¥¦éµÃò¶0±9¯ 6Ab‡:‚áÃc–QàáN»Æ`Mu’òP‡„«™WAbΤàЬ¦ÂÕ« U|x¸â×f:†«4é©öä¡+.È:"e̼Dç0Ç(˜Ãµ:É%wÇ0‡ý‡‹,*Ü~uÏžû²ñp¹®²‚
+oß;‰gÃx¸\1NÎøcÏe7**Þa†Üð°ùL‘NEï¿¥Lk¿û*²¾ÚHØv/˜?¤p†Üú–l9`XÌ9Ÿ{ûæ$]d:`XÛ ìS&/°X»Yôe¯æ¯=Ì4/Ãø«¯RBéÏEw(n“NrÐ%²Ú·Wì3YŒì)1‚çAm;fv}NÝ&ñ0g²Hù´sè­5ªÇÌÄòÅ6‹XŸ‰‡ÜÍ¢‰ŠôI'Yj¹Ë[z‹ sX;¬¢"v¬BY«c‡UH¨73¶M–c“9lFUÅH¤€‡{SáyP{R1mäOäAùnCÅsøê& 1'wŠ Wi?æ¨
+endobj
+1008 0 obj
+971
+endobj
+1003 0 obj <<
+/XObject << /Im10 1005 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+983 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 177.999 137.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1009 0 R
+/Length 1010 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1010 0 obj
+30
+endobj
+1011 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 177 137]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1012 0 R
+>>
+>>
+/Length 1013 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+endobj
+1013 0 obj
+50
+endobj
+1012 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 177
+/Height 137
+/BitsPerComponent 8
+/Length 1014 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÝɲÛ0 DQ¯óÿÿ«déTžc
+0 <Tò0µù
+¢Ë¯ááê9ÉnWUfPau&×è#À°ó,bž<<Š™ûÒ_=è`x“×áâaóž"œ
+mæ½þûTDE Ûæ‚ú&…9ÄÆw2dË©
+<l;yH:Æ6ùT>0¬FeÅÌHϦÂMö¤¢¬åäAøCÅ5½{…‡$jæNcÃ]Êš
+KAïTX"""""ú£_¿>ÕÜXendstream
+endobj
+1014 0 obj
+965
+endobj
+1009 0 obj <<
+/XObject << /Im11 1011 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+986 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 252.999 156.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1015 0 R
+/Length 1016 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1016 0 obj
+30
+endobj
+1017 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 252 156]
+/Resources <<
+/ProcSet [ /PDF /ImageB /Text ]
+/Font <<
+/A 1018 0 R
+>>
+>>
+/Length 1019 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZÍŽv7 îWJKná,K¥9ÄùÏ$. bvmWSU*âC*³àöyìÄvδˆÒ]_ÍbÞøMÿ>¶3.:ÿ¬ß/ïï:¿;]=„tRŽW‹å|ï”Ø®ÐÎ6.
+#ŸDùJmœ5]¹änë—#·u`QRY'&[®^£”.ŒA#>`7ÌåËa"L‚ ¸Ž¿Uáåøöó#ãcÆâß©áëQñ]£M+%L™j®Wˆ›NáJµl:U|âíº!DÙ¿N¯•Ý§„%VusUG/__/Áôì]pñÖã(óz¤V®XÊ™c½¨C#P¸
+6¥¯Ró™¢"á7.dKDO"9`¨Ëc ëy(!Ó<° Èæyƒ.q`‰`TDep×A|ôz¹»ÆHW›Z£µ+'WkT„I6µtéjÙ†%µ1Ðõ¼ÁÕ¢=®…H—ß KWË6,Á]‡›»J¯× êUòŽ5\}TÄܯèÉ<—ëkʼnuÖ`Cx;PÄy÷:›B–ÝÊ{­)tƒJ6Oß¿ÁÞ/_™×£G:×(¬Ê8ÌG=;ãà5â$¶% qÔm2Øó:1)­Åubrðõ¼'Œ‚PâÆ¡e¹Óî˜ë—Ã¥X;LÊÉá­â¨ÇUîõ ã•ë¦›S¦dTøZ3É©Œ|mºQi}žÐµÌ‹ƒ­õ^§LɜÔÜïPÝ\ŠµÃ¤\Þè!Ž{\åฆ\,iƒ§L  †Æ²gEj@r ÔðAö¯ïÑ·Êv=®kMs§ Øùv¡ˆI`;TÂÅà®ÂôÙ#êõzÄ€j6†d#¬zæ‚8¬ÞÆ€±a+Ð/8Š:ö4ä„qXk­—JЂª ´àê^’Uß1…t7-Äaª™»ÌZ^#¬ŽUyjG«·zÏ«rùŽ)·sXkíH°ZVe -­^áM¯
+á;–Æá¦ÅÍe¦ÙŠ6Jn¹Èœeîš-·m˜´ì·“ÁZÚÌg”5ƒ92Ú :QšúýÐŽßU¸ƒâ#é… Kep2ºZF™REšÏú‘‡Š°«9`;Ðèò e°–v«Q–\Æ`Šm7¨Z&‚~¿´ãwf~=¢^œ]ËåþP£ƒÃ¢üãøÛñ%·«|~}†ó›Ã^»þ¿C÷-lÀ%ÿí‹Ø 9cRüÚ>ý }/˜pñÓH߬ñ3xË>û¸ÿÉÂ{eáÍãÏfaõ÷'êñC·Vï¦üož«‘Ÿ7™’®ÑÙsÇJgJ»@ÎB£Ä­q¼€3LAÜWâÖ—ù±ž½VIÁJaDáA“Q,wÚJC¸ø‚ø+Šòð
+n~ §@äžéŒ¨3=7¦ uxŠ“ÅÉcÀõŒ°Y”Ë3.í¥Ÿ‰ råË3«éLзfœ‘B!Å3áÆœùîÌvC”'HÕY©Œ°¯TÎÔLÌwgÒð)r!…™‚Â9ZGi…âbŠLð\nÿð!’”Æ™M‚À=FO\ЊPàÅJCFF–&uxÖʽs›Êô_!Ÿ¦Ž½ CÜXb¸j6èÉ(ƒÉCŽBIpQ= ì'†H-À `‚M$ÒTÖ»e ;èrf$TŒ“'ŸÜI(0möCS&~³èg•Â#—#ƒ_\BJUè’[ß( œ«
+87;Å|Z<mlw5ÈÞÖ©)OƒÌ±ÆMæÎÓZ›^<Y×^7Ý;c…Ä›š§#‹Ê Í„½cZˆ»™û
+4Xª™ÍÇzqŠD%!»åa®N¿ I¯°^öĦ7TîÇw"ôà‡%~í‹Ë¨-°b<ñòŸ®Øu-"u™À±%H8Jü-æi…1ŒÙàÊÄWµ:`e>Ü­øͪòäÜéµ
+˜ BeùÑŠ:Äá,®é‰ß…¹SÄæ*§à#ù [(ëP…ÀóÙ&\ÇCKú¨™Ù~#0xûS(ÄX#… §dô‰ù Òóž!é{ŠÄÅ`¨‰òGž6fôzÅ"l «‰ÔÝÖ«RoBmgÑC¬B÷„<¢P¤N²“I/[8§:áXÒd¾2"J„-qqé“"‡¨0â3¡_’ß„úyÕ#Z”+$¨ˆÂy1ʾ'¢\‹É‚Œ«m»)BíwaÎm˜k_¹)•€°)ïZ3BÞ ÃÀÆ™èÆËŒD7³7äeS€\‰3&–Ÿˆñ'ÑæJ´…vwS–SßB‚
+c9maDm‡ZT•¶ð£RçsƒE¨¼ñ¥=Š­Q³H—W>‰tͪ‘Ñ}Kà\+[RQ-•Óßj óäDÿ1e¶ü¥0Ì{Ž£mªb0ÃâzXò† áep
+ì³!µR7HBoˆ„¦ ¶@‰â*ƒ¶·(Câ4¶­–5!-(¥Ék¨Á-Šor8–SnRÄ&®ÕÔ©îS§5öjm@! ×­~ Ÿl‚~Vc
+µdµ74œ°¥7
+è˜áÈ­—ˆŒið‡µ |ËÖ‘Ä€^¨á] (hu·Æ&òs¢À›ŸÈÈãzƒJeÆÞD‚\Þ-y-‚e½%²ù¼a%1€zSJæèôÆÏ(Ö*ÅHåãM¦Þå¨ÊãͪÊì ­êåM¯êî±ÚÇzçeAï®ÕÈÞ«#¼KW_Y#¿¼é­¾:ÜÇ
+VØØP¡ås‡ŸÏ& >¿hÛˆ£qîSæ‚OJš.>L­tòyKÎg2MJŸÛ4qm´ÓÜöéOóß'DÛ" FlÒ4¨±itB‘«†U6ÒžÙØûvŽfüi+ÿ’µ~½¼?ÿò|üéÏ'ÏßúÿZOüŠ¢
+Œ ëw¿ÿê_"3Ouñ~÷‡)zÌgÐ}"ú_ŸÏ/Ž/Žÿ
+endobj
+1019 0 obj
+2542
+endobj
+1018 0 obj
+<<
+/Type /Font
+/Name /A
+/Subtype /Type3
+/Encoding 1020 0 R
+/FirstChar 0
+/LastChar 15
+/CharProcs <<
+/a13 1021 0 R
+/a12 1022 0 R
+/a11 1023 0 R
+/a10 1024 0 R
+/a9 1025 0 R
+/a8 1026 0 R
+/a7 1027 0 R
+/a5 1028 0 R
+/a3 1029 0 R
+/a1 1030 0 R
+/a0 1031 0 R
+/a14 1032 0 R
+/a15 1033 0 R
+/a4 1034 0 R
+/a2 1035 0 R
+/a6 1036 0 R
+>>
+/FontBBox [ 0 -3 46 68 ]
+/FontMatrix [ 1 0 0 1 0 0 ]
+/Widths [ 0 0 51 0 44 0 52 0 0 0 0 0 0 0 35 43 ]
+>>
+endobj
+1020 0 obj
+<<
+/Type /Encoding
+/Differences [ 0 /a0 /a1 /a2 /a3 /a4 /a5 /a6 /a7 /a8 /a9 /a10 /a11 /a12 /a13 /a14 /a15 /a16 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a75 /a76 /a77 /a78 /a79 /a80 /a81 /a82 /a83 /a84 /a85 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /a97 /a98 /a99 /a100 /a101 /a102 /a103 /a104 /a105 /a106 /a107 /a108 /a109 /a110 /a111 /a112 /a113 /a114 /a115 /a116 /a117 /a118 /a119 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a162 /a163 /a164 /a165 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a174 /a175 /a176 /a177 /a178 /a179 /a180 /a181 /a182 /a183 /a184 /a185 /a186 /a187 /a188 /a189 /a190 /a191 /a192 /a193 /a194 /a195 /a196 /a197 /a198 /a199 /a200 /a201 /a202 /a203 /a204 /a205 /a206 /a207 /a208 /a209 /a210 /a211 /a212 /a213 /a214 /a215 /a216 /a217 /a218 /a219 /a220 /a221 /a222 /a223 /a224 /a225 /a226 /a227 /a228 /a229 /a230 /a231 /a232 /a233 /a234 /a235 /a236 /a237 /a238 /a239 /a240 /a241 /a242 /a243 /a244 /a245 /a246 /a247 /a248 /a249 /a250 /a251 /a252 /a253 /a254 /a255 ]
+>>
+endobj
+1021 0 obj
+<<
+/Length 1037 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1037 0 obj
+161
+endobj
+1022 0 obj
+<<
+/Length 1038 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1038 0 obj
+180
+endobj
+1023 0 obj
+<<
+/Length 1039 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1039 0 obj
+183
+endobj
+1024 0 obj
+<<
+/Length 1040 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+NÎåròäÒ÷ôU()*MÕªÓ÷
+endobj
+1040 0 obj
+139
+endobj
+1025 0 obj
+<<
+/Length 1041 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1041 0 obj
+182
+endobj
+1026 0 obj
+<<
+/Length 1042 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1042 0 obj
+166
+endobj
+1027 0 obj
+<<
+/Length 1043 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1043 0 obj
+138
+endobj
+1028 0 obj
+<<
+/Length 1044 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1044 0 obj
+175
+endobj
+1029 0 obj
+<<
+/Length 1045 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1045 0 obj
+164
+endobj
+1030 0 obj
+<<
+/Length 1046 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1046 0 obj
+115
+endobj
+1031 0 obj
+<<
+/Length 1047 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1047 0 obj
+134
+endobj
+1032 0 obj
+<<
+/Length 1048 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36U0€ÃC.
+endobj
+1048 0 obj
+16
+endobj
+1033 0 obj
+<<
+/Length 1049 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31V0€ÃC.
+endobj
+1049 0 obj
+16
+endobj
+1034 0 obj
+<<
+/Length 1050 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31Q0€ÃC.
+endobj
+1050 0 obj
+16
+endobj
+1035 0 obj
+<<
+/Length 1051 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35T0€ÃC.
+endobj
+1051 0 obj
+16
+endobj
+1036 0 obj
+<<
+/Length 1052 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35R0€ÃC.
+endobj
+1052 0 obj
+16
+endobj
+1015 0 obj <<
+/XObject << /Im12 1017 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1002 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [436.697 273.278 442.151 282.975]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4) >>
+>> endobj
+997 0 obj <<
+/D [999 0 R /XYZ 72 786.278 null]
+>> endobj
+981 0 obj <<
+/D [999 0 R /XYZ 120.235 575.273 null]
+>> endobj
+985 0 obj <<
+/D [999 0 R /XYZ 242.922 342.548 null]
+>> endobj
+225 0 obj <<
+/D [999 0 R /XYZ 72 320.502 null]
+>> endobj
+998 0 obj <<
+/Font << /F15 393 0 R /F26 391 0 R /F30 512 0 R /F31 881 0 R /F33 497 0 R /F27 394 0 R /F28 523 0 R >>
+/XObject << /Fm10 982 0 R /Fm11 983 0 R /Fm12 986 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1056 0 obj <<
+/Length 1057 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZYã6~ÏÃî_0öI ´ž•`f‚ìì‘$~ÙÝ,M·…¨-¯¤žîN²ÿ}«X¤,ÙrÛ“c hS¼Š,ÖñU‘bÆáOÌ29ËlÊdfgËÛOÄŒþ¾›ÅÒß Žzj£˜Ñøu¦ã<öœ+ÃljÎõ)S©¢yŸ/>ùô¥R3ÁYÎóÙbíû,VÿNþxõŸÅ_?y±è‡¦9¿ì¦“ 31ùs÷}éšyënnÝöJš¤k¯æ*³É7ÜðîJÚäqw5—Yâ°:KþŒ‹ùô¥Ìs )×:̸ß¾y¶øËâŸo^|ûüÅ¿^½øŠ†ŒÈ ®·y´Äg4ÿbãZG+(šPXÞ5ï®dž„ϸÖÖÊ®æ&KqTÙÐí¦ˆ ²³¹”† àë\àÑäž^é÷(’•û† ½u+üäÉ[¿]*ԣ튦+·7T‰Û¤.·¸šŽz ŸŠê‡~|˜»Û8*Àê\®¥Ó³l\ã ×ðiú–ººíjD<£a8•ç©âž*+˜µYàé›Ðå¶gŒs |`ˆ<vY¹¶›:›œY‚Ø÷+¶+â¥æ–¥¹ñÒËl–ë”*Yִ¦®°Bì·X¹ÍYfÒó O-Ñ|>±êÌkò¾Ïõ”ès1™/&Éð<ÔZôb+u²®ïšýÆ÷'Ö{Hª¡ Ô슦¸ukBzM¿÷›¢£RZ–EUyaÅyè§Û”M8!5ËDJ§cüêêfåp1JEDzNÚ]Un;´+¹dB¢ã,ÕÞ*b-¶}7‹¥½yá3År“÷æEÚž“ѸuH²<ÍÀ<Æ‘Oš]fµ=g¿ž‹°§ÆµwUPU%ƒÍ°IhÝ-±¸…u]U5Jä}ÑÔÁt€Î»ö³ÃÅÏ7,W)fÄyó.A&‡æ]¦;øáLºõ³Íû«Ž¶æíXK¼(º+t‚F°i;bÜu:V"Uåú5Na—¥×žÐ·²92gŠ{½
+ƒŽ„s.qÒŒ¥?"¾ƒŸæºòv¢Ûì™þ¤mŠ_Æôs¶Ý€¥Í¶ý > òíÕ_ ‘ AÃ#«±tS{Yv-ué6M}w×<§cÀÚC#=Á{pOêŒ_Uï+ðJ1@ŸNö€6"«3ž‘H[{Ò3
+8mC®Ñöð‡YVlozˆâ[êÈËÀ¥=#P•ÁìùT­›úö@Ä›Ø@ºrŽLÐ
+€{õHß}üÈã©áÄe Mþ@ÔÔŽŒ¿Ã˜”‹8'Ê U½Ýºe׃×Þè† Ê®¬·S€ð}Ià±aSxCM*Ô³€m!ÖÎ|¬M¶_üKFòµ·¬Zx ë鹨aï8páͲó¡TÕw]˜†”ÛýЛ»Æ¼0–InA¼RÆ)2‘œ>mýS'àœ•8'JSh<ÄÆ…O¤S®OÀ¹Ý„OGÞKN(&ÄzJœÕdân/$£~52#x¤OQy¦™ v3$@`ö‹’ù˜–þD¦ÍµäÌ°¡í¸`[Ù‡9;AÆBÜ#&xþÙ#tù‡a›à“|ËÓô—•:!NÐÃä¹ÉtòeÝ•Ë%n-K“2þ¶Ô⊶ôþÊæ·mù¶Škê^ë(]ïN ± ¶öjžÔÞAÅ0| ™°”é<ç)›bÛ§¨MP˜6°
+¦À*XG3ûÇ"öÛgûH.Ej\2€å—„±ö‚» ûìHÓìr2'¢åàЬ}ÚuJ!Ïç”ÎGË*7ƒÈ°ˆR}RL5ŠéÄõÒ>™3”ßá®öuÀåÇ+k|*G€ae¯ ”Iî7M5O½Ÿ„ŸÃè ªöÑ7!âÌ(÷æV~˜ë€êxoI¹ž¸(ª£9RJVÀo?ºnÊï:€^‘ò© Ë<g¦Oj> è
+Û9Þ†m¬ã}¤fZ˱Ÿži´ýÓ^ñÙjåQñ5M®£_k¢§+ÛCÃ\AoŠæ.¿÷j%æb¼ì ÷5ù´§Ü%ÌpíûnW=~vRP!6ƒ{ó9)UHz4€ ‘cÒ_x|)Ñ(*RöÙ’9K5èØpääZÝv_/›r×ý8@R.H¯ÔÆ«ƒ/=áHæTÊ„‰†öqBæ Ë¢H΋<|$”CÁÊUí/¿·¿ßøz‹Ø]Z ;`µ}£‚Lnšr…¤ ì΃±ÀN½aÁŽ‡°ÃÁÁ·aî&Œçú–,†ñÇHFiP‚4Ú„µÇ2 á^É"îÊWµS^X<C8ƒÑ±b -È3|ƒa“o„Òk´$W¢zoà×_Ó[›ŒÉL¼Ž©Ó,J\UƒÞO¸«Œ ×æ9®l6æŠ'SðÐXG †¥m©IEvBçLä2\ÙûÐ.=BÎ÷½|ˆe1Z"&öN|z–ƒJ¹…ÀÅ!˜Û&ÌÒü%2,j.¾b1%.9M…™¤õ÷]ˆS0ì…žÐ;LÜ×ñ„£.·Å²©Û‰wŬJ÷Ï—¯ñӛׯ¾\ ëÚyÇ3·8³½)é±Öhîðdf|
+¾<xýUsáqO9sˆÉï–Ý]㎽¸‚ãÙ˜è‘ð{Òh?mÈÍðö$›0äÝãέ觘†–CeŸÂË`ôƒ7B ý)I½>ŸÈ4Œ»<~m0Uèø?êž
+ßÿõ÷\AñþܘV{K üÿÇ€£Ã<ÛaŠcŠPÁ6¼}/-D¹³-åÉGD|r
+ˆÃ‚tcP
+A®5n¶¼aˬB'iS¹×ÅÔ3ÇG5‡Ïß>}©yp¬>˜µÌÂ`ž_°hðO°%øG`]Ä›<ŸF*qÿ½ 
+û«¥º‚~¼UËc¤¢-‹6Ásï»b¤ÙBS†Ii`]=n}æQ¨ e9J™ÿô]9÷°«ê¥:J±r¸ÇAÐ=ŒØ³¼šíÓáiâ¯Àbîs"åvèw ° yJŸˆÅ
+/ÑF$m]•+ò0·„‘V´ë…2³á؈ѕ/ wÈ5Ì',)ÆöÐßlx$˜{ð´Ø?ð>†”a9·Eß̽“Ê#%óÈ}?”pÞ‘{Úø·mCî¹?,Ë‚Ó‚äÀr .nÉéþâV‹^áÃ…¯î f(ègíî±
+endobj
+1057 0 obj
+3139
+endobj
+1055 0 obj <<
+/Type /Page
+/Contents 1056 0 R
+/Resources 1054 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+/Annots [ 1058 0 R 1059 0 R ]
+>> endobj
+1058 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [191.393 707.644 200.36 718.86]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.13) >>
+>> endobj
+1059 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [281.48 551.829 286.935 561.526]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4) >>
+>> endobj
+1053 0 obj <<
+/D [1055 0 R /XYZ 72 786.278 null]
+>> endobj
+996 0 obj <<
+/D [1055 0 R /XYZ 88.587 135.023 null]
+>> endobj
+1054 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F27 394 0 R /F30 512 0 R /F31 881 0 R /F28 523 0 R /F26 391 0 R /F39 496 0 R /F29 547 0 R /F40 548 0 R /F51 382 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1063 0 obj <<
+/Length 1064 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíYKsã6®Úãü
+©-‹!|eOãY;ëÍŒ=•pRûH*EKÄŠô‚ÔÌ8©ü÷t£>d(Næ°§”„€f£Ñýu÷š-"øc‹”/Ò, yš-Ö‡lAïnô5Ì‘¤ŒEKüõŒàJÆY˜çÉb%â0KâóòçuÄ¡ŒcÚê²xñÅ5O,
+ó(_[#Rlþôj£¶ËUÌã ëõqÝÓø¡ì÷ÚTc'~^þPüsÁh•‹ÃäFÅz_jAe3bÑLâØtÕ®Q’å·u¹›ÉÇF¼Û·ÚnªÕViÕ¬U÷GôvÕOÈŽuÛôêSï{å7]ò׺jÞÆ[eçÝ«`?¾}YüãíÝÍm±\qEÁF9Ñ•Çó¿BûÞ·W_½¹º-Íœ‡1K†(ãô×,ž€€h™BÕ-W"ªú½Ò$<CŒd!—NÚnYüûíÕoî¾»ò(Ïe˜‹ÄÊ·>p’ˆç¯on½Y˜ˆØʇ…I(„°ëˆ-ß‘¹‘Ì…_GîÖGôy4Å)d<ÿš‘Ï l6%<
+3¨+$bqêQ´’àL³<J­ ¦ŒU³äYÐ+Ý”uýˆs,8v˜¸z‹4†ØÓ@F•«µÏÑ,…Ãs\Ìÿዧð½%>Dð
+¼á‰ÏÂHäÏÀ
+e#¬æiu(«¦jväJ‘
+ȧlÖg€rô~‡À‘2x‰ó"¸T?UJ¯œ|Lò‚¢ ïA YëêÞÛ¤<¬ )/„ 4 ¶m]·«h—™öüí|qUŒ…Ø4²ôÿOOîÍ©ÿ$)ÓÞi À3ÜÄ/ü9”äYÑKß<b¯~ù¼úÏÍÕ7SŽs’pŽñÐ6wâªöØMj«+k"´ëCiR%³©’ÕFQCªÖeMS¦âsï„áEš8–Õnoª'Í IÈecôÝÕQˆj6”ù$sg¤§­×•#s&Ó0:Õ¥—X‘ 8Ç+ØPK_yte!´"»þq_­Ñ^8‡“tÔ½ÕºÚ>ÒŒ9
+zVCŽ>´à<>hC>
+ÇLþfyÍ9.’cõû.‡eü922ÉNêš0ñ•ê_A‹¶Îü>Š#Z«#¹†¶}ó÷‹'ÝFëv£.ˆ°À}*†r;Eà¶nË~¤
+C',Þ¼,¾¹ù—µšPÓa3ƒ½™ó x$…#@{ S™ÙÏNp>¸‘f ­Û+) |$&" ¾uÐ í<KÂ,KiyüN…2AÃã0Éäà?¸†?õßµ·Íäܵ4ôž;ʼn
+P<Ü%§'p))B e‰ÇЕ¡.VIÈ žžÓô¤Ø% qˆsœ0 ‹ƒË”U6^øÑnéÙ»ÕRïŽ54>œ2e+妚ßÍøŽ¯GçažMz÷¶¹Ÿf&&ÞÝËW.ï Ÿâ8 n[¨þŠ,°|fj¯ùFa;j`j½²-4µlÏ
+“r]¢zx)·÷
+_ݵ4Ò
+ʳ6ŒÖ÷À‘ÁÊÙPzÌB©Ü2š¢Ü\K*MzšÒÞ¤sºÛá³À²8iá Ƭ–j”¶:r¼ÿ ¥3Ã)(=Èhä—Ð\þâñ:–éÐi”¬ÜìwºÂMIWL‘Äxª†FôacS’›þÑ® ^ yÒµm©}gÕÕ'»ØÒ£ÇýÆYFŸ0Ó=”&Þ°…‰¼ó¾™ì•áih>7'œÏ¯Nèj€Ñ†¥ T8ʪUÙˆÔÕõtÄD[Üêl™CŒˆP§–ÜáÌC ;\XNÞt½*7$br ƒÓ¬Ât¤Íck‡mê—ÓÑ]x¢ì {ËÐl[Z©`í×XWM` z«7ƒ¨qþ,}\@±E6ï†zA´Ô)Ížìl21Nm<gZèp{ßUŽ?ÑÍÜlÚhÜliªQÈHJ 숖nT¶©J“OîÖ_ÕõÈ7(Áð „;!Œ›Cj^‰ùÐ;» îí+“ÐLú¾#9íá¡V½¾o ßÖeãÙßÒ…åÓ'„Àø*ÆôÜ¿Yðë…À¾ñÛ?‰OwàH~x|þ9¿W2§ÿendstream
+endobj
+1064 0 obj
+2161
+endobj
+1062 0 obj <<
+/Type /Page
+/Contents 1063 0 R
+/Resources 1061 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+>> endobj
+1060 0 obj <<
+/D [1062 0 R /XYZ 72 786.278 null]
+>> endobj
+229 0 obj <<
+/D [1062 0 R /XYZ 72 286.104 null]
+>> endobj
+1061 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F26 391 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1068 0 obj <<
+/Length 1069 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZmÛ¸þ¾¿Âí'm±Ö‰"©—i{{ÝÞ[ÑlMQp%z­F–|¢´ÉÞ¯¿)K¶Öñµ—´@Š"’3’óòp†[EðÇVi¼J³$ŒÓlUì®ØŠþÞ®|ëk#N!y(ö>À¸2 ó<†O_æYc!ËbZë·÷W_ÜÆéŠEaå«ûå¹/ÿܳ~ÿ—ûoî¾ûòz-cü¾Òý뾫šÇ®ý&’Q«¦§ÆmÛôw¿¿¡N±U›mì¼›#îZ77×ÿ¸ÿãŠex¬tµf¨ˆÜî n›Gb3{Uèv³9ž¾kËM­ID4›¼©[å¸Lõ£v3á ÷ß¾ºÿóÝ_ݶúN5fÓv;8
+C1W_Þ_­e˜‚NÖ\†qž9ã€ÂB½N¯6WkÁÃL‚Y%|ųÅ|‰‹0‡…%a–¥Äp0h
+±Žó0æ|´ 4Omr‹;üâ–É ô GG{øƒ‰
+­Ì9Ú ~ã ÷TÕ=;Ý\ÇyЪÜWù~Cg¹0ËÒPdâàȯ½ßÎ4×cQÁÜœÐzÔ:–xB>s¬ÛªQuý<Û*Þ0.Z
+Š_ œŠHŠ>eeö5¸±=Pô4:žç:΂§k™ªªÕCíÄ>àð3µÇµ6CSôUÛx Ž®$C!ÑçÀTù§G†oÛ'}!.Œ£¥®{õ~qôùl°³4‹p²ŒüÅ">fa
+v>ñÂHœ x . w&Ã\ô3 wtó8×…9?ŽVâº)uI#}Kßüÿ•Á`<ÙÆJ(Ú¦P0Qy¡Â¢’\4šðz-bÜõDn´. Ƀ0v«m55Ž
+Ï/¿}d^Õ” ’ ™:Šè—y¶GâÞ Øض]õ£Ó‚ªi —ƒH]_ž´€±©½dÌ`ÄÉÙì—,¢:›[à8XSõÆAžÄ_n¯3tíxãÄnñôÐ"…l/qÇq€µpj
+x›“ïª~»ä hìo£…ÓÂ… ç'š£ÌÂ_SÚpLEÛ•c¾;ZÈ} >ˆ|dŽB–”ͬƒÏò–Ç°£l¶£WÝCr:›…°Vi hÔ'({@Bs@fx±¢Ø±æpŠKÓJÍÿ´yÍïì1\ZcyÍ ï^õ[¶›8-.òÇ‹)˜@ž-:@ñ¹š$ð袚ˆ2ÿLjŽïZ¸(4&øfŠ‚áˆÁ­£TÙ<©l7ÑÆ»ÛV¶•û@ÇŒ“L{¼Æ;{OÑh¡›~¿§pA|1›ð?Uf€í4áP]¯7ªðµÁ<DÜmCAaÆ §|Ù—Ü;ÜÀ°s•
+Ø«XÝaä>hvžÄÄ#Ü”Ç'Q 6îôŒÃH|»ò­¯ÏèžK¤~ñµãeIèE¾8YwíTA¯Gl´¤r’!–/¸È¦®Ær¸$.
+öÕ{]ÛÚM€nb*âžzõÖWPØuo.1 ³+Âüâè8FÛÙS¦ÒÒ› àVÀ3ržLóþWÍ Gh—ŸrØ×UáÓžøßJu ¥NEú©3ýóeÐò†äÿÇŸ…!½šˆ”þ«èSBµo³h»º±{¦l¢­ü‹GÄ–zÖû°Ñ)µ"%ÄW&Sû6‚„wèÓm÷Ö-ç/F»t]ž€g[iDÅ
+6¼Ï%€TÊÚ.$1F?Njº(Á{ú‡¤£±E§[0*ä¹ùXF#T@h“ÒPìá© JÚI¼Fr¯QŠ¯J›¡&Bµ¡/å ĦnŠÔèäÚü
+¾eK¼Ÿe@Zg¡ » )_œ‰lWÂjÚ°y¥à6ç—®FØØwtOÚ"ù3·úú¨%ÈRµiÇÚÌ ;í1Ô&žöS ô¥à’ØÃôCKù*Ïg–%¤È¥_®·yªJ»÷ß@5 ´Ÿoz8¼5!Ž–ÿÁóxÂÃ8—\ŸÚªÑó¶Óúã¢jòy ê/UÞõ9@ \ÒƇXgßĦž$ 
+êÊô®öjÜ«Æ ì„Œ w<Ù¦1™Ç& ÙÚkð²\<ˆ©Ë˱@µ6=Å‘œÄùBu¸Näˆ&“ç3NÁe
+ròõJøÈ2ÜŒ
+íôQÍÚcèÒ…3[s +~cXãÒÈcý¼ßŸ8ÚY¬÷\çmÔN×Ïÿ­ ë«oþö§?’«Ûª®VÝvü«×GªÛd~)<|&¯D®œ™º DYB¿'àÿfÄ1 9îôüIrò¾‚U|æ=ä'±^Tßendstream
+endobj
+1069 0 obj
+2219
+endobj
+1067 0 obj <<
+/Type /Page
+/Contents 1068 0 R
+/Resources 1066 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 976 0 R
+/Annots [ 1070 0 R ]
+>> endobj
+1070 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [332.241 439.56 337.696 450.47]
+/Subtype /Link
+/A << /S /GoTo /D (figure.3) >>
+>> endobj
+1065 0 obj <<
+/D [1067 0 R /XYZ 72 786.278 null]
+>> endobj
+1066 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1077 0 obj <<
+/Length 1078 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåY[oܺ~ϯXô¥ÚÖË#Š7±@\49I›6çœnQMÈZÙ«F+mt±ãóë;ÃÉÚµl§úT°(jH‡ßÌ|Õ«þäÊ%+—Z‘¸t•^Éý}^­?BIj£„Ñøö‚àf”Ü$Zøؾ$/¥ðF¯6ÒAÃ{_}YIÓw~Bï—iw|÷æ Õê÷Í«_­~|µ'J¡MÂ
+'«X(Ÿ®Úbu=O•ð)HêTh¯ŸRðw[XAš•Œa~µ½£·»DoÊ›¡-Ö¥Td~³Þh­£Kzíú¶¬o¨}Wö{jÕM]•u‘µÕ=vȨ˳ªØa[Gy³Þ$iÔ´»²Îú¢ënÿðêõvR7±RXk¿ÁôÊ8ac´‰|QÜ€¡ Œòð|朞=;™&¤X0WâÌõýû¿ÿðv½1‰‰~µ•Ÿ./ß”UõaèÑ$cÓ'øòá¯Û÷ïþüšEY¿¿ vY÷Ô84»ë*»Qr´ìÂÁ²/$,»pê­DjV)˜Ä®>ÔÂçM*œå~iEšºSÌlt,´U`-k=mX©%| ngØI…O4ÇM[8›,j`Ü$7mSi¡”Ã3srIOÐKA{c…„ñ·9îæqÊB@B¦Ó>q¾Ýe ðV&ºì¦À¦v„×¢£×ºéI¤.ÑØ•Õk¸§îâë±Ê
+A
+Ñåƒèûµ‘QqÝ/è’HPÙó”}°ÅlæÀfEßC|
+Û2A¹éÈ9 çvÈ
+{!´ü’îÖš~¦7 •‚ ‰v¦uœ+tc„Œ ]½ÁInñhõÇZ”˜¶„Ó–<CÞÔÝp'¹É:É> Îa¾! uUż;™pÒÑk×Ï&§ÂÌ?ul†ÎÏb¤å=÷\·Sýp2ðDFSæe?f7‚”=A=ò«bû·5(°ó?euyªŒP¼ÑG¸n¢8_,Œ7/a4‘~ÿàhoË]ÐìšCØHUå¡ g¤À²×CKùXÁ Œ¦<ôk¼§¡ÁÉ)Öh*>?DžÖ TFmדlØ<³ªº Y2z ­–²ËO’õŸŸ,˜šóF åp|P&ÏÚ,ï•
+/»±AqdBªG‚ʳà?U^Øi¢î¾ƒl€í”åÁ Ú#
+÷Ìây
+õ>Ô­dö¯‹Ô?•c|¡äÞ””N:š~TòV` œo‚ºõnaaÌ+ÉÈŒî×U‰zb]¢µP¡«SƒÇ]Ô0©Šx|2˜^IäÔÇÈ M4ÂX:o©9Z ³Gì»c‡± Y 6è`ƒF>XÇd£Ø9¡ÏeMóeW]S =Ëžc·!(Œ!Ò6JÛeÒ
+üN¡ ZÁ]á¹Ï/õÎsL\À3RBçžÁ³à'ü}¶3\ÃáÄãÒ\$L«.ÁW o“gð ¥®~b™Ñ·eÎkÐ.Û.Ã#p:°Š*PñZyB¿Æ(wNoÐ YÖ¡óøÿÝÈmSî¦{K>²~ÿÌ…H{¤ï‹Wé WîÿãêCëÕ‡{þêc×pFÑ°ø
+™¦º§[…»@$°ˆ 6®(Z!‡ W$E—·%wò¥È¿†Ž/J¸<>Ð!+ƒU2¢È(
+üçÁq[*бC,]k`(ºÅÀY~çwˆ$DZµY(³ªÔÂpìÅ´øªwEê4×®Ÿhs³óp1]¯<áåjÌž›]ÙÌñ©vò€P@ÉÌy?ÔÁå­ èØÒ#/7c´%JmÈžnÒ8„Iç Ýðl5õÎ,Óc|u’‰¹árRÔPöÙUUÐ0ÊÐà¼ÖuåU¨Ø¡kŠÔ¼)+¼:½19ÌXá£û_kElƒZ>UÊ=Ü+áˆ>éÊ ïæØ–ú|ðPëпyäsñÍCéofámÑ}B-àÂM <ñ0;ÑTø` Oö#h壻 ÞAAŒÀ2>Ëd(™‘LE~Ú|æ^žIC¸£?/`¬¹
+{àß ([…k¡SN¶+»c•¡+߯9 (—0Ú˜³àƒý7E]´¡<|å¢Ú@Û‘¸ÙPñUÜ™Õ=yñTlÂ4§¬dÁ³•‘BK{êÚJOp é› …ñ"“0É;”ùíOÀªàÛXÆ)¼e
+†àâ]ú8~÷FÇ! Úð›@øI
+endobj
+1078 0 obj
+2758
+endobj
+1076 0 obj <<
+/Type /Page
+/Contents 1077 0 R
+/Resources 1075 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+/Annots [ 1079 0 R 1080 0 R 1081 0 R 1082 0 R ]
+>> endobj
+1073 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 426.998 172.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1084 0 R
+/Length 1085 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1085 0 obj
+30
+endobj
+1086 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 426 172]
+/Resources <<
+/ProcSet [ /PDF /ImageB ]
+/XObject <<
+/R6 1087 0 R
+>>
+>>
+/Length 1088 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+endobj
+1088 0 obj
+59
+endobj
+1087 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceGray
+/Width 607
+/Height 244
+/BitsPerComponent 1
+/Length 1089 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÛOoãÆ
+G¶Ev´Bk©Õ·,\[ùΖxˆ":¶,^[ÓÖô'µ´xuvW‹ƒÇ.,oe%ÛZh1×XaeòÝ®£ôùõó–%jk V¾µ,Ÿ©Ã–®a.Æòö,õ\[Ð4,TV¼´ðf‹{D m­ôv‹yä:nYúúÖ2ùªn×n´J•yDÅŒ6,SwT®­b£õf¢òˆ‚5¸a w´Î‹ˆ& ¬ÿÿèo%M cѶ5ÝÍ’øÓämV¾“%Ÿ`ï.ºëš?žÐã¤Òm­Ùh­õ¦Ë—•õÏ£[gÅ#É=·¢ Êÿ½ÀEmý{wk^K¯!2¥üÝÒúæð6‹iËô ãDε­yν9Î$]XÉ7‡jëli1šO9§;Y—*7½ZË*M;Ä›N¡ˆF,¾yÃ!üebi-‹êö[o)A«¨ ƒ Æì‡:˜|%”±
+m=¿Ý:¯ûÑ•%úQ¨Ûœaàˆø«Ó•uv«Å[Äá‡~„*KGÉøëÊë™m‰¶EÁ2{xª-Îÿ‹õÐ(3B`k+M´õ£›VU+à\[g «t¦-Akë³c%¦5¼Ñb–UHŠ°m¥Ÿ}b¬éx½5ç4Îm‹ZyE,+N?ÿ…±2òe‘×µ%žj +ÆWÖXf’
+Ò²`v•äñ «¬,¤-b,8†G`¥’L¨5öqrTYŒhëoµ†•ÅO¯Ôõû‘¶&ÉTea3^ÉÑO¥'LI†MëB[r¹±ÄXÇ`‰°eTVqô3cÍ5²-‰+ 1x¬¬÷E½…WYÊ#•EÞ7Ö•Ž m+K ö¾÷›Ÿˆ'`y²aÑjnSc}K×ZùÂÊÅsľý¹÷áËPÀÒÞ²þnî x¶±²ÚÒßã´i¡±* á!öQÕ–°,˜)¬,]Ï%p/Ð`yÅŒ•]¾û—ó0Tl¤­‡Æ’- fðçxiiƒ†•j+ëõ˜ÿVe߈‡ dek‹B¾×°PY55J(î ƒOŒëúö`8Á*{l´rõ7È¥tIÁ©Âh¬\~À|m¥“ø +‚û<”>âO—–´,68¤!ƒR*}vÉŽ¡óÀ;_{ ‹‹€¥Œ5a/C½_»²²{ÇO=‚õ×0ÂÜWRŒu©7¯Xü‰±ž¥ûrHˆ„Ó…¬,é³£‘’4ˆ° `}«¬TùÂXϵÅO´Eu#rŒDm uι°¬W˜ÛÃÎñ9½‘kdfûê RýÃÃhU£È¦U4ó¹5Ö¢,‘tÙ—\Ö K5-,覧‘´ÙYîÌšÁõweuáÆ’0IIêÈÒû‹qËRÏQo>4ÓMÌ»[Êkžâj›–Ãz«hýòy«Ý -ÝY£Â…î¬ rgeØõö³»µq¯noí­½ÕÕBwÓâ.-oí­ÖcèÐR{«¿õƒÿU‰‹üendstream
+endobj
+1089 0 obj
+1881
+endobj
+1084 0 obj <<
+/XObject << /Im13 1086 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1079 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [276.28 397.667 304.159 408.576]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.13.3) >>
+>> endobj
+1080 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [138.06 148.135 147.027 159.351]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.14) >>
+>> endobj
+1081 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [456.225 148.135 461.679 159.351]
+/Subtype /Link
+/A << /S /GoTo /D (figure.5) >>
+>> endobj
+1082 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [82.751 91.278 99.134 100.565]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.11) >>
+>> endobj
+1074 0 obj <<
+/D [1076 0 R /XYZ 72 786.278 null]
+>> endobj
+1072 0 obj <<
+/D [1076 0 R /XYZ 215.695 540.879 null]
+>> endobj
+233 0 obj <<
+/D [1076 0 R /XYZ 72 342.361 null]
+>> endobj
+1071 0 obj <<
+/D [1076 0 R /XYZ 88.587 105.524 null]
+>> endobj
+1075 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F39 496 0 R /F26 391 0 R /F30 512 0 R /F28 523 0 R /F34 583 0 R /F29 547 0 R /F40 548 0 R >>
+/XObject << /Fm13 1073 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1099 0 obj <<
+/Length 1100 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚå]oÛÈñÝ¿BOmXî—¼ >Ô¾K/q‚œîm¯him¡I¤bûŠþ÷ÎììR¤DÛqQô¥0`îÇìì|ÏìˆÏbøã3#f&M˜0ély{Ägô÷eF?ÁA*-™V8{p®tʲ,bJšÇáÇÁ9ã© »¾_½ºfÆc–ÅÙlqí`«¿G_ëbu<×BG þù}^›m™wöcÞ­uÜo}øeñîíå9ÍO6°}züÅ_f\¦´˜Í9²–íáD'·=V˜r\*ëêÆcº?LNiPT º‡M8Äñº£óÅÑ\3¬Ì…`‰N½LO&³tÖØÙõÑ\I–ê
+1~‰5ðŠ
+páêJ@1¨?añn]¸Š}MÓ¶ƒ²ÓWò-!É=dƒ™ê’uÝÔ< •a@•rW­À|¨#EE¶[r:OÁ©Š®›üfL—Ùe¨ùé ½°v'ÍïÂÓ±ÛGc2’Uëä?é$Àë1Îøs6ñVx| Ÿ¢‰Lé¬?“Ø=ˆQÏà`éÑÎÁ¡rþI} (àµ]¿ª·W¥¥ã«û×á$¸B Fqÿ "@Ä~²"º÷T½‘¿õ$FG¯Nh±…âÆ_âÁ–uHÊ4¿z /öx^M\rB´  ’@ð|‚±¹¡ÀõIc“¡7—¿¼{7%· G~°ÝÏ]Uñr ä㢮º·>Åár7rös}k ÜwœàEÇÍ8Oŧñ) þéüÓåÛËNDúS¤Ï¹Lƒ#gþ9=nxmhÆ_šÏm2ꊹំ̧„x>Ñ#ÿ[îö‡nʇáÔéÜÿ¾^]—ùÍÏ„ò^¤þýú
+ÌŒzpR>Ba¦×±ãèÒû}~»)ý$§Ô?hÛt^66_a¨Ï2ÊÝ®à]…Ü(j–Ð0ÂY`WŃ µ"T*¦ª;£[ áÛ¶óÖ°lO˺ÚQ×&¡¢«¼ïßå;Š:jצ¡+¾•#d(Ú jû-—›`ã÷˜«ŠÒN]-ãnÚ53tÿJo6`E=-!/
+_õ9òÀŠ?(;r,®‹vBcþZ—ï0qP.Qþ*Ÿ‰¶mA †QñY`.SÉRj†þZÒÓ>rwòà5û]â ꘧šÄØ25OôˆSfô7µˆ¡¾Qÿ'â3W L5Ô*`WÎ\¡ ¿+ȲÑ3“ÎN·¹Ò Ô4¨Ñ÷£ó#µgfà,ž(Õ < Ís}_”¯LpJÄUƒÖÕ€_<g»6n¼{ù_€Œ !2àtëH« Ý^R
+»{)H¼/(C8ܯ$±R&hê_Ã’{+â·¯–q{éš®ÚÖ–>ßcgfœ/ÏðA¦£k{‡ƒ$º±•mò’V—õmx}¶´zõÛŽ ú(íb '–6)n°Ù4õ¦)rb,6ÑYÙ­©™'BàsèP% ðXíí~¸‚ا3&ðg~jØDqÏÖ'm>I÷oR€~õã?æýhÃ
+endobj
+1100 0 obj
+2326
+endobj
+1098 0 obj <<
+/Type /Page
+/Contents 1099 0 R
+/Resources 1097 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+>> endobj
+1096 0 obj <<
+/D [1098 0 R /XYZ 72 786.278 null]
+>> endobj
+1097 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1104 0 obj <<
+/Length 1105 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚµY[oì¶~÷¯XäIÎêH¼J)ú¢5ÚÀ@’ µÚ]ÂZi£Ë±_ß¹ÒÊ+Û p
+?,I ‡Ã™3ét“À_º±bc3 ›mÊÓMºá¿ÇMh}c,©´ŒµÂÞ‚Û ¹*Îó‘|kiaVŠ‚»¿ù|—êMšÀÔ|s¿'¡ûÝÏQñK¢ÓÛ_ïÿ}óûin*c)%Û´ù Uч𠣿ÍëðÀç»Sª6oo~ºÙü4 šŒ4›­`»~ß”‡7LÉeþ§MÑ«¦à¦Ð”ä#SÊUSDl…ýÓ¦˜wL±`Šyß”ÝWôŠ]5%#SôǪ¾¢W²É4!1–LÉ•õ'B€™g›®ÚìÖ’¨õùŽ»s‡±«n·2‘ùöv :£û# Ȩ:×øã/©T÷·0X=<RÔîÐT»ÐiƒdÁ?½k¼š§[‘Á¨°ÑlùÑýØ”ƒk›o°›Dcï
+dt¾Ý”ªs-4²È/Ôî½=‰NøXRW'É'håš>L‡v‰îÐ*§Ý
+–Jr’*ýôDEéâÃ.|@½,pvÏUÝc[FE³ã([ÍJŠCás¸q9ïÉ GnÍ®êj×À–ãÛ­’©÷9(ñnÃeNçÚ ãÎwÙ‹=KÉdewÓZR’id ´û²«*j«¨«ú¶Ñïhwü§ Päq&ô‡‰svÄY¦Þ‡—ƒ=T'Xl+"°÷‚K¾ƒC1ϲy¬¤ŸyŸþ÷‡¢qç±.†êÇb8âŽBX_­–Âñ’"äêºnq'ô„
+ÈÈkÁ"†‘!TÔR`àó ¡<ö…`›æilõ"Œ\„mê1Ëc¯,ºj?ÖØI" þîZÂ>6û³ýÁ|GŒŽS•M«óCÊxœ’Ç÷ïļ֨c¥ÕÇ…SŠ`±wRßóѳû°•¹€Ï,Ž Gï“s×>
+&qz#!H}-|1á–ÿÜŽ4Å·=1ÉÔ2ª9•iNºøÛ®®C³+ÜáHåŸÅ™ó°eʱû‚hèSBÔÄÓ¨öãµÛ±ösk÷H30}¼Cßuí)˜»Ìí~“PŒÊ±ï™­dši`Åí²mÊ"1_¶Jû±Ä•Ü›üI¤§çÁ²h¸AA¤–?»¬{Çt†=mE[¡¬µ g”a¿÷ÜqûëÊÄ!
+û³;¡åã‰`[''ìù•ΫS=/“¢äÚ+x‘Äž þéÅ9ð0 9Ôy±þTP˜úﵜi©æju¹ä"‰^G†ÖËCuÌí…‰0z¦-Mr¡<T^œ½Í~I×
+- KB!3X¨÷Cr*$ªaYÕïºæñ‰¡¼º¿Àm"¶¹ñ){Hk÷°r[‘"ε—"ŒøøâvÄÚ@·PÎé&M&^ç=×1Wêª3€·
+Þ†qÚ¤Éå@þ€,Rvî<8N\8hÃñ&e=£¶¢*
+ßèHX³rÞl¬¾´2RS¥&–g%^lWÙœ±ÐñïEÎ’x>
+D iÖÌ_ ¸ó¡Mˆu*^!g ùrÕò/¯adàáò:i¤`;nL # uȨµ‚iIJ§: ò. <ò,ø:y‘;er â,›Qü£L¶±qné&' ^Èb#-‰¬]Û³XBc–ùëÊ:p³OŒ|wy¹ŽX]Ç€ô,s¤»Ý— S›­‚3™³(]->Ìȹ(ªËl…5ƒ¼Ô+âÐë3³²·LÇ™H—›“jÚ\ðÈæšÁ‘\m6®a«[[ù¦›óX)±µéÛnÆ·Võ5-Y „‚òÂL·:#УÇè•TáêA>>V/<X„ëPá¥Ó{nøìÉåb+„•µ‹öÏv&¾<¢6AÔÚóFj¼:eJ1GÅ«Ó#”
+|yÙ¦ÚˆCóNG¿â~H°&¼`=_ùßÄzWþ_ê Ò³…þr )Æ„‡¶ m0GgÙµºE¬P¾TÇÊ$«
+f$þåêM>rçJ÷@ˆéV¤ùÙ<­$ˆIŸª–¿FÇá%LEÄQEÆœf;¾Éëp%×ÑØó|=ƒm…›( "4½‚Vï<«Ú4Îèÿ' ijÒ.=3o•l:þŽcÖîy!í»‚L§$Ôü0#Á?]áI|
+endobj
+1105 0 obj
+2634
+endobj
+1103 0 obj <<
+/Type /Page
+/Contents 1104 0 R
+/Resources 1102 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+/Annots [ 1106 0 R 1107 0 R 1108 0 R ]
+>> endobj
+1091 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 871.997 83]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1109 0 R
+/Length 1110 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1110 0 obj
+30
+endobj
+1111 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 871 82]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1112 0 R
+>>
+>>
+/Length 1113 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+.ù\@
+endobj
+1113 0 obj
+52
+endobj
+1112 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 871
+/Height 82
+/BitsPerComponent 8
+/Length 1114 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÝKì&Ñ{ÿû•#ì‰#üZ ª@prÜ_—º.
+`ïôVÀ–­›4¶„Þç;ÝÃpêȨdwj"Ø»_üy}ùðí]ŸFþ”4S
+¼«ægø~\ iA˾(pæpÇË“Æ‹Ò1èÖ.
+œ 9?·;ˆZ6Ï!A3\¥;OÂ×ÆÞ±Ý@3*ƒ¶—ÆŸîôöñ~‡årHÆÀÍÛnøÇ·‘ÆY•ÁM`¿>¢å²Žñ~`F­&FÐ ƒmŠ4¶»ÖK+Cû¨áþC´P¬’þµîq_RtG}u½4®“óÀRÒX¿…ù-Ò˜úw–ª þfK'¥bz<nSÛ p¤1nÝáÒxÙ{ÒH#f‘ÆËÃañN³ÚØÿ;u‘€]J¯†}Iwç¥r#ü“‹¥ñɳÎ!Ûyklê¥Qð"¼iÌj˜õCÂû?H &O4:¼w€ù.i|còLÜòif–4ö] Ù‹ð6R +#i$À}ߺB‡{²4ÖkO£fHãO-L’FJ‰‘Úû´º®–œ#M‰4’F0ÆuVÐ…ŸâµñjꌯÉÏq[ë[&ê„ÔÛõÇþÏ[ 9ë€4’Æ ¦{w…œøAÒ¸”1^ùç4&…
+Vpxü„Š)s°á
+÷tQ}Ô7~4î:¶E “|{åÜÊü:iYýØ=Ø_ÄaÆÏuLÒ`Ò˜7Uè*Ý…“´8[ŠbÝiÍ5!áw+Fjì·b)“Æ+t¡ElÅËèÕPÕB[À lþ§Iãu»j¥£}£Ã$-dmœhÝc\\ùSSשvl…)œ·Hãà¼ßjg!®¼!Š%0!q´‚4f_ ëÞ—
+øãµèÛ±Bl y12¾º&j=ÕQÒØ7ƒ=~0Bv?õ
+iì8…lƒÎti,›ø"‰´ò¼Êƺ¸ÚTÒ\iì¾QrÚzç€ ~ûýÕyÝ…ÈÛ=ýéâ¿ïí¸ÐƒýTê¸ IïÿéÓ»YÇk_Ù?ûdi,Ûo>Ò±®0ÜxËp&ð“IãMJ˜<Ï˨;Ë#“6'SM\CÛ1GW?Ìì0بž"Oo–]ç­æš{iVû³+o„é^‚²ÔÔD÷1P«5Ì)ÝÖ~Òø(v:‚.F5ç¨`Ü‹]¦ŽQ_Ñ7ó–:Ý7±Ÿz‘™<ímÏÌ7®ÉÌ>¬yäηel•á™7-ùhR(\°¯ û&*²Ÿ4v÷#ݺUÒx¿°6dÏ츉%õ‰±{Í’¦àfIcÒ&ÙYÓYƘ±}ý6ÿwÊyýl’7ö­‘¬H¯Rëï¿o/í5Q#íC_ Úѹä]ëʽƒSµ 6íâU…eµ}Ýý–Wä-§”ŒŒ¼j:šÀU4s‰É3žêŸÙ§1/[™c¯ ž¢X£F\6W&ÞoZù{I#úæßN¾ÙKyW–öG½öø&ëÀÜŽÝZ¼ é(iì˜ÔÅ:Ò8þKYWO‘ÆkøÄë°¥† ª£’¹ãyŽ4^O–²äv”4Îêmw•Æ+n¯Þ.ëœùF£¤±l²±ñè`5‡lŸByµ4~:èÒyÒؘŸ©òIÕQÈÌ•Æzo\A'º÷Òx â×7²¸?úF{ÇÊQ<Ø †ï‰+ É{mΪðu·]¦ì^_V8iŒý
+ÒX¹2j)i¼Ÿ®ÑÀ±G8Gí3"©š±Òà@i4sHÃÇ}¤ñÒø(²D
+ÐÒÖR7×TJc£€MYï7¾÷3À!Òhiâ£×²À©'ë¬Õ©¿M>×7ë`„§sò¸Ò»PæOåpüÇ'Ýý’ƹSC5Òh³ó 3q”Úw*ø¬Êu(eÁ8»0Ïì•@F.­ÓÖfIcˆ­5&Øâ3³¤Ñüá9“WùŸ.h™Õo
+joÇËÜë<‡.Ùy/IöÒ1w×Ý5üÜ¥þ裕ö{¥qð®½ÛÍçDM¬Wt$Û:‹-[*üR»˜›gå½ ,2cP9?Ð-#‘8bG? ä4il<ÙL¼££^µHc™ºdüͤ1°‘¦–<]VNòìúè(•î'…eÀxÝ1¯4Þ×
+‘Ž‘´év­)~eŒëHcýV;‰l¬Ž5_+QwœÛ_¿™4^On É|ÄT[ÞXélImí4it£@¶4^_öHfdìÈúù©þÕâe•óiU¯íUz©NýàìT—$
+endobj
+1114 0 obj
+2664
+endobj
+1109 0 obj <<
+/XObject << /Im14 1111 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1092 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 871.997 77]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1115 0 R
+/Length 1116 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1116 0 obj
+30
+endobj
+1117 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 871 76]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1118 0 R
+>>
+>>
+/Length 1119 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+.ù\@
+endobj
+1119 0 obj
+51
+endobj
+1118 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 871
+/Height 76
+/BitsPerComponent 8
+/Length 1120 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíË’$' Ekíÿÿ_¼p8bbº+¤«pîÒ®©Î‚‹8!„B!„B!„B!„B!„B!„B!„4úü/á'B!„Ðy¸8ƒ‚KF!„Bçá¢áF„B¡ ‰hD!„B@#B!„’
+iÐœÈÓk7£¼ß#–Wœ=m>3…LÌŸqBãaFeô5tqÐH>µ r,:iv‚FU I
+¿Y“‘™NßÅuòiq µFòaz¼E Ï¿ôÖV£¡®…Fg戀F -ùت=Ku¤„ßkà"U(4NîØ'ÿ
+ŽbãqZl¯‚Æ!]lÂûúª94ÂÒ[<[¸HH—ÞxÎù¾ ËÉ ó$h$áˆDZlï
+;¼®¢4úÛ窙‹öo«å—{Ï|Þž¿j Kd>§6ØÆÝQÃzîòæÊÏøò
+LGuƒFÛm*Û«Í4EÑ3µ1¿4Ž¹"¡9ÚZ¢péMÕ¿æŸP{O£­JFH™Çìü4$—eF *Û¿þßáx·` 4ªÌ`Æ]š(í =ç­j¡ñK$Oæ‚Fy÷È‚å•-öΟ’öRøÖhwN÷¯+G ñh¼
+·õù5¥èㆄÑsà”ŸNñ#æu0 “ñ¶$÷Ù ÿÚ¢  ¶óï¹p–5ÕÐ(éG hüD¾®´ák#úhëËyÒ Ño†ˆ¨üÂYÄÛ8bÁ»dK~ÚR}léÇ^åÃÕ¨47C£¥rŽgYùfhÌy<‰ü³‚Žn-á4ÐøÚ†£ÁŠž¼³œÐhs㦓ZP›å‰A“Е  ñZhŒÞ¾tOãódOz˜¶ÍãBh̼éÚFw«‡¸%r ÑÌ3ÓwPÇ0Ï7Â%Œå ‰±ý·¶…Æ“lv4Ê'¦ ×²üúœBhÌI¾v9“FŒ#òU>ÂÚæ«[„;c9ÁjŽ¨¡ÐXó=©ö©ž÷=žGŒ} qòJ·¸Ä6 €«?#hìÛ£'Pí÷GCcþ!÷„)&îcÏ‘_[^ž1•Ä¼/ Ã6°ªý~æjgæˆ>fra[£%kæ°R‰R%雺ë€0× foŒÇEçœ'4û33Í 5Þ1ÐXU¸³ý­W²^îÜeËDh,i=§ó;ÇÏfù [¸“cþÌ߃Ơ? 4úK"¡nôgµ´}Ãóœ+h—‚|ùÏS¾kH;É϶Q:q‹NÄ`lŽÙ9Ðx=æCcÐTL¨‚Æ“Jv[<öóÀQ}ä!ºœQ-,n¤90%³Ûî™f‡ßÕ'—ŸŸ¡Fé-%;²3ó5\YX+Û ÷jÕÑ<퉳í%Ùù–°öš¿ gÒ“3iyßÁŒjøî.’’æÇAê\l¯-k8'å3*
+pT~(ørttÞ‰$„Æ×|¶'4^x&:§Žá|Ûu|†¿Õ™Ðå% 94šÃWŸŒ Sê3ÚžÚåS¼sªePÌ÷”¡‰<‰OÄèZ2ûð|þYBÕ€òT­‰rªFÖBcòÝ}@c·Ê ÐøüÉ×°,9æÏ h.–
+8ªüº¯ºívn\ª.™!:ɽù<B‚'ƒÎýyþm´cq……m~64Êc©g˜0(j³­ˆÝ{AãÏÍ™ÌÑÉИ"œõL4T¶Ô^á™K.÷ÆKi) Ð(¹ä\Ë3MÉ£ÑñZhd6ω'­â§gÒßâ’¢KR]94JríÐQ‰£r"Þ1иt^5Z%i5sz“Pçœ>Ðh>ãOÕâP·¤[X~¦9ϟמ{Ífz_ÛÂ-
+™ q[×Hß““ö$K÷b¼{¦x¿ñp¦’‡‘%<À7X.:"á–³—zô 8ÐhhaìwvÎå/Ñà¢qÜkÍÞ¦§€ÆÕ=64ø%ÁJk¡V3àê“KÒv ‘„˼͕¿ÓWòøôÎYt†Í‚&}ícñf Ïÿeö'áZÕ_ˆ…pZ4¦p”Š6ñ:çóúy,dÔ Ôývá'^Â6~3¤½/íb*¿…–Ê)ˆØex iç’ãäœþúa† rNÜÌéèÙ?i¡¥†-QÝÎW¶=Š¸©†yjŽ‘Õ¢ („B!„B!„B!„B!„B!„B!„Бúç_ÒP‹7endstream
+endobj
+1120 0 obj
+2935
+endobj
+1115 0 obj <<
+/XObject << /Im15 1117 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1093 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 871.997 76]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1121 0 R
+/Length 1122 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1122 0 obj
+30
+endobj
+1123 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 871 75]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1124 0 R
+>>
+>>
+/Length 1125 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+.ù\@
+endobj
+1125 0 obj
+52
+endobj
+1124 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 871
+/Height 75
+/BitsPerComponent 8
+/Length 1126 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíɶä6síÿÿ_õ®N»SIbâ®Ë~)
+ =B!„B!„B!„B!„B!„B!„B!„>Ÿ‹€B!„^pñX „B!ôáF„B!tp#B!T'F³¨27² !„P‘èÌ: ÊÜÈj „BEâ2KÈhBýíYô_bÄ0BøCš"úïŽ`)ÐCÏB½B#ŽñÏÊ°@#Âð!ô|9vÁ7²숩¯^ð\k7 5BBãr÷È"ìL
+fãÁí£-§¦?Ï 4¢š³$ˆ'æÑVû<boÛÌ~<Ý>Úßÿx!:þý˜@#ªÉæô ˆÌƒÈÈÕþ|ƶЇ|Ë’¦¾z1nUß
+¶RL_»æ‚ µÙ2¿=8‹G&­öϲ;‘˜5ÛÕ\=ÔË?û|×ZW‰ô„]U6°Ì[OuœHlo3¬ñ¤²ô²g±“IÙ¨,`AŒ/ÿ+ ÙâßçUÛh¼ŠìWqœ-  ³¡Qv-sSX`A#¿}AÿzïÃò¦óÇdaƒwyhÞsį)ÝÔ<bõ¹í†ÊXÊF B癈,OÙ³Û=‘4Îp,†Äø·µLÚ¶O´¤†öÞü#^êÁk¥¤£m
+t ­W5þ÷7ê• `\^=BØmµm4¼z}Y¦{µ*§4Ýnbh|Ê àýœi*4
+øMú•C¨¡£w_¡K_X§v… 7­>Ç ^@†³ËŒ1ÐøÌÍèõ—K»¯>¶ =ŠŸ½ÀÆoHŽÉg’Þ¿ÔÙÈýæ&D•Ö©]áö’lÓSW=7nƒÆç`ø€àØz
+¢ñ1uªH²êÊ/ù
+Š®®iiµû¿V!C‚jF+Û_~1?ÛvE³Ã˜¢9žî‹Žß.<@cµ9WWÇñ‘ÐXg­b~혓ÍÈ`mÒ×^ol‡?U31Ƶkºàj§C£¦K?Ú0ŸýÙnÔ®WD爥¬Ð–Å!×_Ø«‡Ö6íÚ
+m7âÛ|§›Ø›í0ç,bô°‡…ШÉýrcbCSnÌ‚FWnÔŒc²ú…Víñ)[Fãm"GŠMú.C04*gkœì¯Dkί„7“¿>cæ3¤@£kýJl3#ÑÑäNŠëðaÐèÄxÓH²ˆñÑÝ>‹œ—b2ì4æîgî^«3ŠPú b>MÂ5‡ †RR÷ÕÿV<ê'ý ãü·ÙôÔFÛ´ÍMƒ÷.Œ˜;„â\µßí:8D˜4P9y†
+PtÒÕ)¾{è± Ó}šU5²Së}#èÿÏuòY}D†F“¬ªËXuýÍ €ßâÓ™s‡lbÒ“¸ñe@™G¥@c÷—%(¹Û°S 6ìyŸ{^S6ê5‚FaŸ¿tÃÇ1w æ3ŠÓ§mžž„FMç‰SAŠ»ûö\®Sά µxPV&ò^Š ØŒ“ZR7Âc1Ý%ë<Q–:]’M÷æA\éð•!åN¨¸Þ"NÍ<œ°aÐñ¾­ï·ÞÀÕ‰ÝH
+-˜W‡œÚoıһxî¬ã³2‘ÇÓÒ?oAN¼,&nÁuMœ Ñðþ×Sf¬UY ¥ýÒi/+¹Òø[x'Û–-å®Ñ܉{</ˆs.AY 1¾¿#h4œxó­JéíC¼Ï¼‚¡±B­Ì# tçÆ÷"|eh,ÒíixQ®Kã“Ó«<ßbÞmÅ·™d–ßË)Yqh Q'®ÁÝʽ\9ŸÃÂr|ωßùK@¡Àêñƒ¹Q¹ÂnÌsYepüóÉ/߶%µÛ5/Õächu­¡ñùuK÷£WëZ€Í½=}[¹-å~]íçq›·ùs¯¹–ú=ÎÐ5ÿLpÿSõéޯO
+>€‚õø8ÛéaÃ0[ÿ/Ç,]Ah,KN~[³Ç똇˜ü[Ÿnv Únœúƒ+eШé½l7‚Øð ÁjŒjüZ¥#ÊŒiÕ‡d"žÏ9¯Éüä ¡qç½Î
+h,µqZ7|z§E}‹$zhô0Ú"èèG¤Õ2toëü‘'OnÕt=rU³ÆM·ûä‡á}ÃÛ-œ²Vކɶûí«ÆÝ`sû&é
+4n†Æo&g KHÛ5öõ
+éíF]¬Kv~gâ§lCü³²¼ož¶l€FÈYl0&Wzg_#
+û²Õ°¡ Sw*´ù}!‘lëð_.4B㪥vúfë n´]„ÁßbУs‰]Å@ã
+!„B!„B!„B!„B!„B!„BêŸÿVhÜKendstream
+endobj
+1126 0 obj
+3407
+endobj
+1121 0 obj <<
+/XObject << /Im16 1123 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1094 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 871.997 86]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1127 0 R
+/Length 1128 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1128 0 obj
+30
+endobj
+1129 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 871 85]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1130 0 R
+>>
+>>
+/Length 1131 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+.ù\@
+endobj
+1131 0 obj
+52
+endobj
+1130 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 871
+/Height 85
+/BitsPerComponent 8
+/Length 1132 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÍ’$­ Ekí÷_¼²Ãᯋú½dž»œ˜éÉ!„k!„B!„B!„B!„B!„B!„B!„PŽ>ÿCB!„öÄ4"„B¡ŸÄ4"„B¡ŸÄ4"„ð!„~#Á!Ü®
+Р½ar‰¯V"BhD"Ɔá!D¤@á²Ø¶‡Á!„@èO{ûç28,B×q„šƒFøßq`Ј‚ö4þìä{Å2—2H_nŒ@½ív|ØoÁZÖ)Â!#„‚+”¨`Å=爀Ј֎Дµ×…iT(ÚMnpðo™zÍ0Jß×Û׬r Å®®Ã }›çÃ}{Û—ÿÙ+R!פ¼ß’ûœè§ß›ú¥~.
+ ÑÖAGßzÁ™XÜFeôK ÔÏAÓß+]ÄýÐ(ëE‰8Y¬¸)£Y5ÿû…ʤ ­ ‘éÙ(i&:4K§4Óû‚Ÿz‹ýB©teB{>x”§ÒA°oãÛOLÆmrÿ¨
+nan„ÆEškîF ^3Z ²òþQˆn9qõó:Ÿ´9HY›‚÷q¾½®(’˜ÎŸ$Ù=A!8é KX k/ŠS³6/›¤ÚÃÈüŠ£…Ôr°ç¦£æ̪U Mí75aÌ׌èÙÐøÉ–1D¦OïÍVuŽ¡à]xñ8uZÜû*0³ï%VnÆæûvb(ú P$ùÿ;‚NvÚ†E'âì㞉 x”fÅ¡ÑÙ×ï¥uJmÁ}p»‘òmƒv%˜ùÑÆ‹œêøæÈ>³jÐ8 ¥j>¶Ú•%¦«`jöE†!ÅoGÍôϯßf§\=’:»û‹UnIûkB£þp5Gç#hœ½•c™ô§–FÛGxäÿc ±È2â”4^TŸÿ*0s[ó@éXΑBã’¿ž,˜N¿WûɈýnrÛÖho‡ÆêîvŽ8ÕP m_×Щù…ÒÙ’Tû_ë( ÑMŒ@£q ^—˜mÞŒè@£ï
+’zâÖ Ew€F 17Ëç8ê­‹Î@ã¥Ð˜n™‰Ð˜¸£9r§_Õy¹ì4¸”¦×D Sb;¯
+»ÒÉžE qÕÔ½+§¿mG¨#X¸%ÞZŠÐ”¡q¹::<çTtÞ<ªè{§û(“ >õ¥q!ƒ°‘X{_§·ÆF’KÆëKîUŸ•9é/ø´`¡ûy©Ç@c$zV0öÉtˆ1Çv‘äçxŸ–Ó¦{ÚÍ5xc7¡MEçSÆsÏ£ýÇVǬñX/J=°Û=-ÞȸUçLì^×¾êÝ÷°èG_JAjûÊ.0žÊöOA£¯V'qÆí]d}éS{{64þ¼_™ êvm ÑÙâ½s“Æ Ðx]åö“ ±bSöéãÐh ÁÇNù­!¥<E-¥ GBcEhÐìcéþÝK¡ÑÑm°;œHƒÄAh´4åFG˜«ŽÎËPê\—ð¯h(š8õ:Q È2ÿL}§@cð«ŒsêÈõ5D ³9Òî4cÑ þ´U‘÷h4_„YI­ RÊïíŒAb4æð‹¸ÑR\áƒÆ‡õºÉEˆŠý~VS–]9~ë~ßÙø$Z»û'õc™Ú÷ãåQPHY‰¾ÅQ¦˜ǧ¸Â“çv[­ËÌý§›?y4¦ïÝšSÓýИXîÛ"Mü¿ŨÍÐè.Ž/O@cÊÞ h,…Æ8x4`¿ý’ïiYNgQ“4:®àõÇý‘4#ÐèÞQŽäÄ­(eëmAÙg@cзßm•nϬp§)é§Ìîb¹³Ù¶5îÇK{š.Ñ¡¥|Øi4<âÆ΢¦:h¬Xž¥ëbªû–;ß°¿c;œ²wÉ1no#þ*«CHiyjbº58Îé>ªôw^îH§ë}Ç€êèÜîû÷§ÚþÄ»\VX¦¯y`ƒYfГ´Ac0ïm¦I&wB£ñöŸ4îÝrº:uÉ7žšÛß Ï%Øxzª?矞ÒÑÜØžv°éù6G’ðñÐèXDñ¿©ÐÒmœ¹–é>ÉŠ7íLÆ”ígEk>{…U34öï”}^±!·y”fl>.?…F£ ÷nuý<³6•îÈò§1|bT@ãjé‚Ušl| 4ÿ÷Ü|Že¢s34Q0~x°JäÔÆ|œÙ
+'Ô=÷(}# ‰µGðôa̪Bq”¤og,ç¹ pMtYI÷ÌEÅó§¥&­êÒ¼ Ä,íNo¶u˜X—þ98‰—}Ž¶äqÍþ?½ò”ÚgV@©NgõSS]kµ‘dcÏýbßtËä÷Ë—Ll˜fl³–ôú5Ôš¯s;Q¬¼¾"éØ$ÆÕ~Å`oäéŒܾÅñ,1ßXáÌuYи†sŒ3^QqþéyM'16Ñ¢f“=—ÜÐx1Ž@£¯P$·À -Í(«ìxº¨ƒÐQö,×éݘf´#P–3Ͻ8°÷cYÙÒÿ½ií#öt‘Oÿ²oîDrŒh¬;-}64­£Ù’¤81S ÀN¡;71­ÎYÑ
+h,úÂh\yWt7?°SÒM=[¤æ®/G#Vw=JÕ¸ñ¨
+h´ï@‹V™»S|îŠ.¡Ç}`yëC㕱#å?¡±m;ãK3ê@cz?„gCcóNyÅZÝD°xÝñe¹Ñ!%ÙXT"+Ëö¾¶Z²Q„+ú4ÙŒãì;îB‹®§qnÿªeèG²ˆey,% š§Ò·~j¶]Yy¹:h4–D¦OM1q7åÎ{îbì¼v1 뼿îH²ñÓÞ‹þFh!Æ£ÿ:½S™݉CãšÖ·zÅý%‚”˜X¤”Øì4s(«à%Äfh\IïöŠ¤ãÐXîmHÛê¨öÆáÚlö q5¾f%ëäY½ž][4ö4ç|4®ìFîE_¸ 7Oë`Õ¥ÍN#Wç—° mçBcƒ 7 H齞¶Í¦»È³ÔÚ×DÁCÊ 57|Ûìht¸q5¾Xñhln¡\Ñ© h¼WàE˜fhü–¬<©[,†ÆÎOŠ¤×rôŸP8º¶æÎ ÐYƒGcF q–ƒþ¡®ud‰Ie5ÿ“ Ñ8Î?ãŽÔþkjj~V¶W½»+O4K[|_÷tŠ ±Óó4§-K¯#õó¹µþÚuÙêAc€¡qš–Œ§ß
+¯²×K—¡ç-Á½§BU9<‰GOA¦½%¨ Æ©)ŽOmFdkyo²Qç>¾ZJGí~\ÑÌϯehtw©ªK qŸ¬Æ‡×&7¤öþîOAhT³({?(Ù<Ì4ëEˆ1×ë¸Íõ²æ|shï]ƒw¥_Š ô!_‡ÓÆ»ºY¼·‚Emþ\á D$¡'ƒâOµ
+&t²yÆÌE€­v[çåÐøçX)^B‰v0“ê` 4žòƨÐSã…Â<7â¦]“Z‡^å0úsOªoj…—ä^.ò* Úi$U›Mn09¸ø¹1.
+i.ŒÎéÐ(»‘¹h±ð6.óæäÆ]þŠM¥¦§"‡Wç·{€oùùa¼q
+endobj
+1132 0 obj
+4029
+endobj
+1127 0 obj <<
+/XObject << /Im17 1129 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1095 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 873.997 83]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1133 0 R
+/Length 1134 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1134 0 obj
+30
+endobj
+1135 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 873 82]
+/Resources <<
+/ProcSet [ /PDF /ImageC ]
+/XObject <<
+/R6 1136 0 R
+>>
+>>
+/Length 1137 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3Ð3T0
+.ù\@
+endobj
+1137 0 obj
+52
+endobj
+1136 0 obj
+<<
+/Type /XObject
+/Name /R6
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 873
+/Height 82
+/BitsPerComponent 8
+/Length 1138 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíÝ˲ë¨EQ·ïÿÿ¯*âV§"αŒ 3yhÌîöö£Å$Aøº
+àìôÖÀÁ×8ul‰¾Ïwº§ä’WÈÔD.ð†Ñyðíõ¥Ä·ÿú40ò¡dšÖ
+ìuægøD>JMoAË^(°Š¸‚éå©cÈ—Ò1w]
+öˆ“Ô1ö7JÆwPÇ2“A ]d7ÎéGX¿¿®»¦TÜ>©ù3¥äXt#Îìë{cã΢öÎÒá—RÇuŽ§Ž+{cGÁáøɻᷲä5W§çOY§ž¢ÝE¿Œ>\Pu¼þ§i?òƒ\Ô‘:RÇW©ãÏ0ZÙZÞm’:ý*Õ1¯/Ø&NFÞƒº%uLº ó*Š•&Œ¨cìñ3ÔQæ¤6øÙGýÄEv¡iðu'Úòˆc :IÒ†ÃuRtb-q<[$ùËðnÿm…zJYoÙòàÜá`VÓÈ‚ñî€9ìxä- Æ~wá!ú„~¨«ý;*Š‰·É Úã\u|4ÜãêØqxTe ý0u,hÃ)U”G_ëôß{ç°þÍ×/¤ÎUÇuL/$ÍÂÕ±{ݪXæ˶_† +áÐÓwÈ»^[¯˜¨ŽWΡ:•ê˜=dÄNù š®£òPãN»dÝê{„ÂtOtÆ #¬`Õxü,‹)õØp‘{ºå>ê <¿@Oá"ÐL¾=rngÞNGvEvOù—2™ñs “”˜:æ•M¥»q’î5ÎV£XƒZs—HøÊÅHýÖ,eêx…n½ˆíxÓ½úy
+¢®Ð–£r/ÿ·©ãu»¥c
+ŒÖÊQ~;uì®ç£²SÛã
+ê8ÑÀPÇkàп¾ùÅ_÷<H2†ée±–ÝòOç¤S2ú|oâ~›ÔQ€SÇŒ— Ž•;¦–RÇûU?&†nõÿ¶P’³Ô1<B3vú½PU©£ª#uì ®ñ`!8iôi¹ < *Õ±QÃòvPŽM’°²Ó¶,nZܘ+i#½e‘©ô”…ãðºÃKd쑾Záñ©"Ž¿ùð÷Xuœ[ ªQÇŸ“ ×õF93qÆÚ±uyb— ÜðC<ÀÄšK‹ Ô1{¯fËrÉš[ÊÔQܽ6mò.§]b×@Æ€ƒ³=¤X”ä0u¼ñ¡áÛ_=Õ£ÖÞW×ñÅòÛ‡˜¡åªßù,I€ê•U‚nuì¾ÓäqzuüÓ—ÛîåDìRë‹šØ@Ù¡$U€õGŠ<yª[yÅGân廓®´U<‘N-SËÄÛdî+Æ•ê(7€ÃÆ‹šŠUǨ5èöǦŽ×ó_>rQǧ2~ÇM¥¹%]qoSGKÏ
+endobj
+1138 0 obj
+2582
+endobj
+1133 0 obj <<
+/XObject << /Im18 1135 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1106 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [237.148 386.215 242.602 395.912]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6) >>
+>> endobj
+1107 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [453.41 317.864 458.865 328.773]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6) >>
+>> endobj
+1108 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [102.333 101.683 107.788 111.38]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6) >>
+>> endobj
+1101 0 obj <<
+/D [1103 0 R /XYZ 72 786.278 null]
+>> endobj
+1090 0 obj <<
+/D [1103 0 R /XYZ 121.366 462.595 null]
+>> endobj
+1102 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F30 512 0 R /F28 523 0 R /F34 583 0 R >>
+/XObject << /Fm14 1091 0 R /Fm15 1092 0 R /Fm16 1093 0 R /Fm17 1094 0 R /Fm18 1095 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1144 0 obj <<
+/Length 1145 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚµZëoä¶ïçË?áoÕ^E$õ ôC.©ÛK( ´@S´D{…ÓJ i×>÷Çw^”´k-ðò1’Ãyüftê*êªÐW…Íc]Ø«jÿN]ñ¿W¡õcÊ43q–bï Âm Üš,¶y†ôïoß}}cŠ+¥â2Ë®nï‰ö¶þW”Å*Ûl•Ò&úkÿÐT®ÝlMa¢›M™F}·1*:Ž›ßþðõÊ®T—IÉë·:‰³2#.Ž›­Î‹hì÷þØìýˆ]íÝFÑ3vòè~lä™°ó•G7<3á±gš,°Ñãf&tüsGÑe$Û¸®ÆF 🎾«}Í\úÇæÕ‘'
+`œå‘·d66{<å©=ºÎ÷§±}ÞØ,ŠñÎxK…Â,é–·k"8©±Iä;w×zl«h<U¸ÍŽ{Ußý”¨ôá4¸cÓw#ʳŒžšã®?¹Óy_7Ýs:
+ÇÚW­„åq'pñQÆq£'üÓó
+Q¦£j›»e14\ ÑaèñFMM3éâ §®B™!‹w¼U:‹SPÛm‘Äû‹ðe£
+Ö¿¼f¸ð)L(”îqá`’Ùµ€JWý¡!¿¬Cƒ!û϶žFË]T_¦é:žÐp¢¿—…;˜Õ‡fÓñävžWÔ|V\¦E5éÚÞqŠ‚bã虩ëzØ}à [,¢Š\E¼Ù¦Ð¹ gëüSK»Ãƒ'ylðå¦[ Þ‘k3‰]šoRDƒ¿÷ZWR¢ÙÓؽ«ŽLKFØî``t{Ïć]y”@
+†U¦ð‚ë‡Q"Ü]sÜ»·éÁà÷Áw~›‚¸t9H-烱ß32
+BÕrO ìïV¡njƒR+‡Ñ€ÏõÙ;ü­kß™rÉnnvØ!Úd ðíšÊ8KBr3¥kŸÁE£“Ôz2¢W êÑyu””jJËà7€Z­—TëE&†=ÎĸMi.üºš3_àñظ5´ZjNêôm]¿¡M€o ëgi[0•¥üæ ¿˜ÂþÕSøÂ6A_ X@ßÙ©êMI5‰†—@„ºãÀ¸âC¼™/W,JÐ{Ú5!)GšF8¸ÀB- %j]£³7!©ÐgYèEù²F‚ƒÈËâ …
+«E!AušGCšæ:ñ7
+
+I¦ânCõ
+üåle”ÍF¦çIèï·!ÀÑVPü
+˜µ„5fã/½ì\IC¾Ÿ£ãà(“+ Ã
+rù.Œ°ŒuôO¥dÄ:òP=û'ѬÙÝ“P$Ä(¥\4àù‰Y
+z‡¡Ü~䞤ЪzÒµrYt.ÃCÃ<c̲ò9Ë‚M€œaÏD;7®ÜE"<eÖ ·€<@Fz"]JùÂô¬•Êë[bˆÀPã5£b›ü&Ft18×ìÛðÌ,ç
+æÅ[諸úüªÞÉå>šàì+šó¡|9Ýendstream
+endobj
+1145 0 obj
+3270
+endobj
+1143 0 obj <<
+/Type /Page
+/Contents 1144 0 R
+/Resources 1142 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+>> endobj
+1141 0 obj <<
+/D [1143 0 R /XYZ 72 786.278 null]
+>> endobj
+237 0 obj <<
+/D [1143 0 R /XYZ 72 761.372 null]
+>> endobj
+241 0 obj <<
+/D [1143 0 R /XYZ 72 389.76 null]
+>> endobj
+245 0 obj <<
+/D [1143 0 R /XYZ 72 270.086 null]
+>> endobj
+1139 0 obj <<
+/D [1143 0 R /XYZ 72 177.263 null]
+>> endobj
+1140 0 obj <<
+/D [1143 0 R /XYZ 72 127.649 null]
+>> endobj
+1142 0 obj <<
+/Font << /F37 380 0 R /F15 393 0 R /F27 394 0 R /F33 497 0 R /F39 496 0 R /F26 391 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1154 0 obj <<
+/Length 1155 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZK¯ÛÆÞ»@»ïJèÆ`1œ_Ù9nœ¸i‚..àE]445÷Š¸©”må×÷¼†"õ°ŒÂFk¶†óâÌy|ç;‡V‹þ¨Eªi–„:Íåö‰ZðŸÇ…oý}<ÓÆ&Œ->ݘ¸²6LòÅÊÄa–Ä8ÿ»»'ß¼TñBEaå‹»{š{·þgÐj\¿\Y•ÃÆm{W¿[ê4p}¸\%¹ ^ 8˜Õ8i©³`/O»å
+žÚ¾¯ÞÖŽ'-•ív·|'lÍÝ=/qͺj¤«ÝÊ4^S UÛõò_wƒs®^=§óº?´ÝâÀ“ïïŽwÖ)ÈPó•ãü–ˆ`?c ‹òºhÌÙk²Ðfñm Ä¡ídw“_ØýïÕC1ì»e¬¼:äUsßv[ºú·øæ“c)hfôz\þr™Ù íPhQðç¤;T%?u®èÛ¦†»æA麡¨*Qs›¢+ÊÁÉÚ‡®ÝïP—QãF{?¸Æﶫ‹Ò­I+ˆ©JÞ⦇åÊhÔ|+´'|,šµ4øç¾mpòÀOo"eÑf°½-Ðæd—µÃ¡F†zÇöØAÌ_jmDj´!ÅßM»„‹¿§Eïð}xWhZy3Èf ûj¨ÞaËÕžQÖ®è.˜ÝûMKãE˜NDˆ]^„Øî7í¾ÆKÇ1f…GÀ‡ô(Gš6Ê Úǽ';±<ƒÜ z”X`7>.|ëhÑ„9ûY Îi˜§SûSñ¹uçI.äW~ÜÄ“ÈÞr ±ÑaßJžÀ(M27¸7Ú™—‰Àw"5=+Í€nº}Y5©Êè qnMâ4ìªãÎßöE] ¨Ò/Ȭv¬‰Þ `Î9|ÀÒ0IÍçÅûEñãE…wV6øÉu !)>Ü£B“e²ÇÝ]Fg 8ĸ ;lÀ)´B×YT[Áz
+6‚ÖòØÞó2Dù Pžràà@¸ztwìUÁ
+^
+@æ`Œùà'ܹ)ö9lÉ´ºæmç¸ËëÆY¨EA<Õ©{ÂhxùPv›Ñú“šÀ9ÃT¥BTê%$k±
+~`qñÛ‘£ÁŸ¿ü™“ }Ácpç(Œ!Hâοp …¸_;ŠÇ6™Â?<£²•ÁïDe6•Aƒ`㩈ÐA2Å)s°)Ù¬€È\9颋À”¶h“‘-&ž-"Ž«œc×{5†¨D…Q|;ˆ$¡I¦A"Ê9Ìÿéô5þ‹r1B½Þ8
+éÑÑ$Añ¡Ã˦LdþÛ£=Â4Ú 8rÅ:ŒqýÀAzÀÏe•Pê]}’qãähÊÓsÅä8¿¨ª0¥&¨Û° L!¦óìËý¶, ¨N»—MOC\)ŽRrÇltGÜ’jR0}Ìɱãd
+kYÅx“ÚÆ¿fØ´½ßÒtöéêüð'ñÄÀj×”Âjè61°°×¡(‰‰LÑ <s¬@ûÞ |)vü4,¡Óât5Å–<‚Nèd‡cþ‘ª±šÒÓrOp¤m.ÝĹ³æjäêß?¸áy]#[ùÏð&Š#ø«.–®òP[œqbïÜ©G¨$ ±€¼E@#Òk%Žå>ÐgÎ*'i˜¥ùuO»¾^™‹ÉDd"¡rõšÚÄ_±«®0˜c ! …·RMôÀs·-±ƒ&…y'¶tœsÊA´§yȉª‘q£˜/^mBM•›O+^üïë{Î 6šüˆú´J‰]Åzݹ¾çô[OÊg“eÞb ’˧(€ý ]0U*„ÔÙ :ÞZI‚§)wãqE‘¼v‡á)σï܆÷!§Õ ãFøË˱õíx¥Giì$fMó# RIðt3mãQ ý®(}—$Myܸ?À ¶Øƪbå…<ÙËž÷ücõDgê¤z¢3Æ>h
+Ç&Êùp²«+úŠ®ŸéyD6TAO•bÖê%FWHÙ¥Øíºv×UÁ©þÚ_Oæqò¸ÏÝÆ]ɨw\4$ÑℯN‹®FÒ-œà>ìꪬ_Xå² xJú»ëÚëIÁsj”¯Á)‹Ä‹\­±ž6@ ´Bú/ÝóŒK>°Ž£„òÁ¼‚×úJ_ Z•guRPrVø•bº²ìeRŒWæ„àÎBˆ à㾪žK¬å‚ƒCnu,^4,&Vc™ÛAÛ½ÔG&ZZõ®ô‰ÀÍðâ^ÊWe…[–DÕØlÑør“ÌÅÆ`#ðÕ²êyo+U2“Ó­ü¡3ØÜKZÌ°#æ¼´á‘Áï LjÜ7¹X.<ñÀ“ö\5³Ñ1Ë,JÏèüÈ
+Æñ^¢ÞùeD{Õµó^ò®VÎÇ‚ÆÖAnTö+oê±g›†ä¼ÎdGâyòg–
+ÿW0£`Ñ튡NŸ$¹ÒÄ“[_Dø˜ O¬}”õ‰Ýžà™àÏ,¥»&o@£¾À}…ΔfÄÒtZ)®…B£ß—¥£„Ëv•ôzM¤R…ƒ_€aþþúÚOêݶõRцú
+Ö÷¬Š¨s Y¿'Ö}Ýîv‡Ëe/“û/Ç”îÉ×Vù"—å’òà{:L¶züN&ßä4òò99™Ã'©š¸iöµèš`¦’@y_Tu,Ò ëzvÁ+Îê<~½OÄ¥Ðs‚cö¯€T²ó.ù
+ž¡ƒ_﫧rè¾å.ÙS>æËé¤âqÃZœ¥ðчtṟle¤le`sH-³
+endobj
+1155 0 obj
+2974
+endobj
+1153 0 obj <<
+/Type /Page
+/Contents 1154 0 R
+/Resources 1152 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+/Annots [ 1156 0 R 1157 0 R ]
+>> endobj
+1156 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [390.103 685.335 399.069 696.551]
+/Subtype /Link
+/A << /S /GoTo /D (Hfootnote.15) >>
+>> endobj
+1157 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [267.387 348.35 295.266 359.259]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.10.3) >>
+>> endobj
+1151 0 obj <<
+/D [1153 0 R /XYZ 72 786.278 null]
+>> endobj
+1146 0 obj <<
+/D [1153 0 R /XYZ 72 732.484 null]
+>> endobj
+1148 0 obj <<
+/D [1153 0 R /XYZ 72 667.406 null]
+>> endobj
+1149 0 obj <<
+/D [1153 0 R /XYZ 72 620.119 null]
+>> endobj
+1150 0 obj <<
+/D [1153 0 R /XYZ 72 568.59 null]
+>> endobj
+249 0 obj <<
+/D [1153 0 R /XYZ 72 459.296 null]
+>> endobj
+1147 0 obj <<
+/D [1153 0 R /XYZ 88.587 92.018 null]
+>> endobj
+1152 0 obj <<
+/Font << /F15 393 0 R /F39 496 0 R /F28 523 0 R /F27 394 0 R /F26 391 0 R /F33 497 0 R /F29 547 0 R /F40 548 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1166 0 obj <<
+/Length 1167 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ½ZKÜÆÎY9ç¾7s Í~ña %öÂJûà  Œ^NÏ!9æC+åקª«š¹Zlc!±ŸÕÝÕõøªzÄMâ&“7YžÆ2ËoÊÓ+qCïnBéÐF#µQ±ÑX{aà.ŒÜ)ç©Áñ½õù07"‰‹¤¸¹?ø±÷ûÿDo‡ÛJdÔÛ±ÞSùáv'³ÈaEEM;8ß.¢áhyô£k\g‡ªy¤úÉ ]UÒ„ª9´Ý :Û˜æhÔÓ-µ·2>RÃÞõeWáryäxqKÕ‡½Çÿxƒ}çk=Uû걩~L„.ms+‹h¸ýïýßáL;‡/üÙì©œ„»V*jôªU¨4%-Ö}¤1%îõh;[®£¦£íy~KSf>A¥³=Œô§€!–—I’ðàsì·(Ò¸PébŸoþ€Q0äó;™]Ü”,â,IùºîÅOß~÷Ó›»ÒÀÅ•‹Üð@`±D·êi gÛ÷´AgX/•±)Ô¼ÔÛ¦¾©~LLÿÄÆšig@‚f¼Þ ™Æ)È8õ¢†Ë^Q œð©ªkÚvã*àH:¸Óy˜6ï¿í™n ¡*³å䧈““Mà‡®½ðh”i¤ª'9vÔŒó}ó…Ç·;%Ñý±â¹á;öî0Ö4Þï¾ý™DÙ3Çœ©ÝžÏuUzz~¶ˆžŽ .0ôH÷L
+±´ÙW“CRŠ—Rä™&>Ã~÷1s$]¸6ç‚Œb«ÛFD?ÜiÔUì¸rÍ'ÌUtWá®9‡Ä°Šš,uƒ’*á´{4LX¼ð*þýˆ¾ËžØÙWÃÔëO`ÏxŒ_Ûˆ·XòÆÏo©a:.6[µ§jË[™ÖB‹Ïâ²–•ËXëô%1q*Bµ)|_í‰1
+Sjã`w7—Ç…Ô“ë¿t× À9#fˆ0ŸSéX© /&éÆ>w*VPÞ¥1èÑÆ9Ã9€N†æ Pˆüeè©…‰žðrz*Û†¾^;@ÞØÖRãÝ66’•÷- þ| $•ªz[­Øôq X>–*€ºû-¥
+ó) ô˜7OHçñô¨Ð¹2ì5§"ÜÀJž€-4K%÷à8É£oÿõÍ7hR’‚” µ³{²IFüÃVGŒï*o)¡à+Ð
+Ô—wFmÔ‡ôÊÖ£‹=ÍÊ—oÿ5rœoÀa¿a• ØÀ  3y}•;UÀd¿SX‘ê‚~ù
+_KF¸ý@U`ç€_Žµ%¤B1kôõ¹¼pé…Öà²Ç„µí5¹¦T>´<¡VÆ xŽÐʆ~¥±-ѼWe¦sb”¹‘ãàp†. ó!ü}ÞŽe)
+d,ŵ!e³X0÷µYWy1KØl»
+òŽ$ È‚sx“"Ù¾IQþ„<¶¸ñI¡'߶ü%l6øÃf
+”xþ¡D>t_l1!Ëb=éú›¾D¼ÕmðA›8ù'r÷˜†¹XðäK÷<E&Q›OPGSÏõï¯]õx¶6–À0ñ ÉüÍžŸ%dÒxnšb¾ë$
+35#;üîÝÁuþmH«ŒŸ^0úð”,ÓŸ˜@_¸`nÀÂÑ“ÄïahÌoUèœR7l)0Ù-ÓÐzi‚ezõ¶(Ù¼K4•¦TÍ‚²Žh•;÷óXÑ;õPÁ2$œž‰x(Û£9룦¬šXF$yæšÁ¤2dƒÔFd€t DH³'ª:PâɸG`cH¾£ ’£0{}¦)ÊØq¯â‚ϦÀÀ’ â 4’„YA© ˜á)JÔ©SÇz ²g|-~²¨®zîð „t†Ú»}u¢¼MOË0fÐCZ†iØ(cíõ-ÍCЗ‰…éÈ F¦i¶Š†üF·Þ¬7€”kRó[€~ûøeàÅyž ø¿&W6'où \úg΂)r‚þéy4/"W7‡mËtµáýã<[Ÿ–³CUB€¸>š?˳SoóAÝPiýX¿‚Ž#¾)¬Ï‹u$”-žö'W >eŒŽžæ?R„–Ï°šY¾h[³¸½Ñ³<šïs·q8&d“PHZb¡(¢ïîžÞ¥r40>ÔSCáùA“„6hòvòPêÜ5|žsÛ˜uR(K=CTª§ Âg ×ɦ
+ü3!œ4Å÷ƒ†ÞÕ”Rp^oy°âÅ›!Vgà ç7`¤ÍRðmÝvUïáy1ýÀeð?ðÝqϬõñ¿fË'”ö ,žëpôþ Ôé‘žJŽ·2VõàMY¡–6d
+˦r
+ˆßìÛ÷=Ëx¸ºÍ4Gþk<7a–L Ìx I)8ù$Êäõ2#?´þ©›šˆendstream
+endobj
+1167 0 obj
+3218
+endobj
+1165 0 obj <<
+/Type /Page
+/Contents 1166 0 R
+/Resources 1164 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1083 0 R
+>> endobj
+1163 0 obj <<
+/D [1165 0 R /XYZ 72 786.278 null]
+>> endobj
+253 0 obj <<
+/D [1165 0 R /XYZ 72 626.755 null]
+>> endobj
+1158 0 obj <<
+/D [1165 0 R /XYZ 72 506.485 null]
+>> endobj
+1159 0 obj <<
+/D [1165 0 R /XYZ 72 470.42 null]
+>> endobj
+1160 0 obj <<
+/D [1165 0 R /XYZ 72 395.829 null]
+>> endobj
+1161 0 obj <<
+/D [1165 0 R /XYZ 72 330.545 null]
+>> endobj
+1162 0 obj <<
+/D [1165 0 R /XYZ 72 269.503 null]
+>> endobj
+1164 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F26 391 0 R /F33 497 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1175 0 obj <<
+/Length 1176 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZIÛȾåàò¹„ tsXU\}³“iŒdr˜F2@ÄÕT©Å˜"5$å¶ç×çmEQ"ÕmÏØ@èÀZ^moý^•ÔE?u‘é‹,OCååö™ºàßÛ _ú ´1eœ˜0‰±öᵧ¼6I˜§ Ò¿¼}öÍJ.TQqq»&ÚÛÕ?ƒ‡MU^ê<Ø\^›´ªž¿+Ûû¦úÙ­ÂËë$ÑÁ·ï.u¸î÷¯÷Ý°qVòÀ5e{y “¬ªæþ
+Ú²,X¹×‘Š·b’;\CÆÂ@n\· 6²ôлzÍåVf¶»]]-Íaù³ï]G æ¸óÝþNu­ðøÎÖ8ÈÒH<š‰ƒ­íÞb¦5&°4ð›MØ“g¡ÒJxtÓ6Ã;WVkàѱ2ÍÃL§BÒ.`yX(u´™[<w¬€‹|ì®rKK'E¨u,ÓýÑî¾sÕýfXX7Q0u"„W 3ean¤ûG™…ÖÑ—®YôæsIÅþܶY-̪u¨b-$rççJÒP©q®Nß´´ þ¾®?`•epݶ"mÁ./i,[f¨‰ò0×34a~ÕŽ4ϱÖ)þL j¨ˆ5¤ æÝßo¸šøih{Xpï«~@e~øC5ù¦òw]{g諸.M;Íã
+@¤5X;šâD¦ups™‚9HàÞÛí®vWK¹X[Üƾ¯Jt}Ø
+×IÂàP'1F÷Œ£{8îSüóÐÁub¼øt\®¶ –’QHÇBçÖ®ë[à¼C+ÝB6´;î°uußlGDÓÈ ;ÚF; íVzŽˆòÍõî2AȱGÍT;é®”CõŽô¾öà!Œ DX¯l»‘¶mVc»:Ýc Àüµ2ñÏmã~88ªBJ‘
+$Ó»NöCÝš­#‰§P©ïPXxÃ(%T}´ c
+ï(¹GÌ9ì°\_:1P&ÃdGÚo8‹he–}Û“Ý
+¿&r¡—^‚sÐ6ò»Â3ä‡V`ÈüTœ–dIðöw”ŠHÛl×YŸ~@uM J³ö`át?@ä÷ƒ°“Øô¼Hü Ó§—gˆ iÎ4ïø´*‚Ñ4^à3ÊY Ë+î9ø ¬m;0߀µ=S“õ`=ã_ÏTúÆã|$\¿9Ë¡Ìœ{ÆŸc~@rîF±úúÞ7À¬aßØÁ±{öÏDGª ÕI²‹ÕvÍ3ù`æfFµŠ!n‘'áV`Ä<52IæcÎõ+s·¢0‡™½<DE5uÇa¡BÀ#ÙŸ
+µÒ‹âiV|º7%€}âc#Tuu·0›Ñ“x6ÎœR1H¸w‚ÐÚýÀ…‹=Æî4 ´ªj·ÝZ¦/ êý[qHM¼Ù¹^f½;ퟟo*.ë§Ó1Âr€µx#£f 1ãüÀ·ÅÙoб‘spâ*ÖØðË>
+
+Üi;[r„Ç!rá… ÄzNïë¡ÀÈ
+ÕÀßµ&Ð-Q~jÔ¶»gîÙ‡kL ¹Û“Ëv»_>=÷н¯q¦¼ð¹zžóÑÒ@j§î HѬ¹„  ¿¼9(Ì@‰ÆÀÜkª”#p~zYÖmÏG-¼ÛXŒ< ˆí]Az¼œŠfŸˆÀ«±à®Vb ¶ï÷[?lL–!Ô®À1r•ƒ
+(ùà1ù) á‹èøioÙƒ(ÉP¤œÓð©Š?úë/ªþ< ÀoIÌèó¶ç¶‡“;MíY…Uõ[×9ÂÀFïÈ  k¸gqª Ð$Ú
+)l9wòPØ7Ÿê,Œª«Æ¯Äo:2_îçëܶE9 :ø®;H|Á‹šŽ}ÌnVíèh9Š‰Ñ€nÃñâÕߥNvqî0Èñ{Šæ N/ƒS•™\oÉû›ú÷?ºjp°Û[×/mùöR, W†æʤâ4Ô‰W;b˜Æ‹(`hI(Uç
+6Ò©ötï) í¸]Ò¹®k;.–(¹¶Åº¿ÂBòÎ ûŽSç¾(wíµ¿±3€3Š#ìºjġë»9KƒçóÁŸp³¯à2?Z²ø0Ó'ï!ß·¬6ÂrR’II¨`uõ˜ÚR(½ë÷%^AËÓ/¶<€ ®ù?x¹^Ôx%+7•IÚ˜E¯œ”ä kÿχÁM#uÄAèðk+ÛKáH÷®À9õúë½_UÄ‹¥|óã†X€Wb&|†OEïù:’7–ˆðëkÊuéëw52o&{à#Ð,JÖk|NG'»ç¿ À>ùoÐÁª4ÞÍM–
+endobj
+1176 0 obj
+2796
+endobj
+1174 0 obj <<
+/Type /Page
+/Contents 1175 0 R
+/Resources 1173 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+>> endobj
+1172 0 obj <<
+/D [1174 0 R /XYZ 72 786.278 null]
+>> endobj
+1168 0 obj <<
+/D [1174 0 R /XYZ 72 441.543 null]
+>> endobj
+1169 0 obj <<
+/D [1174 0 R /XYZ 72 391.929 null]
+>> endobj
+1170 0 obj <<
+/D [1174 0 R /XYZ 72 315.217 null]
+>> endobj
+1171 0 obj <<
+/D [1174 0 R /XYZ 72 279.152 null]
+>> endobj
+1173 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1181 0 obj <<
+/Length 1182 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕYKܸ¾;@òæ¶jÀ­•¨÷Þœ`g³I»ÀC6Äڔäñøק^”(uíL“Å"YdU}UE…wü…w™ºËòÔWY~Wß„wü÷þζþ 4挓ÈObì}…qo9÷Qâçiò5þ0õ£4âuÿúðæûû(º ¿Š»‡ñ<Ôÿñþ²ûïÃ?Þüø0OKü8I¾. ²ÅÎâ*»±ø>ÂÕ¿¿g0 eäøa·cå=œôn©Ü;ôÝ~Fî5þfÞ‡IcÓwBð·ðÚ¾¬uÍ“Lywÿ Sêr,™t*nt½0=îöð_kYð¨;mÊQ×>J4̨õAwͨÛg<ÊÝ^¤ß‡¨‹‚Î@ÌI앸\yÚ˜Þp³ê»ºÉ¡‹ûfž®ÊiÀó&‰×Œ<Ò
+º=èUýÔÖ«™nÊÖÐõ[:Q°:‹n`1^ùVÚ àphÙ{xG­Œàeào]žË#j;ýÍUQàŠFšO¨ø¹×tÃôçªÑÖpúð ‚ŸyÜè¡ŸL¥ß=EB‡ø¯;ŠP!0ù™;UI§ˆ¹.¿\Z¼uÖO¤¼á$WmkØÝòŒ¶?ÚÃòÂ<²Å
+À\Z²æ’ìOh½Òi1‰FÌt¶Çj2f6x$Ð"½y"¡nŒ®ÆÞ<ïòØ{Ùz¢ØcõÌ'ù¦
+—«ô¶
+6Ìd!´&h™HìÊ³Þ ë®â^“R4°íkæ•hsHSщ±Q÷6¬4‚JR­Ïà
+|˜Z©šÃ^ÇcÃ\
+V²]3s8Ÿ cLžy—àƒ |ÜQ- (ʘ¨¼§†œ?w…"d•µÛrœ§#*Ü(¡×wD¶ïÜZþ¹t
+Ó¹)ñ°Ø‡¨3ç˜ýp hÄÁ$ð€ƒÌ9MÓÍÙ-à(r™”.ãu½þâó7Ó|Ä
+ýkN"f–)oƉgIˆ.¥Xfï  Dó|a‹‚® šö\Îò Í@ 2~Yû(.Št-Q6úŒ« 4´Xˆ[$ðµe9NÒUíTkÉ>L¥drcci 1¸/Ió™Íh§%á÷é$9
+¬øop%ÃÉøqxÙ’9(ßcÙÏù»“˜B/ß^.’$|Çü˜Š¿’ä¯âELyŽ>6ìqœ ìǹë ÄCªe–Gþ’ÀJÂt „7Œb ‘¼±•@ck%@ËlÁ4¹C¶
+—åÊiÀ4þŠâS¾'®
+¯† Åïn¢¢ “
+•d+>àJ­72•8ò3•
+[/­OÍ eß>Îý P«Íðù8ÁT™,8N
+6—²‡Ì±ˆÒÕ‰^®GâÀ‡†¼¯»a1Ñ‚waÁ»°à]ÈëÇûÆs´ Y„L;)Q‘´ >ó¿ð2^ŠmxÁÏ^Ðøö¢2’yeøzè‹nÇø?îíwcÜšc]&߯HEØ•H$3{ù`<¿È=Êbó `šNô^Æïxl£©‚ñv-˜«Ù+$.yæeÃ×EØ whl®Ÿ—o䈹k”Ø]?ÙÓë´¼R/¸
+endobj
+1182 0 obj
+2893
+endobj
+1180 0 obj <<
+/Type /Page
+/Contents 1181 0 R
+/Resources 1179 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+>> endobj
+1178 0 obj <<
+/D [1180 0 R /XYZ 72 786.278 null]
+>> endobj
+257 0 obj <<
+/D [1180 0 R /XYZ 72 604.41 null]
+>> endobj
+261 0 obj <<
+/D [1180 0 R /XYZ 72 501.313 null]
+>> endobj
+1179 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F37 380 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1186 0 obj <<
+/Length 1187 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚZ[oÛ8~ïþ ¿ÕÔ‘ÔõaÒ6²Óm‹Ô³À`vPÈ’œhkK]šfпçFݬ´ÝE€˜")òð\¾s¡ÔÊ…?µ
+õ*ŒG‡Ñ*=>S+þû´²­_ gz¾q|Ÿ¾3qcgnŒïDó_nŸý|­ƒ•rØWÛ=ÍÝf¿¯}G…Ž¾Ø(å«õõE¬»2m‹ªl.6&2ë}UsãC·kò¶-Ê»‹?¶ÿøùZù“Õ6Úuüا5·÷yÃ[Z¯n¨u{¡£õÃ…×wP;ÁÞÇF¦TüNµk“¢Ä¶ h¨áÍóŒgì«òBÇ°& îëêÈ­¤äßüKÑ¥ôôoWy‡Ü¹Øxž‹´ñ]“×<žòk&ú®‚Šû3¡´}š6?áÙñ´
+YÓiwtXÝÈhéõÃ}‘âÀ=ÔùŸ]Qç}J2 ï<ùþ:ËÓúñÔu^ÕwIYüEGð °¡Ìøͼ´sy Ús‹ÇÂ}Ö`7– h‘sòñÐZ†Èn çÃ`}_ÜÝsëÆåß‹žà“ϲƒ^âL&žÁóCÑÞW]Ë“îIÜŸY00ɾô©¬æÙ¸$†¶÷2Ï_'»‹ tÉ:–vËAS ˆÖ=ÐÞÈ[ƒºžŸq¤/ƳÊDü&UÖáH•ÃÐ â@¬£U‡b· ïFƒÉ™tª‰üÏE†òŘ@c&ÁÏ®¶ƒúzµ‰ŒÅêi‹~ÚÊ•rT¤ غÃëNïPr_û럶ê#›ðuU¶(tî/Ê–Ø}óú?ŒÞ;&Í'âÓJ‰ëPM8Û•MqW¢]NÛ’»æŬóP”ùC‘µ÷/D4]èP¡ì±uL¾ìUú©)þÊÿ—÷~Úu{|‡4[¸\M/vB?D:&ŽVu¾Ú?£q" È××+9J›¥qXÁsCQE!O@Øu¼À¬ð…€%LR2fAJ× 9±öd¥eÏ1[ÔÀ‡÷úyýY碢…*X tcíMà(å-œÔÖ M
+}@S8Á‰ö¡S¢•E† ‡_p1‡¬¸h"05ìíæ}(V!ä›Ê 9M«zx‡ÉcˆÃI󶇛,ß'ñK\~Émù¦ª¿r S
+³Å±HE?\ÎÍ!wî–¢j9‘eIö¹8-úå(Ïd“çGØIöØ–U_Ökݓ˃äAê"®’vncûÝíóÞHfVioä}ω Ċײ7 U|æ®ßݾºúx{uõöÕ»×W k+:ž¯{;e@õ]Hû§•˜IZ`Ö‡<É(œ÷$1ðD1X"‹7‘9S-èb†¥-=°ÈØÚ? KBʼnƒõ+6ás“(;ETAÈ`gˆ»sÑ5§h–æNKÁ9Ôœ¼AC^•Y8ÊþK‚}rFOKS…X”ùž0µöaËSÂôãô™0?üróþÛ²TN¨ƒ‘«joöËfá÷1ÁQJ† ÜÃç™h‰ˆ×S(~ú@®{´ÀIn{¿ýøòæíåíoOj§y/¢bü캿Q@ !¥³Ðu,¾¡Kâ8¿¼µ+Ê„Ê3^ e˜uõîšM~wÄÜ! L:ZÌ%kox ‹ž*Ð(çIŠZçRá =Y>Ô}5«Øâã`‚-@qä— ›
+v
+éÑÀ³ßLÓ®ægT=œÃÇ–åÍÒG;Ê ßµ¾éí¯oÞ,¥n«q¾Œû°^ yhÉ œ¤çøq4dÇ@wY-‰9‚pÛŸm@O-_;áo"'KN ©S]$È]Ü|vÑ‚*à„³‹xdñm¥æ±à ¢çѶì>uS’ñãï}`"ȇ°6@È¡J2¼X8_>
+endobj
+1187 0 obj
+3843
+endobj
+1185 0 obj <<
+/Type /Page
+/Contents 1186 0 R
+/Resources 1184 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+>> endobj
+1183 0 obj <<
+/D [1185 0 R /XYZ 72 786.278 null]
+>> endobj
+265 0 obj <<
+/D [1185 0 R /XYZ 72 761.372 null]
+>> endobj
+1184 0 obj <<
+/Font << /F26 391 0 R /F15 393 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1191 0 obj <<
+/Length 1192 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÍZKsä¶ÎyÅT.¡\;0|•µä(Ù]»lÙ—8¥¢f0ÖÎ
+V”ò×Ó€hµNUªR:
+üα¼PYô|±Nr•‡®áÑýÅZå‘åIg{¨¨ªy¡ßWvC½é«¦ë<Ï¢ëj'®Ö*MAN /‰r+診<ž/ò$zºH.
+..òÓÇ¿¿zws}sõMèq,òøìZw -SºF†×À ]CË,ªv¼¯ß[lðå}Ùv}[Õ¸–D[ûK,“ºÂÛñÊ®iƒ€á¨%Q7ýÖîü& ­Ý¶M3¶|6¼ÀÏ+ÉO‰Pz)¿CCJÙ”½Ý‚¼“$‰nIZ눠\wÕÖ¶vËë}ÿ£BqSÉk»²/<´mÛ´d²+™’&èdC_¢
+Î4·Û´•ãiË;Jž¹_/³@“n¿¯:f*÷ëN0ªë`C^g
+NÒ ÷`bRQ!Læ÷ÍéŸÓ\'Ê€búqâé¾6FÈ\N,®·Uk7}Ó>³H¢¨2º ¶äýÀÆL¤s&UÄ•„hÃJ&ôÅZJ#£ë‹"†¶@˜X(Ö\“Uà ‰~$Áôè
+° ,6Ÿ°Ë°Q7¡$ •ç'0¸‚AßH£Çé$€ÃØ®ˆçWرr’$ƒ¤/"ŸÁ¢ŸÐþJJ²™C#°jëfxØsf=Ú#')ØÀé6t¸Ø^§4ŸžsèeF¤*ÿMHbi¢¦[}îHgY*@ó?¡AÒ5'Ð…˜n¨ ˆiÎ*RO¨p[Qr(áê¹ ‚V X™¥zn>þ|ùþæ›»ëï>ÞMb‰(2=¿Žô0†8ÝMš‘©¿¶›huzCSn­»G¥B$ÒB©¥H– ùÃ凫۫`Í
+ËK6Æ)é]#MÂy+NÀæð Mй_¯` 9JSÌ*g.ÇÙ  D²¤ø­9­{á½eÞoå„·`:7ºcÙûZ²‡V§åŽK= ¹ƒ$5g¦erô­T6X`tí:p!l¨n‹BIå{o9vÞ”ŽÞ5ÇGd,jºŠT”Áš¯ß»WlÜ×Mb
+?ôí°qQÞk1MR?Þ½y´sMžµH]zîÍ×[»(žÑ¼­·£åh™GÝ3áyN@Í¡£0Up˜‚ÇxÛŠ"®œšÄ0„Š<”)žùNùèÎÀ.(íw¼eě̼SQS[ÎÁÔVŠp:¼qO ŽN|…ès[
+ÏN¾›ŽÿÂAxi²]žŠ€±ïaà~Ì¿çZ!±£ÖâÄÐORãSŒÉ£ŽÈd¦p«p¹fܽ] ºì¹øŒLÐä#lpo‡ÛÀZI‘}à—²ŒV —N'3Jã9W*
+&çËŒmv­—Í tu/l,²gß{Çš~7(IŠY|ã590k×äÀ!ÒJÀÞÆ$ÁË¥_=2=þ#{"ÏSîç¦oß´ø8ôþüËq¶/ç_†§·Óå—óÀÕÆ–ÚŠaÆÁÑBy°áZgE€ÿ9™ÁÍa
+ª4 >ù)f´JUœ¸_ç÷û›©²›“1àÂEâ¶pܺ=ÔBÿOr¯^¶8•ç°ƒC`ˬ‰m5RôÐZ‡ÄJ·±¶½m˾œ½;ÆGß|ò ²ä=-î8ÐY×Sºõ½ª)E0î~¡!¤U"Š´øoBLá•~Pÿühñ¿6¨ëãLÉu{f2þ×)‹1~_©Ô¯ý ‘‚è ±™òù.H–žž PʼüOJÿ$TZbendstream
+endobj
+1192 0 obj
+3150
+endobj
+1190 0 obj <<
+/Type /Page
+/Contents 1191 0 R
+/Resources 1189 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+>> endobj
+1188 0 obj <<
+/D [1190 0 R /XYZ 72 786.278 null]
+>> endobj
+269 0 obj <<
+/D [1190 0 R /XYZ 72 678.527 null]
+>> endobj
+273 0 obj <<
+/D [1190 0 R /XYZ 72 349.17 null]
+>> endobj
+277 0 obj <<
+/D [1190 0 R /XYZ 72 285.814 null]
+>> endobj
+1189 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F26 391 0 R /F33 497 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1196 0 obj <<
+/Length 1197 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZKoÜȾûW r h¸ì›LNŠ×Êzƒ];ÝâÀ fz4ÌrH…ä¬,AþzêÑÍáK– 9: »»š]U]õÕƒ›þÄÆÊÍÒXÚl³;½þûyžþsL©ŠÆÑ „[­ÒX¥›­2q–$ÿýí«on¤Ýˆ$Γ|s{ ÒÛý_¢²î_o4Ñ®9=ìŽEû»×½ý·˧Dõùô¡t;×­QÝŠOoÞÿðáÓ‡woß¼eúß<Œ¨·BÄÚhÞchË?™,ì|óÝõOŸÞýxóž6|s#̈㭉-ˆ°•2Öš·çZwŤáTkP,K[y¥IbkmÐD÷z«‰ú£Ã RïÝçðÈ¿~ÍD®Þ5¯·2‹öe}S*úå5 Ý®oZ§Qs˜ìÑÄíiº²wL´ÃMÀ\±ë]¯‰"Gyý¯éG'"Îs;ÖoǺ]ù1¶m•PѱÁSq £SQãè‰G|_ø¬£¢u<Ùº¿ŸËÖíq$¢¾áÙ»sY…©£§œ‹ˆ§ÍDë´ÑíÑ/öDz¥—$‘«ÜÉ/6êy­ìø¥ÅŠ­á)6jJâÞ ”©fÖàDâ߶-‚p0Ä!2šãW¸ ¥âTæ^çS³^êÝj²j&¾âM‡¦&±ÏEÅÓ•«ïû#>{é`ý¾dÃñ,ß1¿+L¥"άù
+C0Ô –¤ÑÛ‚¯QK IÔT£ø:àAéècb´b¥TÔ=ðJîXß, ^hYv¼­©ßS5=O¡ßà \sÇO|%9ˆ˜©hÍà%(?ùjÝgÚÒ³±whë5™«’#…¾z{{ÁH@‘1RÈ4™}SŸÇY€3‘IÆãç¶zp{w` ëúö¼ëWìù47È9ôÒý|œ÷®ê‹Ï/“<­À±'œá1©ýE,Nië;8B§ @
+ÖlFËXš
+ˆóÝ®-ï.Ùd{ÿÁ=2Íá\ÓŽŽç½Bà‰¤ÌŽÃDA¼ã.éí+Yb;ÎÍ°¶úŒÔgOô2úXÙÓ‡cbZŠ9 ¹-rêžx®uP§Ô>%§ÒÉÈòµ`lÞ;n#*>hNày>£ô9®<4m UnáSPŸº²èd¨­óP[S vE. u¨í ŸÛÖqbÆ+“¼"æÊk:…ù¨®V32 uT0囦îß}ûL•„
+•0j«8ì)ˆ¥ÔŠX7kynœËà1(Waö
+ЛæB7ˆ‰ý(e©S)Öø¾0mӢŠ˜AxE[€p"øjIŽY$ð¡ 2Xì’PÇÛñù£ÒH>»ààòÙKŸyr„óˆšVÂ/šZONßrúŽ h}àƒÀgP·ZQÔŠÓå•ÖFsn;wÅ=,jø~¿ MLç݇
+MŒD5ÿú€ž `Ëu&}î˜tŒ0è¿ŸQªÞVú=_3ª°,0‘ÿݧVù2£È' ,¥œ5¦6&ÜàW…qƒD‡ êy×´Èvd$}€
+KµÒ±ÑËŽ À—CEU½ÔÒ–. È@eΙœXý¿¢?]û4¢gqèÊkÆϱÓøOÑ)ý?:tÒøÒ¾ôŸtìb$_†1kçf%•Œ%5žž9áßh€_Iendstream
+endobj
+1197 0 obj
+2764
+endobj
+1195 0 obj <<
+/Type /Page
+/Contents 1196 0 R
+/Resources 1194 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+>> endobj
+1193 0 obj <<
+/D [1195 0 R /XYZ 72 786.278 null]
+>> endobj
+281 0 obj <<
+/D [1195 0 R /XYZ 72 313.424 null]
+>> endobj
+1194 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R /F26 391 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1201 0 obj <<
+/Length 1202 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZYoäÆÎó¾ä/è-T aØÙì—
+/7±‚›=/ÖÖWP°:(: ŠR`¹¼Ø䔥1MÞõMë8a:uœ:¢¨î¾èËþwèwýú®Y² ìÒ± vY—ñ€¬i2dþ7d-Éø³Â¦þ€ÿ?À´&ðä?÷YÉÅ®¦]E³í ǵÁÇ&ÏxU%Ü WQðkÞÔÀ%£™KØ“÷…&oû²ãEËuŸ.ã8ÈÊbÇÃ?ô×W5ÿžlÆ.·­R‚Ýen4:Ï«é^bÚʾî+XWé„éTB´ ‘~Ž€\q¥&PíÚ³2Aê4víÉI‰;ø˲“:M‚›Š«·Y‹â®mP£$j8]×’7Mݬ!*ñ¾]®“Á¼Ê€i§¼Bc7þV¼Jªze J'¤ëçhóŽ÷"ç÷ã*
+å\Ÿ²ã±©M‘‘ÑE¨ÏC#’ÐÂyL‡Ü’u
+°ã^]^–\ÊHiP[?ò˜Œ¥«î;&e4p¤nÕ=,!aok6HAQy¶½®«îæ˦)ÚAF
+0qÍ‘ˆ­à‚ÛMÆS)ç8íiVa{»ü‡HèªðûΖB“£[Zh¥‡©xM?˜…"ª5°ºp Ü’LÂg_øãç>o
+’$Þ·ÈI ûÅ«ÛÑÍÄ¡݈H…V«ó^鼧"©dFjÆóhà#œZ,c”Ö›ö¦ÞTYù6÷CGÜ4ô᣹â-1À—t~@½Õ6àœg:BeÓ‹&¿Ø¿
+Œ H-nV$+tnT¨ ¼IB!Ööé÷óÔU°¡B¤Š›å(ý)~þ)öø£è69Wy˜ AŸ‡?x´ßu i¯4úŒÑ— wrPÉsV_‰0ÑÞ5 E¤õ#^È“ãÔä-7REº……2ëH±šó+T4;¶ƒ•+‹-;4Òk ¼JQ6&z]¸ýcuö j‹¥›‚z¶èÚ»¦wFkêýI—¹Îãô óÝPhÚܵ—P<Â5 §áŒe<:†SU¥oÆâ:³þe‹.BÄÁ¡øx‡öM¯ÐN,V„ía’~†ÿ…¹é@•Pä˜VpArÿ_Kø¡¢HÁE„‰ï˜lÀxÌdÄ
+pæöÃVXèÑ{PˆX v´u¶giù—Ê:Û!l щ m,O]¢¶vœ,
+ÓÏ}Ñ ‰Æ/tÈØmüdIµ t†u tfG`œÿO¸}žÁ§ƒ¨82+KRNlÀý;êOüùà¸Ï¸ƒr£ÿužŽüå·ß¼}ÿòÏ×ïÞß¼yý-;ƒßCýŸòî%0EûK€âÿObC¥ø4®æ_’†&¶Ïñ%*ŒØÝþoø­ãIlÐ%ã'Ðk‰0ô$=ðÀøäY¢ºïË…W«
+|Cý¡ËŠŠ'×)€«ç ÿô> LWs˜>˜{†êÊÛé…Á'
+WŒÂU”¸½ª(žž$6¸õ[
+‹9ÊÚ¨"· ;
+OÛ’ŠDéDE–gœ»co&Ž]³ù#Û¿ïÝ1GÓløkéå¡XÔìÏ©ýÇp——]öËzžEÄñ$@9‰Ò•K³ñòÌä¥sòžÁÆÜSô¶2e:ñr@ßZ.‚éÌ4«¤ô˜È8uX;Éj)9
+å|Ç… #êf7\€ÔÌÊlpŸuá¼í!?Ôd9 ¹Ì³ŸÓ‡´"J“KõÁœßå«é³ÕàlS
+ȧb—/ÁK›¨#+‹îRE­í)
+‰Ñ·u6ýOÈ„}ñpƒWÞO%ĆÚÂõþ>ìß‘«ø=…³Õšñ„Âð{±xŠÁ—øè1e ‘AéTPʘ(£^Î;¤’ïªiº3ï2°h{<öZ‚„1€(ú©ôl‚ö1GFþ¢$ùØ©Žåð”BN²J0#F´€Uù¢[GÖ±àLMŒ¤àˆÞ}ùÜÖ¦í Ž”q`íV¨Zq¸‰_îí¿)s~챺“èÑ[^‘,NL¸3qãÇ‚£‡Y§W Æ]5$gúÎÚ¬]üHcf'tö£á¬ìÒ.A¤`åKi×y2ƒªÅx%CNŒ7²¡õ‡;\çü+%þ(ºjàŠUœkÐ};Ú¸¿öyóðLç($Z5IÊâ‚‹¤,Ór]bž 3£è1y(ƒÓKܲ~w)R€gúIž¼²¸ƒôq¶
+gŽ¦|á‰^¤ŠóR!y ½¼àÏI@-É
+ØÕtˆˆâÉköojä.I6²¸}Œ¿`Ÿ­ñôÓ“X´®ˆ‡Z¸7R{¦Që~‰OLäÓr*’Ù³˜Úí¿
+ÞÔ>8{£œódž*ð—qìææ,\¹}à ûT&XJpùdí ÌI8,ÁïIùH®ùì’¡¥endstream
+endobj
+1202 0 obj
+3571
+endobj
+1200 0 obj <<
+/Type /Page
+/Contents 1201 0 R
+/Resources 1199 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1177 0 R
+/Annots [ 1203 0 R ]
+>> endobj
+1203 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [306.514 294.732 320.454 305.641]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.8) >>
+>> endobj
+1198 0 obj <<
+/D [1200 0 R /XYZ 72 786.278 null]
+>> endobj
+1199 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1209 0 obj <<
+/Length 1210 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ­Z[oä¶~ϯ0òRð("Eê’>9Æn²m6l\´@·XÈ3ºi*jÖë"@þzÏMI#Çøa(òˆ<<×ïY]Dð§.R}‘fI¨Óìb½ÿJ]ðߧ‹~ôW˜cJcãÐ|z†pÕS®bf‰Eúïn¿úæµN.TæQ~q»%ÚÛÍ?ª,Œ/WJYÜ^æIе?­«/ã8è.Wq?õ¦*ë{|2A³åß›f€‘_vŽ)ovE[¬;×z|Ö¼È ó®åÑ«/«}ÙÔþò_·ùæµ²¾V:
+mn‰»k_npc•Û¶Ùó¨ÛõSpP?UÈhM<élàI¥ÁúR§AÏNÙ ¬·M»/:à‚'öÅ%¼ôÈ›ÜÑrJ±^;ï^Cåð"3­ÓÓq’‡yœ‹H;U•w WÓY˜Ä‰]-l“„V¥Ïlë0ÊúMÖq*ÓP ­ª>§ÅâØ5xÃuQU¿’L“€*×¹êŸmÐô­ó ãi<”ÝŽG­ó,Q‡Ò¦WùEE Étû«H>É;^ŸÈÝó\¹%Ž£ «%*/M‚‘2õ-'«(³«™j× ªøyÁßüú&¼\Ù4[S“Éûòó¥(4MÁ$y¶¬}WÔkw…f™ ^?z^w_Š}Y;9g'ooO£ áv«…[½…ÓA
+Æ)W´´ƒ°•®îÊÙZ¸Ò-Í%a”€›†±Ì¾fÕÅiö+ÿè;·÷ _“¤¤dg¤)TDœuÓñ î[¾UÓè»H]ðâÆ‘m”l `îtµsÒ ÍÜñëMéÀ|Ë¥@„v  ¤ Ä?2èÅã| nóÈ<= >
+Ï®Á#L`˱˜èNq¢Áwþs,[Ò<݉ÊDˉyª(m/‹t,Q|)AzWmyË5DÑ®=‚ƒmx‘M+³@‹ó@H<I؃彃PÀÃFö‡³–¤œ›PåZ„÷AŃdÝ-ˆÙDaÔÆ•+Ñ2²,1Žó‡¶Üƒ°?£g9tàLo…4G ÀŸ±ßåAU~"Z4Û( OâòømÝÌRÜù>äG<xã›!ÂÔ
+³‘A®»{ÐÎ…ôxsº“œ¥ÔUj3ºÑo|W‚šQ±ýüõ×¼ÛCYU"HÀY¤'ä‡g çü[xù埻ª¨?á0›Ypƒl·ŽéP$8U7L<3nõ¤/%
+|}H,MòîÝ) “TM¤qýú- Ðò]9“¢á×!š`ÓDµ¸w„ØÀ媪Acy`
+ƒEÁøÐ’É~È)L! —‚‘asìø•2xkˆÉÙ öaÀéóü%öažL 0Æ}¾©1a¤zSº^Ø \1 3e¦8á‚ó«Ðd½ýþ{ËÓ!FÜW‡9¤å}m*û{rž5)ÍfÁ±+«ò¿ŽÙ¹’¬èÁNõ`%ôà
+/}
+ÉlmŸëLÀn`ê£T4‹âìï*œŸA(²Ï7>0Ñ™çÝ“!Ç„VgBT1
+l>a‚20 ĉ‰-üI¨jr+¡`'ô3}ãW¤ë+4$!s£—Ú’0 &T9®U\I®©*¢Žÿ
+¬"Ðõ¢ú$³²<ú)Šˆð{þÍT/í;ë†åêUŸU`кîØ2R}Ž‘ã[Ù¸¨|sÞWäP•Ò"aK ŠŽÔÇí¥Š*“Y 0£ÖÖðQÛÈGí›?d¾„Ý\ÑýÞ7g~ùºBåÝïúj£ÿòO(1“¥ %Fz^b¤Üy‡ß‡rÃß[¡‘ϲÔâÀž'„È{{¡Ü“šzÒ¶ôŽJ$xÛøn Þìû/f'Kú€Ë½ùõgí¯¡í`¨¬¤¨àE2 ›ž¨ÙzÇmµ®øtyj@¬Y±Cîˆm:þbiG-VÌjd1 jnÀÂÌiU°95`Ï-!W Њ½†Ñå¦è
+j堵¬̥‚=¡OÉÝ8QT£ˆ ‹€ã8çeX:ÁIŒaiºÿò„OÜ"º‚¦¦xj‹ ßlÝÊn9ÁT)ºòLj¬™y/}úÂcâŠæÓœ
++X9Ë·Úœ•FðʬÚÔZþ-×@ÑÞý»ß¥u[¨¡ê5ºE
+Áøq{pBo*ϳRb§ pŠ?Ą̃¦ÂGYøËá1å1ñÊ2
+endobj
+1210 0 obj
+3319
+endobj
+1208 0 obj <<
+/Type /Page
+/Contents 1209 0 R
+/Resources 1207 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+>> endobj
+1206 0 obj <<
+/D [1208 0 R /XYZ 72 786.278 null]
+>> endobj
+285 0 obj <<
+/D [1208 0 R /XYZ 72 761.372 null]
+>> endobj
+1204 0 obj <<
+/D [1208 0 R /XYZ 72 463.518 null]
+>> endobj
+1205 0 obj <<
+/D [1208 0 R /XYZ 72 371.135 null]
+>> endobj
+289 0 obj <<
+/D [1208 0 R /XYZ 72 195.501 null]
+>> endobj
+1207 0 obj <<
+/Font << /F26 391 0 R /F15 393 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1215 0 obj <<
+/Length 1216 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝÛnÜÆõ=Ú_ú.à¥93¼MÞTCjÜFv`«E‹¦(îH"Ì%·$׶òõ=·áeE[yLÁæ\ÎÌœ9÷sfÕYê,ÓgYž†:ËÏÊý7êŒÿ>œùÖßaŒ!ãÄ„IŒ½g
+mdÏ®ïæz÷ŸàO›ÿ^ÿ훋ëqYÆIò<6Ï6WÉÊæ×n³5&šbO-´wøÍ‚ÁO•íþ°Ùê<hûj rý‡¢+ÊÁu öPôÜZþÞ¢,M\S°¶ÁÎíx™.‹c0qTÏ”í±Þ Zí°€æÓ‹²t}eà"[…d·t¡Ðî>U½ 7Û,6Áå&ƒc‡£û¶s/6À¤ ¶…¯ÑAÕl
+¢'×7 PMðiSž:hq»øŸëºjçHøcVø#²ÌÉÍ ày×µû“½Î/¯¸°5ñDö
+ó4ù œ”u§ ÇÄclWÚ[©$ øÄ$^8 à$ÊØ–ƒ$<•3¥t˜#T]Ý®ˆ”‰C£= +ÄßèW{”±®sµû¸IÒ …`æF šª… å€!N$v©úr†÷ H‚­Š³P%fÍ+ ñ’ÉÍA/E_ÃÄEqÛLÆ('£Pu 5™´
+!Á@…±UÏR…™‰¨¯öxÓc=k}ýȈP<€gñ5øÎ&JB­“Å)^È2‘¬,}J9˜«I& @È·àY¯ê((`>¿'I^Ô‰G¦äyPøu‡C]•…øÂ,ñSî³Èn7ÈÙ?nH”‡÷eWŠÍÉšufã
+âÚ6$NQê)
+4;RÏuù©wrÛ}aM`ô°lÈÑšž¿Ì Xä5«¯n1D -ñΆOâÀY­ É-8×QÃäh/ý¡(å$æ|{l¼:zBêóÊÝ$&‡S
+þø]¹ÇŽvœ$!mÃÞ\¡K×T±\ê¶àì a+öãf"”Ò~Û[6#ÚJMhg€6#&gU#PÚ&øÙul‡\Oô´ì{V­%ã—虞$´}¹NGÃ$1¾Äô-Ìî¼LHRSÊ:Öc
+g$pZÏ2ä(ÃعœØl¦OŒæÂù¢’Ž{ŸØ_b,‚›{{‰C‹àñ
+}2úº‘¹nG~W¶<7o‘-Ÿ¤ËŸcS¡}&þC8á•f¼iƒžfˆaÆäÒÁè<åϘÜ×í-¦ûØæ»wUŠ¿Yæqî3IuH
+{ŒIg·5à+[6Ð'Ï HøFœ+?jd‚d† î¨Îc´wª0,öüL²
+ Ÿ ÞxwÊÝÎÉQ³ìY“ióYÁÉE ¸ù\égÂq į·õò"²GY˜«ç¤züŒØCÄ‘fÄk$ p€èJRÁ’¡'ŸÎ@LœY_ÆQ¼? P$F\¶½e˜ME
+&ö\¶]éq4/¬EÄ“Fv(×
+l°ºk Úƒ£ÅæÌm­0b-D‰ü%
+¤äy†?³ ÿ*‰ 6аbš1z»b(n‹^æŠ7„ÞÙÁâÛcUcÙ0…è䵬$99ª¥?½%‘è"5þˆxtûªï91…­äît
+endobj
+1216 0 obj
+3340
+endobj
+1214 0 obj <<
+/Type /Page
+/Contents 1215 0 R
+/Resources 1213 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+>> endobj
+1212 0 obj <<
+/D [1214 0 R /XYZ 72 786.278 null]
+>> endobj
+293 0 obj <<
+/D [1214 0 R /XYZ 72 552.504 null]
+>> endobj
+297 0 obj <<
+/D [1214 0 R /XYZ 72 353.656 null]
+>> endobj
+1213 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R /F27 394 0 R /F37 380 0 R /F26 391 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1220 0 obj <<
+/Length 1221 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZYoÜÈ~ß—ü!Oàá’ÝÍkÐîÊ»ÞulÞ²@‘=BrÂÃZ'>u5‡ÔPrò(°ú¨¾«¾úª8áE
+†S½eñºmîüËѱwÕ´ÃÞÊ~:›÷­¬
+¶š× ‚M~°\ÚµuÝâÎzlHa,µ?!þ
+Sߤé´Î8Tu¿¶ŒöÁ^Dì˜x¢ûËÔêΑBб
+n3 ¼cgáòFB Ñ-6ÍP1¨Á)–O0”…ç¸åØ‘ª*x‚cÞ¡•VdˆP¬in[3›”Wk~@m¼2?€”¾Ø^<;Øô`*õSPZœ"òÃÌW—0{z.µòòaª ½Ÿlð‹
+ˆuã]#‚­+(‹
+ü(ã?ò0[GédGÕPMN'ÊÖá;òN$ÀxmÇCJnaÛŒRÆÑžËÞÔJsGÕü(V—ËÌî~u”ÀýÒ ¡T€m ÝXÈq <ã¹þw
+<ç>ïr ² rÒrM¥Ú'6åü¥Ý­±œÀœÔ+!RJûJg‹KÉëaߎ
+ ü·”Hƒ/;&<ÊØåJl¤ü´ØÞï…DQm<J|óý(ýÕŽLµ:…=üL¼óÇ´o•ïFêÐœÏYï©FTHøqSS€ýxÛÕ0Œ³Î5âÙ¦­º`-ÈÖ®U8rF€YC1-‚Z“ôw~®JËLåiMb? Õ‹AÑíß?\‡7Wß¿ÿ¸]EQå‘š¡¨uâ¨Ø£ùMâ›À)q~ QŽ£ åy‹ßìÆF¨šâêÉfѬ…uBÔ òR´cp±¦€6!_Zõ¯iº-tôSH‚êd`>bI1e 08$X„ŽÍ Y.të¼ LN^ßÛW¬Ѐñe!>`‹˜ë ’F Æ褮ú&ƒ•‡‚°>šñ„}=m‡‡0O¾–ˆjdiŒ™Bilv%û€ø`m‡¤ ÖbZ±šß!¶×v:¾‰€7¼Ù¹Ù*‘u°Å±ìy$Ç °LÎu{7¨V"6
+^Å&pÎÏâÖ
++::¯ÝýȪÇ52K˜¬¹n{rÃPCÆ‹{’)ïºw™§Š®‡ØÎa|Ãj‰ ÃÁ»#×Ñ<ŽM]ÝãyìtËq˜yïwÜ ‘eד¨vú›(O’…Nÿy.¯X= ð‡½';ÝVØ‚²eꪎ
+™7s}½
+-òp,].U~àCC¦SÄáÞž'.TÞ 6 Xn›±óþ•~}&; A³ñõÙ´‰Ÿ&éÓÞêéùÐY¬ìà…Áµéóˆ]¯9"ãÇA4¥Öj òçSÂD±v‰µÍ“!=ø_™PûHA3UC¸dLâøùD¥É€vl;.Z';é&ƒ(ËÍ_5©³‰uìû`9¸à¶v·FµuèÇ&>?õâ8‹S£Q¦”X©:žy%!!iRŒ_¥j¡Éýwƒ(ßCE‘-¨cp ª] ¦PÈ k¸ ºÑý±~ºÜ9O $ìïƒö}qš~7r¶ Ë­ŒÚþœ–M“)J^N2âÍ»¿]½}óãÍë÷ï¶o~\ÍÊ!“žS³0nA„K)‰Ø¬@4Îò
+Pƒéáoä¸@´@2¨.ã#bV‘Îäc|àÒXŒZäͤ)n‡sMA;ÐÊ}À’c€ÈJM)”†RÎBáQ¬†@€ýSÔöŠë•ŒÊé”_¸Rää”>MÖŠNI=Rìh{Ž%`*ðèßϼèB?!ª–– `p*Îa\¸s¤ÈîÄ >P„6åØyÞžìP´øî±ÚÁ–LæÇ
+mW®Ç(E9;Ì.<â˜K][  b•¤ú¥¼¥Nõ¸u–^"„/Œ­ÆÀßœÿÈÉÇp6;fO„ÃÝ°;ʾUÂfúzC…ÿÜžº¼¹³OôÍpÛù·…}¿ù‘9:GÈO^©ÈGÂ1ç¯ Ñ:X@tìå’ÆZq?
+E DSf‹¥³ÅÌó‹¥Àv²D¦úóÚZÊ•ûŠ3é¥ÜÈ(K¬rŠøUæŽÑ´7pmÃêGÊHY2±Š'UüåÀÑ“Û.ï$‡î¶€Œç‚oäÞ¥©†êä
+0Bu„<‘¦]b?×ã¥ÎŒ¦XôJéíù­¡âoXŠTé¥ñ›W¯þr½½^Íákã« ™S÷Õ#/þÕ
+
+ŒŸ ík—Ò 0舔÷‹,»4_ìõôãùLÌáÜÍ«µtrùq<iÖÍmSäÃOõ—ã¾&íˆyMüy†dÚ™äÑ™ šÀ6ô571L¿1h%
+endobj
+1221 0 obj
+3199
+endobj
+1219 0 obj <<
+/Type /Page
+/Contents 1220 0 R
+/Resources 1218 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+/Annots [ 1222 0 R ]
+>> endobj
+1222 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [355.575 346.298 383.453 357.207]
+/Subtype /Link
+/A << /S /GoTo /D (subsubsection.5.14.3) >>
+>> endobj
+1217 0 obj <<
+/D [1219 0 R /XYZ 72 786.278 null]
+>> endobj
+301 0 obj <<
+/D [1219 0 R /XYZ 72 629.216 null]
+>> endobj
+305 0 obj <<
+/D [1219 0 R /XYZ 72 331.033 null]
+>> endobj
+1218 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F33 497 0 R /F26 391 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1226 0 obj <<
+/Length 1227 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝZ[sÛ¸~ÏKÿ‚ßJwVXâF}s»ë6±3±Òv¦íxh‰²8‘H•¤6ëýñ=€H™¶“ÇìxÆ@\¿ó ÄORøã'¹8ÉMÆDnNÛ7ü„þ>Ÿ„ÒßAF-•–L+|{¥á,´œIÍL¦_kÏ3&3IýþeþæÇK)OxÊljOæ+×f¾üwò‡ÓÿÎÿöæb?ÓLiýúl°™t.ò‰ÎçüâãÇ»›w×7ó»ß_ÍçoqÄ/¹|À…eÊXÿÙRrÿùŸOgJæÉY}:“"MšÝéLäIÙ}ÕxY¿.z(q›|9&):ó¤n¼´Øl¬€ZørIƒK;ÜÂ~ráw½©,ô‹¥j[NÌY[¦¥ñ_­iÜ4¹§–5~Ge30ÚŒãÙY׶-ÿ·/»¾\2\Læë
+?NSXX۴еɢÙo–X4оÛoú°I–¬Bƒò—b»Û”^\­HZÔþ¹Ûmª…ß&ì¤o«²£º¾¡Ñº²§BAòºüBï÷U¿-vnéhæ»b¹¬êh%yòó©Ö°»û_eR¬ú²¥ma677a›z¾©î'öR
+P1ÚKè÷Ò¸½t¯U]õU±©~Å;B-lºëa¦,˸úntãìÝ»›ó»÷ï'6ÅX–æÙP'dÐ P#ì
+›<N
+ýfW*BgA—ܾ‡ h¿;VìÃ÷_uù™†Hë),#ƒe2Y’^Ì´g1àæE±ï¦`iÀ@øç9`‚/™îÛ¹Îpš™G_6Ps’;Mµ“n°4æÛ0’ˆKòhÝþ DO&ñÜb1„a)7£Ý{Á—JÄ#Àfû¾Ùȱ¼
+Ã’¥mI¸j›-}4Ñ¢oà¸Ë@VŠ ‚9Rè¶ζÑ4 =­Çà¸õ#5F Azk£ùŽ–¶öl°hºžÈÙ’$Ûݾ¸šˆP46Ï;Œ< :þ^ÆO×·.ί.¯¦£l0 &ÕCwQÇ([hñläGp=Œ*°ôkMgȸÝEÛS3ü\ǘ\»xŸÁ{‡"ÙãÅb߶©ÂÄF±Aí­@À’:„
+¹…e»*¾î (£K5Ỷr+‡bÌ2ÀÔ±ó;þ¹*¾&:¿-{èåCÑÛîÚÜãêwÒó›÷nn¯æwç?MG/†e#Àš
+(’Õψ%Û@Sçj¿qÑ‚3>*•páË®mÀl1KÕñ«T»°Ÿˆ°}ѹØš8KˆA|: báx=øÝÑz°Yôc°WôÔ@¬š½s…rIzŸÓ(OAœAH™S}ãÜö-¨d7E®9K#ƒs‡Ê„¼a4Æ:‹Üë$<ï‹%~d©òÌ¥_\Ó£˜‡ÔV¸ÈÏ%éð-ÆnÐæ`ÔeÊt––NvÔòAòBP´‡É墧 uI•”2q÷òâO˜´ôѾî€9:àƒ>f­[8زõ©î¯[üw˜O41Ÿˆ’Þ“(, ¶³érNˆƒ†/<p{~±éõùÍÛ«ë¿NÒ€`bìÚA<q Îu}B$0ÎÈ¡(⃈˜ýð¶ªSH˜=‰7v/³i4«€U¾ôˆÎ¼M>û`Rç,Wãœs±~ —ýÛ[lü«·³ã´b&¼Ÿ©ÜEÛ’D¸®¶sn§ôw#™¿(£ì{»ì¦V—eÌfâ[²æaBÖMè7—Íxœ“÷}!Üký4|-¬fÚšg³Dà'ï6d>¡Xþšã’
+endobj
+1227 0 obj
+3265
+endobj
+1225 0 obj <<
+/Type /Page
+/Contents 1226 0 R
+/Resources 1224 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+>> endobj
+1223 0 obj <<
+/D [1225 0 R /XYZ 72 786.278 null]
+>> endobj
+309 0 obj <<
+/D [1225 0 R /XYZ 72 143.718 null]
+>> endobj
+1224 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F39 496 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1231 0 obj <<
+/Length 1232 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíYYoÛH~ÏËþ½ µˆzد}sÛñŽcŽØÁî" Ä–D„" q<¿~«ºº)ê°,°ÁŽ10`öQ}Tu_•øć?>‰Ä$ŠC&¢x²Ü¾âúû2q­_`Œ(U Y °÷ áL1K’Š)=Nÿøœ3 :ëÍüÕÏ"špŸ%~2™¯ Í<û§——ÝtˆÀ›óÏo7zùå¼Ìò´ü—ø4þµÊ3èñé¿çu>5 X;Í"øËœÂdO=Y½š)Éâ`’°€Ë‰ŒòÄ4¬—‘²<dqÑüN>S¡œÌ8 ƒx`BÊL\àå~¾àÁhä'”Gn[€”X7Ð |JÅ$Ùåá‰{Î$“О…Œsu‚OÇìIxH<øØ»«ãc¾ÉÛéL&Â[õå²Ë«{¾·M§"ò°Ã½Åtéõ­ÎhEWÑôIá!ñ󅆺&mÞV·öju0¿I›ì~*/m4ÉjOg¤ˆà-œP;^ä‹‚—‚%Üi—=©éË2/×ÄMU²é,ä °kN™Ìdè³ TðÖ MYÙè®o})¼¯Ó ôÒ¢Ç[J‰›ß- ‡îý×J˜ ÝÕWUC[]ç]WØmIñ±Í½´ÌNœÁý€©Øm¿÷7ùúø„mJ•Ãs0§sƒîÃ9  ãIü¿3~´íÁúßõÛú²x¨7;Û¿¼þíã{jþum§ŽA¸?áÐ2¢'AÌ¢ð{ü€d¾R/ÄÄßåx8ö<ð¶ùz3±×Ñ$z‚Øx¡'XõÑ‘êE¦ýzM–ã¨Öf¼Óm‡£Ç:.BxÏ yÆƉ˜!"°f%ïÊÞ*=²·7Êß³Oo¯Ì]¯¨ßèºÑ­.ѺtFN@$R’€œ€Jè|úˆ¸ñU"ä«°aô‘æj㫼4²A‡h(+ú.С=œ2gÏ(cËíwÂAüñŸWÜ¢í@¦à5í%û®î;”‡Þ™= =ö¾¬›ª/-]Ó5ñ¡‘lO$:#‘ð(f
+Œj,’îv’
+}ç˜ï7¹ñ{(}@g´»£ ¤»£ yñ`ülV̸îÑû_±FèÀœ¸9A‰p·³U§jRT‚ãÍyýÿ[·&~Á"ïZ·&í¨µ¬¸kmè+âIáó‘ªI•’ûª†Ç)ß÷–=¬,Qi:¨Ó,³Á+ÂX˜Xô&I‘ÞÖIÈ8¾è·v
+Åg¾e«F?%½OÚhÃobÕÛ±ámo²nªu“n·ÖlAlãÛëo鶦HïU”
+Ä×@A@ Ñùà(Î}™¸Ö/O8$ÁÔá–px"“Ç¡ì㛡}(å]•;rvÐZ¦­áÀ½= íd?Æ–~“¶Ä°…Dº¤.¸gzç
+#6‘À6>Ѿ§ò8ð_)Æ8ß–#°‡˜h£‹šniÞÁ|wÖGDôØ°tU•žv*;x]Z
+¹£å¬o{ð0öB­»
+cÂ곕sJtž‰1¯.onïÎ?_ÜÞ½=s{ýî(Œ‹ÈÈv&ó!mþC1uöáêú·³kè~8¿™?ÍšøC±öþêf~usù"Xzwþæ×ËÏ&Ey ÊGìÜ_^ÝÞ¼ ÷ùx6ÿ‚Þçâö…8býÁ©h>pÄ™ÜÂò“è@2‘¹ÆNP#ˆo+XRµ¯
+6
+°ö€ð±+ ÀÇ\´Õ…†<
+Å>b€œ%!?´ëG ³8I1@ÌàŽ¦ŸõK“-쥡"ޕر½j
+€M]|û£ص˜4Km2»ÀûP5Ú8:›Ö¡¹ƒ'ØåG>: žÈ$¾¤€­ªov|}ejÕ-5Ç
+é«ý]ëLßWV Ê±¥†ú÷ë."ÓVUœì@_+›¶YWÆwæ˾H›™Ò${4`r3?VÏÅ4J.±þôtá(–‡ ÌðÄQó? É|endstream
+endobj
+1232 0 obj
+2587
+endobj
+1230 0 obj <<
+/Type /Page
+/Contents 1231 0 R
+/Resources 1229 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+/Annots [ 1233 0 R ]
+>> endobj
+1233 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [127.454 588.389 141.393 598.086]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.2.4) >>
+>> endobj
+1228 0 obj <<
+/D [1230 0 R /XYZ 72 786.278 null]
+>> endobj
+1229 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1237 0 obj <<
+/Length 1238 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝYI¯ä¶¾Û@òrR¯e‰Ôz2ƈy1ðs2@&>‰ÝÍŒ–¶–éÿúÔFµz™y×8èCSÅ"Y*V}µ(~ˆà?äê!/²PåÅCÕ~?ðïÃý4æLR¦ >½Â¸õœ[†E–"ÿÏß|÷V¥qê${xÞïsý¯ ÛlãX%ÁóÁn¶:Ï‚wq¼}ê6Z“v¦²›?ÿõ»·1,ŽÂ2*yñVÁN©¢-ÞŒ¸² úÿÿ#Äÿ"ˆB½}ÙlUØÉð.*_íRäa)‘cŠ÷rç(­Â<+…ÉuU?aË<è3Y9xì[¾ˆ‚ñÈçUÎ4<·›»jr}7²LÓÁL<ªLÇ­ù°Á5¼Cãv–¬˜ºë&‚vPȇm¬"¸5PrŒÊ.I¼ãÐïÓ¶vAi¤ƒ¿ŽV¦q0õø¯A a:X!Ön¬æqù`ÖMü?ú¹©q¬‚zaË]?Y¡Ë»
+ÀYÀ0BMà Äa‰ŠeO)C³§da,îöÏzª$OÃ?ƒñêøl¼É­/~ÿgŒÂ´ä‹|Ó PûÚLNæØŽã&Øï
+#4\uá'ø4d
+ó4“÷¶Û…ˆo¦
+NXÛ+)Vj‰ã µÄ˜)XEÇc(ñ¿á]ÎÙÓû(N*!ºßäŒwÌ?ظzWÑ[3
+:ôoRG!B½YÐv¥¸.Ø 缧T‹ƒ >r(¿}©•é$q.9&ŽêÁ h'|* "‘Êq)ö“ìP‚éž;@•£ÓtI Ñ,9Ľ$2”É;# PPH¿««B!8„ĨβÍy_'Ïñ
+¤½4uˆZœåiVÜdy÷½›~ÏqŠ‚Åàö®c&ZsNöÓÄáa’ìIÐ[|¥ç'SUýÌ”/Cw Gÿ~ ;¿€îËŒ ëž™8@ ¶¤R˜•­êŠº04ÂY,eÂ9‡Æÿ ÝuýÇðSÂO™¥w&Ã| ÞÒ¯6÷y"õ¬Æo¶t†«„\AŽ))(Vz™ž„YAX¾J` ÞiØ>y†\KŒáÃèÿÂèÄ÷Q™RŽú3*ôý,8ئâ{¾ÜóaT
+&¨9D„f0‘ië´%)/QbU¿Fëj#KÛãfÌX3q7ô-Z˜ÆÒ
+öq¥­i毥:™cð„ÿ}yÂ+OKoy™Äå´¼´<QS!jÊ"ÔR¼®‘I|KR¬ñ5Õ0±¿ÙØ˱¢uœ>’ߥå"À2'i»RÁó½~âXÕ­Ûá?3þ¿Û^8’@v 1*=ôŽ—†Éì}ÈX»oí9Tâ É9~¿Ùæqü¼¤ÇÈ eâù‚¤bDE»¾x0Ž4ŽðìÛ÷p–,Í~ i:3ÍG&9:Jj”[jôNò!È=Õ›¾'ôÍÿ›|[lgP¿n¯•gH’„ì`ÝÀ3ç¼›l=ÁtE •Õ#§&.´á#g2KJç·j £–ë„pâöæ‰ öKîGãιðsG– 'ÿÈÈE UÜAÆÂgÌ<f?#¹pÝ<®ÏuÂ…ÄÁt#äÉT¯¹Öâ²@àÇ"‡$¾{AêöEC fÀ0Yž„A@Ö \yÍÕËQ
+Ÿ«Ã–+Õ €-2Ïp ×îÕÜLŽ:À Éðø¡|W`¿®¸ÛȳŸ<ò:l›ŠD—°_¿X\\$åXÞvÅëZ·15§ÃRùîmOq 6äF8 VQVƒ›î­yð°6>wáÉ5"¼¿™ uÅ{¢Uü]0c$ϸElñýÉÌ| Ì|3SWåÃ#Í9Ù¬ÙŽnß±Q«ó‰0!WšI—gï´ t¡ "ˆ}ϵÜÀè?qkîxÜ@¬„Û¸EŠ­_|™ðºuo Xi û0¦¤è‚Ù—yºn#˜QHW}ñØ|m–¾É NþÈc*³náPåE¸àæW¾˜a d&ú^ §Ga²ú^ËMæã½ZØH„„TÉ·--߶”|ÛzâMî·¥ö¤–ö-Ô{Ÿ¶^ý²õÌ _’ÈgðßΞx0¡ïÜûtÇy˜ªWÕw{µpó¯(I²àCw¢Œ8H p™LiÉI>B½ótNmds˜J á?ý S
+endobj
+1238 0 obj
+2957
+endobj
+1236 0 obj <<
+/Type /Page
+/Contents 1237 0 R
+/Resources 1235 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1211 0 R
+>> endobj
+1234 0 obj <<
+/D [1236 0 R /XYZ 72 786.278 null]
+>> endobj
+313 0 obj <<
+/D [1236 0 R /XYZ 72 761.372 null]
+>> endobj
+317 0 obj <<
+/D [1236 0 R /XYZ 72 670.148 null]
+>> endobj
+321 0 obj <<
+/D [1236 0 R /XYZ 72 157.947 null]
+>> endobj
+1235 0 obj <<
+/Font << /F25 380 0 R /F15 393 0 R /F27 394 0 R /F37 380 0 R /F33 497 0 R /F39 496 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1242 0 obj <<
+/Length 1243 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíZmÛ¸þ¾ýþ¨=¬yâ›^
+ôC.i®{w‚dQ¤èV–má´¢+Ê»Ùûõá²dkÍ¡—^_ ¦Fä3ópž%|þHÅ"Í&ÒlQÞ]ðýùiF߃Œf*-™Vøô‰‰K¥3–ç S2}zþÓ:4SZÓVßÜ\|ýZ¤ ³<Î7k7åfõ·¨nûË¥:ºáÞUý{Îß]qgŒuL/^Õv×ôðÕŠž®èñ/µÝuï®.ÿ~óÝ‚‹üvp48w[í[[oÚjEÓ‡WÕ®ßz}/Mcº»bGO¥‚³pÔzñÇ›‹x±‚%:󾋘É<[tÕb}±”ãB.–`:üø§¹  C‚#èOX–¥4c€T,•àx©s98QÊ'¾ÆÓ}ýšëÑ;ŸPþ=:3q¤‚s¦¹>Ì …ý%ÄLIy2sÐ¥dÆË„qXjj0$Ø!`Ï΃Áwƾ̩íåRrõÛŠ/‘F¦n/EõU‡Rõæhší»}ÙﻊޛµŸÞÓö—"V»]S—E_›r8BiÚ¶*{•[`ØåRÉ,ºîI晶¬0—Þ’10-ž?‹ª²þ1æÊé’2ÚVî RE·Î¼ª,öÖIð`N1Ì*Ðä{üËÔ+/£cà­H™·$]E¾ª
+8sóèw"%u»ñë ýε~ šÃ¾Ç.g´IX.¹ƒðÁTº£3–)‹'ÊG§v¯ÍÑ´Q€…’ÎèÑ{vwBŒ$ʶu‰Z·3À<
+#¸“:1§­ª@ŠC%€ S½Xfx÷5²ŠñåO‹0úž˜n¢<0f\+å9$õtmö´6´Ä^)(“üðŽ<þ¤„{M!ì' ã¹¢õôHcà“a½tA ¤ÜûIÌR óq²F 9'–dó„WÜ:©­z&©„:m®n€\³qÝ
+å¶/ 
+Wpé …ò%ä"ÿÛQ8S·,WÑÒSÄ¡š
+eåÔ¸v1Çz©hÌ Ë|‡z ¶-º=ñ“M9%Ë~Nº´(áUSæ\áÃǃ5
+§B³<Ï> §_Q:9ÖW~¹q߸;Hf½ž9ïº)6¿ìUÆ2•žƒ½ä,áü ìA…Ù3`-Uš‰ÿÃþóaÿ˜è_ úÀ°ý ò½ôóÒô Ï‚õ¡^ ÿº7}n¶ýÜÚφ´LòO@šKuÒ±x&¢eüÜý›í¾ý~É‚ã$òßHÁ!ÿg
+ŽçôðZKÒOýO !8“¸ßùf?ÓÇå·Ào»B?ý½ÿŸÒ
+KÓendstream
+endobj
+1243 0 obj
+2342
+endobj
+1241 0 obj <<
+/Type /Page
+/Contents 1242 0 R
+/Resources 1240 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+/Annots [ 1244 0 R ]
+>> endobj
+1244 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [498.875 613.108 518.269 624.017]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.13) >>
+>> endobj
+1239 0 obj <<
+/D [1241 0 R /XYZ 72 786.278 null]
+>> endobj
+325 0 obj <<
+/D [1241 0 R /XYZ 72 422.697 null]
+>> endobj
+1240 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1252 0 obj <<
+/Length 1253 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZY“ÛÆ~—ÿ+OÜÔÂ\8ô&Å‘";.»¤M•\qÊ…%gIdA€@ín’Ÿ>fpØ]:‘S•â3==3=Ý_€X„ð‹X.â$
+dœ,ÖûbÁ¿Û…o} }L©
+ŒÆ§gWÚ$AšFÐÐVñãôó"‰äµÞ\½xùVÆ i˜.®nˆæjó×å»?ÿøß.VFšåï¯Äϯ_´íǶÎËí§ŸBòÈ×uv—]–Ÿ6—üÿîü¿]»Ž¼l¹±¯6ö´ïþ´ãáòâoWß,„Šmäb%P6)mª£y[•íû¯ÝÌõ.«ÝNÚá)Ç–Ì3q+ªrËÍ![Ûêæff¿7E¶M64÷¦¨2GÔäÿð‡A]}÷úêÃûOn?m•ÍMUïAf¹¼øãÕ‹• bùJ'A¢cwùp!J“Em7/VZ‰Y¬”"!* „TsÀBCˆ(H’˜ z… )ø—A ·îï\©™;‹;|ùV˜Á¨›Ôn/Þä„(•y]wX¥zŠgÑÌFW*PÐ^E€ùÓ“úƒÈ4 œG™ ýÿŸêý»n¿´Öÿ¼±M;Q}×Kú/ Xzr†þOtqªê’»|Óî¦3w6ßîÚMÿÕ:­žSi¡ôÓ*Jq¦J«Ðüÿª´ë±’@!’ús¼/›Öf› _´¬nðß,íý¡Èò2GSB/íç /mýÐ¼dÚm³¼¸Ä‡tyw!“¥Åv úPŽ$oÖǦáîª,¸»ÝUå…óÖîn¶;ÔleµÝä_ÙÚ–È»%=ZTR5±®ö@®ƒåFÓfå&«ñpÊ,ë NŠ(\€·Spƒ‰ZV5“º-æUÉÏ$‰!¯CVg{ ¾Ñ‘Ë4 ¢(õªA64£x¿ _Lu9Ã'
+b7Š®g æ=ÃE› [}’KèÇÙoý‡{鸀Ÿ›a!b‡{±
+ؾ$ÂŽHGwµ³sb€Í›ÈÍÞx6s))à˜§ëŒ l+V +ÄuþS(´E ˆµ3=þ$7€ý…t Ã~{s†ŠŸîvùŸwø({&­½oã ^ó²æÉò®x0‘\¾wP“¤
+(ªzîÇÑR+ŠüzŒ%$sKŽ Y€" hœbѾ»bõñËOÎSi:åKÚdâ7é¬4EhÔÍÏýù¤‘GzLP 3À)£’ANÕ¡Ým|Ÿ—t v–ìƒc¢t0-wÓ¹#Ð:#–Ù/ǹ N7ª£œãÇiÚ!3ñ*æIO¶lçp¶ Ew:Ò³Gî
+²:VP‰ïKËÝkFMœ›ï³m^Úñ‚À²á¿3^¦¶»¹8&Ã%­ðŸñßD„¨¹M‘“2#éÎÃm&
+*1><÷Wä‡}ÖÜ·S¡ÎÁ¨±«ÄŽÞ2hxd`Gîü–¿`Žò(+“èʱ;ã‹PjÈÁ‘L5:;½93ˆºŸÁþ4HãgÃý¤Kîža±±xÄ’µƒV€|Ž]šœƒ)•$ ,RÔª´…»k¸„BŠ’†ýäªÎ·$‡Ä6Ðñ R±¨’ÔG·Ðê•
+ÒÚéôäeσ¼•I‚_ÕÇÛ1ÅÛs† OJ~>߈ 5p*Þž5Dǽd·ìùXBÅ'Å@“=´\dØ #ÒŠY¹ÒL»¦Š4F"§£‡ÚK Zû|»óŠzKƒFvÀ‰
+×vRÓs9É7Óº{•6i1Ä&ôPqè¨gLèŠFü8<+<’üªúÖqàÎ"oÛÂ1V®pÁ(Å}AŠ ­ÚvÇiç<}‡Ò#äÇIÊÈ…Lý‹öI
+øƒÔ¼ÆOBé-ëéCaÙ;¿sËù¤#ŽzÏ…9رó2d‚ñÀ‘Àm˜‡™3Ðδh.
+ۺȕ¡Ã]©«ñªpé &ïJ'J,bˆ )H
+À1ÀZA”ðRf€\—Œ=ÍåÌ:XºŽÎ_æÝÌ2XdŽÏX&>™7³Ëàç ç/s=YFÃÜ/.´ùeäsBƒVŒïð:¢.I­4z'pÆRç.˜ÂCLÕ•Š‚02_äo
+ï]ÔUïí&·!œèKŽ ?³Á§b¼iè“ÿS·
+ r^|ÕÖù¡pÕ8ŒÉ}°‚òóÅé4+ã*À9¦ðû…Æä#ý· ]ÁOõùÈ4j˜$¢î­`ÑÝ›NN†-ÿ"òðÁKEWÉð™ Nö§ðÙ‘/ªem'Àa”
+ ˆ»ÚBî
+endobj
+1253 0 obj
+3516
+endobj
+1251 0 obj <<
+/Type /Page
+/Contents 1252 0 R
+/Resources 1250 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+/Annots [ 1254 0 R ]
+>> endobj
+1254 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [291.815 564.018 305.755 574.018]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+1249 0 obj <<
+/D [1251 0 R /XYZ 72 786.278 null]
+>> endobj
+1246 0 obj <<
+/D [1251 0 R /XYZ 72 248.207 null]
+>> endobj
+1247 0 obj <<
+/D [1251 0 R /XYZ 72 212.143 null]
+>> endobj
+1248 0 obj <<
+/D [1251 0 R /XYZ 72 176.078 null]
+>> endobj
+1250 0 obj <<
+/Font << /F27 394 0 R /F33 497 0 R /F15 393 0 R /F39 496 0 R /F30 512 0 R /F31 881 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1258 0 obj <<
+/Length 1259 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝYmoãÆþ~ùп äKéÀâq—¯J‘m'×^ÛCë .š¢X‹+‰8ŠTHêdýñ}fgH‘2íëè‡Ì}™}›y晕ZøS‹T/Ò,ñuš-ÖûWjÁï}é÷hcÉ(ý8¢ÚG—½ä2Œý,‰Iþ··¯^ߨx¡¬·'{›ÿÝ»?vWË(Ð^·³\h¬)©z÷f}¥3ïý¶©UNmÊË–;»ZÆ5¦j¦±Õú‘[Š–%~:Ì™ŸYHÐlwnšzÏ}§Äü«e‡Þ×uÕÚŸŽ"Y>ž·öÛßaÇKEG[¹oËÇÃîj†Úk­Ý·TŒÝ¶Â0ò:õ,WÚcãŽ`sª+tbúG*‡žáO·+*.•Åvw¥W´Qªn3’æië&·O{z}¦ ¥üU³V—zåkº&~tµTJGÞ×PjWT[L’†ÞÝ»?,oŠÒÒ–ÓˆUÁse£¹ì"Q©ÜS§Êâ~fÅ0ðÓDd–ß‘JZ–šÜöR«ÔÓ…ÀW±¿¥G£·v»«éüiB»ãŠd“©»TúVuǽíñpetN¯hˋƮݵQ
+u;Ñéh'Æ™&ÉÓSMö«3? {!ØF 5ýÙÀškÌ¥dîÌðªÇ®(‹Ž.ð‘Û7ÇjíNG&´Ô™öaSK‚:C'kRÚ;4–왦U
+¦ãöBZ*»¶mkš_Á€È5¨½´°”Ôû@Sñhñ**ŒtŒZ½á!C÷»âaoTDï2¾žÌ£¼º’žaÙº‚Ÿº‡9v»ºé5‘EÞµzݼ8Ç°4 ·ÑÐÁ²˜´E‘ Äø%®7gÁA©®V´_Ò^}{{F¡Ø`¡0ÿÐWAø<h=d0r•i<`CêìîÍÞl±ÇXÇÞ·êŸ\¿O9oø1ˆîüîíßÞ}/r[éRý¶±ÝÓ/WØìJ°Kûá*[4v±yµŒB?‹™¯ Ò'œé^fÎ]»Jü,K¹ûŒÍ%! Ù¢h8XÎìfÆ/2¥#駓õG¸˜š‹1nŽF~ø Óª¹}b_ð®Å2ñÆ?=fÌ“Â?áMÌ^Ž0oÈ}¢Œ=Àù*¦âïRT€ó-R‡j4Üðá*N<Sù ž¨,ðLþðdÙG¬à‘Vjî‹®aŸŽb/·‡nGÞÁä9Cw”ˆ×¹‚ Q¶eZêft `
+l³EÉÕÏObrÿ*TðïQ@I£ÐA›»µH‡ˆ´Éä¼›º,k:áIîa²vÚÉ-[À¦1ÛýÀiH ÝÕT;µ\•W¬iÙš;¾ Ì@LËÝÊEK€ ÜewµíqÏîB†a¤™ï…CSƒšì¹sû0EÕÛâôúdÜÀøt-Ã;9i^v’TÕ{R
+\þ:7ùŠç„î¾ÁJMýx±'ûÜÌŸt­—´W¢ºÖˆ‡‰û %'
+ö^Âûr‚p©Þq Ä”ƒ6×ÌžJ-öÁìÎ0tð ë1¦AêØŽRigd ÃGúš÷ŽÊ ¦‘!›ZF8}Šza’"rõ!ÿ‰Ÿ»e?l‚à5ã·$JLä s+oðkg¿l¹¶7ÐA þšÈî®°Î M2«Öv Ñ%–ƒ„'«ŽÇ¶3s˜Tû!(“øzŽ€µ„½ßЮ4†
+J¾0õ4Zï²½’«)&*øJV4bçh¦Bb³ÛB$ÿ5¡PÝI0ßÕÇRØ¢HÁ_2\T$kÛâ¾”&f J˜gžˆJvF'iY
+G©€稓ÎF†™HÀ¡)p½¸àPý¢ˆÝä±*ö¾}XƒÌ> yô*j WŽnÓ‡¹Ê
+!ÆÁ‘¦¤¥æo._N ÉT·d¼œºž±&5)©§ºTá;t‚ìhËk2vJx&±R±-'Tv]0¿=oH tÂLÖªõ\òSì±\w¬&׊‹ýPalw¬à‡åã¿î4Ñ¿écfzÎOå9Gƒ¸ *Ä^c`- ëÕ>¢ 첋@žLNžËðàj–óK8o;à‰iäéf´u+qPT‰¿
+§©Ð-m¼î³‡½?´ï§8ìºè×Õõð ÚNSŒÓƒœþ<·%Þpý™³`"(õÅxb\sOOŽõ…±vÎó‘÷rœ˜ùÅ‹¯1¿¸\…³š¾ÆÇË^|"ù‹9×cNé-]ÑXÎÐtO?äõú½èOq4Ê8‘ܺ.ëæi^¦S§fÇñÏ@M‚!ôéê@1Ù/Lf
+deð‘GÏ™P•ŽùÙÝ79ÝÚ‡î^€D®&$òy…&?…Þл0èÿÛÉ¥ÑEƒ‰i¤4#b<yG¦w'2fA®kòÓ“¨ä1¡>˜5½Mgü6ý`œo(A"ƒX)Só#áè7$X.þ»˜lmu–ô¶àÌJú¦h…–#èXþiî5ýRç_êz¯?6ë—¶é8m/)¿¥`‘²'P-û‘„1ôúXXäöËgï-ÍÒiVkå‡ôý²n³ôr *¢õ w÷o~ðc»endstream
+endobj
+1259 0 obj
+2552
+endobj
+1257 0 obj <<
+/Type /Page
+/Contents 1258 0 R
+/Resources 1256 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+>> endobj
+1255 0 obj <<
+/D [1257 0 R /XYZ 72 786.278 null]
+>> endobj
+329 0 obj <<
+/D [1257 0 R /XYZ 72 719.477 null]
+>> endobj
+333 0 obj <<
+/D [1257 0 R /XYZ 72 313.395 null]
+>> endobj
+1256 0 obj <<
+/Font << /F15 393 0 R /F37 380 0 R /F38 495 0 R /F27 394 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1263 0 obj <<
+/Length 1264 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ…‘=kÃ0†w/ý Ú*A}±N–×@3´«†Béà&25qâ ;-ô×W¶ìPL©Ñp<zïÕ‰“,Nr$¹Ñ€¹!ûSÂI<G2gÏ¡I©(9T+`:“©P`´Z㹡EÔÝÚd³‚𠊬 ¶{x¥wìÍ>%övMTjÝÍ€É_â\ý!¾cFÒëyß×í¹c©‚öe³ K1§ÎW­?ÅN92’ÖÕ̺˜ø²ë¯¿ÀCCÛksJ¤ïAÉЉ½”~Ð.e^bèœÿdãhO‚ðQ"‚âztnƒÍûÉrSWî!¦UÛ;X®ì& ‹PâÚî9ˆ0he{Æ,¡@@üçw~
+endobj
+1264 0 obj
+272
+endobj
+1262 0 obj <<
+/Type /Page
+/Contents 1263 0 R
+/Resources 1261 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+>> endobj
+1260 0 obj <<
+/D [1262 0 R /XYZ 72 786.278 null]
+>> endobj
+1261 0 obj <<
+/Font << /F33 497 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1270 0 obj <<
+/Length 1271 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZK“㶾où J.æ¤V ‰¾íz½©‰—«<·8µÆHЈµ)“ÔÎŽ}ú’’8;qNqÍA`h
+~u\š‚ÆÞí+8œ*MÔûÍPµ ŒÄ¡ªklÚè“ïž°¥£IÜãš­Œnž[;·zínTuž?švàÆЄ䚧CËc⛵ɇ=٨߷§Z˜ßÃOɤ8Á<åJÅi’Ê©r:UÇÐ0âP5[dª³è›S×ùf¨Ÿ¸ç²hï>y&4-S†ê ”(6zìªÁK'í ;EZÂüíià·2µ{⹃påýú#wÿ”¤æá2í¤,cèZ­U%é)’±óã*´¾“›Ÿß줻Aßaà‹’KÔ\­–˜oÚ¦¯ú„HR_ëRƒæiS8î°mXê|ìÎ×Þõ¾¡ÝÂ<Ž<ñ³_@Fú&Ko*OsJRé€3oP3¼\º, ÿY®…4t¶±é
+â ±µIT\%¿ˆ3•}ɧ±X²)F¹¥àPe9—Û-ÙT”'I‚ò¼Æ¯\¬F')t×vÌ°ˆZ™
+ú Gž|ðhwlá*Ÿ-©t§y* i]Ýó¨³i¸Ú$“AaOÕ'’"«´†Ûñç®0MwÓx¿e
+l—IN6ê3ê܃gEQ™Š“<'M±¦¤eO½Ç©6£[Æߎî(lÿК||¸z
+c‹iø®mDÝñë±ö<àöSœ™€åÉ‚®F›}âAž}Ã}uë¶t‘8Žµª
+¶ Ä© @©8ƒtà c–3€g^ŽšCòÃ×G}²ïmÛÈú¤ÂÞÈçËÞ8à[ðÄÉY\¸iy»•—0L¬4Ü$l)µç@7Ç)Ák¡·¼'÷†TžƒžÀŽ¬HÅÕ3ŠÔš4Hú(7òõe$˜9`“ÄIöbr
+‘ñ<(h½þø?FœË4ðLó÷Uíwðë½ë6û£öý‚.¤)bX#“¾F%ÏÃÍÑ=ñû¾G
+æI ”HYuQ ‚û¢$•˜½–'ýfAS\#žˆèëD½àI÷4˜™@ ÙÞÜž$ å
+Ž›°g³`™…ÜPËÙ~JµI% âÄAk¶;!ÀÂ,x[YK¢&d/l·@bÜŠ#w]{à[)4®ô§Žº™[Ì‚ÁX׉ùäX͹™ FÒä,! [0˜é‰ûy@|—íþé€bçHÝÖý’û
+ÌûäùzÌj˜¼i»ñH-@Jfˆ Ñéâñö²PaFV½GÐVp¶†ôLKZkÀ
+g´÷p.þƒ¾Ö%¤_ç)
+—f0—*5m÷qį۪Eh!¼€|â«°«
+”Àæ#êhÛm)¡²pÐá9ÛFT9IxŽFCQè˜Â¸åƒRÊ5¯^´m.˜á†»^ì ®!_Aà…ãÎðìsbÊ8KÍïÈ@^ÂDË\ŠbY‘PPôùLôØÁ…1À”›á$`ˆj³´å‘£‚ÖôÂÔü¢Êt,¯•Ñ/'Çë!€ÕŒk¡ô»õÒ»‘bÆZ¶«‰µ*~ƒ¿˜À:O ~lÀw¬4â¯ädFꔲaZã±a§ª
+p¶>–àSú,KØvrûn)l‡mØk$ÃMC=É qŽ£ÄõÁ{É­¹Pe¸l˜cÙp÷4ïÑSÞ6¯,I!jñ="Óq9‰/UYÎP΢‹^)8¯ß¨«‡KàžÄi‘NŽmÂò‹S£ÃTgz[‚)Â|yƒ1Ñã¾"íßóçÁZ~±µãsî Ñ#Gyic^`]Ý·¬²²é«ðIï³x®ÞÚ|Ùý*ÎÆקÜ_Žcí,³¶V–…½†ˆ›°´|CV$³+ÄO
+§z¨ŽµŸã°Æx)=X ðûüÈsˆ†A¢·“ò×#ÙbŽžÌŽþ_:ÐbÊ;ÿË©êBéÊm·šzÓñ¾qu.š^•‚g(Lúo†Þ_?£”ŠŠžhwIYüög§öúe;Ö¥yÞ¾žç†r¹ö ’ þØ[ÈþÿÂ}5ÜñÃÑm—⻸É!èb|OEçºÊݓު䲆®Â£ ^†¨ŠŸ—pä=¡iNË=3Çä~ãħý|^*©ReY­mHÐæÕn~¢puÅ5b…Å©0[Y©yc¤±e§“rJ‚C+EnDa~pêø½ÖS‘ÚÉ ºÊLä+Æý8‹^€ ¾DÓçÖï˜<ÓfÆ‹}ä8̶z‘Wç?ÖÓÈ5> ILf¯mÖ½Ô©åvœ5¡\ÞoÒ‹ó0£çÒwþÃLþãG?¼­@¬?¸í\H™ž=b0
+€ÚLù?MH±endstream
+endobj
+1271 0 obj
+3295
+endobj
+1269 0 obj <<
+/Type /Page
+/Contents 1270 0 R
+/Resources 1268 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+/Annots [ 1274 0 R 1275 0 R 1276 0 R ]
+>> endobj
+1274 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [465.234 645.672 471.087 656.299]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7) >>
+>> endobj
+1275 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [378.027 527.131 383.482 536.828]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7) >>
+>> endobj
+1276 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [491.907 142.771 511.301 153.68]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+1267 0 obj <<
+/D [1269 0 R /XYZ 72 786.278 null]
+>> endobj
+337 0 obj <<
+/D [1269 0 R /XYZ 72 761.372 null]
+>> endobj
+341 0 obj <<
+/D [1269 0 R /XYZ 72 471.219 null]
+>> endobj
+1268 0 obj <<
+/Font << /F25 380 0 R /F55 1272 0 R /F53 1273 0 R /F15 393 0 R /F27 394 0 R /F37 380 0 R /F33 497 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1280 0 obj <<
+/Length 1281 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ•“Ënƒ0E÷|…—°À±ÇïJÝT)RÛU%vmy@‚J@£*_ƒ¡M£<T™…=>ž{Ç("nP¤
+endobj
+1281 0 obj
+380
+endobj
+1279 0 obj <<
+/Type /Page
+/Contents 1280 0 R
+/Resources 1278 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1245 0 R
+>> endobj
+1266 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 612.998 467.998]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1282 0 R
+/Length 1283 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1283 0 obj
+30
+endobj
+1284 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 612 467]
+/Resources <<
+/ProcSet [ /PDF /ImageB /Text ]
+/Font <<
+/A 1285 0 R
+>>
+>>
+/Length 1286 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚí< ·^EuJîå˽ß]šV£hü"´E’{œ÷ƒ€‰€R `(A Ä¾À𺡅4J°6ö¡«¦´¥­}?ÁÚU«íÏë~Ìž3sîw£¡7«,V‹ÜsöÙ³gÏÌ~ÎìùÔ 
+ÿ+?³þüº^<½î†hœñ‹Ï¯;môìÂæ¤>„!ë…IvpÞ/^øìúƒëÏ/4Q‘?ŸYÜ~rý£_èÅÉÓëB|œöC^8£¿8yæ¦w]õî•=9ùÌzBœ“OÜ´:»_2½î­ÍO=·ñ®ùÞù©VöÍ®™_‹ŸMVåûü:|ß´Ú,²EÈÑw]?qÓ¾ùþ“ŒO­µã—}s&O0øãøö‰“‹Ö]t~p»7òd†8Žü'°Ÿ,£$&½¹Ä¬¼çÀ{WöÏWßÿ>°6n‘~¾þkeŒ‰ñ×~ðC{xLe–®.sB/ œIn`Òõ·:?TçÀ ¢ÖE=À¼Ù@âB; ’.{¬ÉƒYXŸà_˜„ÏW¹ï$31¿áàÚ|ÿØ„¹i÷úOÿ•þ‹\õ}ºÒÝBg§—eÝ­=x «|/Œ¶CÀ¯+âæÊZá’Þ8;´ò“,—úS³ŸžŸºi~ê#•§@/^GªAµ0ÆZd¥<LW€+€$¬ÅÛ)JÔ”XÚ„=7± 6À|šój€Ögª¥ÈÖ“Ræv„<Hc#ÚæJbf
+ q>m™&à€+º<äè,´XÁ†ÁƒôŒXi±¼±ƒÑºÁH‹åTþˆ%ËÀP±
+9H
+´Å\¾ÖŒmvl5÷¾ùȾÙÞ9{5_D}sX›ñ¾q¾JÑ€ØiM.q¿úèVgYhh7/ÞÕH ðÁÃ׶îά¬ªë}?»½Më xЖéØ«È=å(®Ñm4$µ¸­F¢!9Ûnœ¯±‡×¡¶ß?§Á¬öa>H\²éœ4Ô$rdS¢–âÁ÷Aˆ°lA oreƒgf쾋`B¡×:­¾ ‘
+a`ŠN^úñÐ6§)B±+–/¨]õšQ6QøК¬¨&þ0šÞFc&Nõ®4° ›—!þS®µymô>Û˜¼
+Ønñ€‘Á›Ø˜¢±µ (<­m,Ñv”Be{·ÛŒÖ¢ ‡G«"Ϊ0#¡µcé°tˆƒim¢@:,åíZû*Kb¿K V2N3.^¶µ³o_kçÞºµ3»`íܵv"
+¤Ã
+`zbÚ%ùµ Úÿ7ÒëÞV¾úí/½Úó†Ud%Në&0WJ‰`é”àˆ íT‘A1Y¹Á؆@ZB&f5$ßbH‡b\l±
+¤Ãò9«ÜbH‡ùÛ]‹U –Öà˜B‹U Ý4ä9],l]®¶ 8ÑA]Ò,½…v@Ê’ÞºrÛ,ûØáãW·“.¸"·ÍŽoÜñ‰;WŽoÜ&_Šv}ò(½[/ˆ‰ÅQ×Øñvþ~×JÞø™{î^¹÷ØÏÞs'a†$BLjEûî:ˆ÷ݽrÿû7î=ö©;0:ÌÉŽ„ï8q|#}@ݺqבÛÔÏ©ã<v+ðŒ=‰ÈA¨Œ™´˜TG<ÀÛñM ??vבû}úžãÜ?¬séÿŽcÇ7î?qKÞ¦>pçÊýÀÆÃedtwœÈܺòIÂ6eZémÓ£²2ÉÛ?¼rÿ±[fÇOÜòè-<ÏeíÞŸ¿¾ð³ŒùÞŸ¾/Í£âGO¢Å…þÝ+ŸÙø…_<ðKÜOªþöÅóQvý~yãWžxüh>z÷ ¢†w+ò)èí¡V\>»ñØ{7>ùÈíSÝÔ•ñ™—8?r÷‡¸½nûôµÏcÓ>7
+HÛÂ=ˆëì8ÃÀ„戔ÚYð6Žó,šPf–߬ }v›­r&[öhÉZˆ‰c…´JêtÌèѬé°$'®Eb@‹c3<(Ó ¤ÃJ6¡%%+ ƒŒÕ¿F`<@XßÙPMàèµ’*Ë´/÷6-ÁäÔ‰€ Ù7;ÍÞÉ,6õ6gU}w*~ôÐÊiÞtuöZ^f£—»ªÙpºûæK{I²1¿·ß˜/Î7옩¾5ÆÙ#Ƽd÷ÿÉûè5ÙÜSLEÞqLOñ¸ëIÁžÒ;S;¸!Äéù~ðîש˜wÊ*Œ¾œdh™
+%oeülS•ðý³r6¦Þ7¿þÙ5¶V…[cµ‚9¬ÔfOoÝ|ä†3€[Ò Q¦‚ë0ɨ‡e”Ì
+úgÝbH‡å“|kÒa•£Í«@:,ëá[k4ÒaÕ•ŠUOT,m;Öµð]óŠÒå…ż֤¯š×.é+X5é«X]Ò'¦Z’¾ÑT·I_±nʦAµ´ÒaÀb¢Ú<†tX^:³X –M5H èx¯ •÷z
+¤Ãª kÅêÖ‚UÖŠÕ%¬«¦È«K‘‹ )I¬øƒþÖ]ö;çgµÿïÞYÎÁâQŽÍ?ÜC˜L›y]h»
+NƒcbCA±ùQèþÕg1H¾ú×|Ø«ìUûÊ,xÓH;n±) 0'G÷ÎßsàFŽ·m.8 /ÏY —:así®Ý gÝÊÕ
+£9 !€††R¨† ËÇ~Ë{3²Š!C
+òÎ}4C‹¶S ™öM;yüÞŒ­b—B¡G\àÕ~ŒÖ~=ä)©Z`$Æ4öCgêP ¡ ï¢Û#„µ¤ÀÖaìCìÇÈ…`—B¡G?8gaFb;8§WY²Ni<ú®—÷fp£°^)È;÷Ñ Îaýç|âÒ¿7ƒ«Â¥PèÇÑ‹eÖ†óùQz±*®Q·r¢Zµ^¡”ï¢LÒ¼¼—™Ì&RƒÒ¾”ªÔÊ{#’Cx.ú!и&ET²i®y¢§¶
+
+ŠXH¿swd6~Ç †dŽxј¬ßéa»Êé\n“ÐS§,ˆ‰×+3Ƀ
+Ñq¥tÑ:•Ê2°Î ÏGH(:˜tºËãX,†Û†V\ã‘ BR!+o Ç+Tx
+—"ú'€8îÜ*,+@@Ùk²ÊP¶¨1~µÅ/ж€+Î߆ Û8°{Iž<´ƒUg1×( )þ¸zv–…ºx°L“'D€.ÆÕ&>eæ&è°ë©óVýu®!Šr¤ø…JoÁd×v„µ%ɵ¼XÜ©k¹2#ãÍ‹]Gm1F ÍÄ@€Îò[çÎ).{ç×áoÍÄv ð‰$¸.“Ͷ¦YJ‹¿Bâ)Ë ^ z ëÑŽ¤Qj¬ÿ¥L#X_Ch„Ïâ)±²€‚§ð,Ž"Ã6(݉9xŠBX47
+c£-07äDŸÀOÐNõ¨râ'ªV‚Ÿð¬ÚEqÁM°Í­ºMn"ÚONƒ¼jÀI°-¯6¼„¡³Úò¹1Eà$[ˆb­øDj ùˆ£G>E¯F›<­N±œà 4ÙÀjZmcëBc~’ñ·F NÄ’'+n1…Pa\ÞíȈZàý߯îÜ‹Ÿ?î /ÿó_¼ð›¿õ%ýÛOœ{ñwŽýîW¾|á÷>wî•—ázú—?÷Õ¯ýþ…¯_À¿ßøƒ‹¯~õÄE.Œôò£}@ë<ÓúC õGüÒW¾~áµ Ï¿tðÿä«Ç.þÙŸþù7Ÿ=÷ÊÅrÿŽŽï¥%sñê_¼Òrñ¿<÷…—_„¾‰— H‘«W±4Óâ†þ ¸×ßœ•‚àlÿ?ôýb3yº~x«ÏŸš×bóù W¹SÜAù!æ\$¿ ™–Ž÷â¹W`^|íÂ/üÕ__<ÿò…—/| áoþîo¿vñük^zôÜ+/•èv~[6“üê?üãÅóß¾ô•¢{,ñâ²ÕR¯y#|köÏ^?ò-õFø¶úª’•ÌÿzæðFø·Ù¿ÿÇ›³ï”iÐK5·ß=ñ=š—R*üŸ4Ü°Øä!|ûü÷Õ›³¨ïyS}ö:‘Å]úø].;ÜÜ÷_¥þ–ß¿Wêoéå¿_¤W² öë|=ŸJySz›ÜÎ*¿­ô?(`¶endstream
+endobj
+1286 0 obj
+6056
+endobj
+1285 0 obj
+<<
+/Type /Font
+/Name /A
+/Subtype /Type3
+/Encoding 1287 0 R
+/FirstChar 0
+/LastChar 184
+/CharProcs <<
+/a184 1288 0 R
+/a183 1289 0 R
+/a182 1290 0 R
+/a181 1291 0 R
+/a180 1292 0 R
+/a179 1293 0 R
+/a178 1294 0 R
+/a177 1295 0 R
+/a175 1296 0 R
+/a174 1297 0 R
+/a173 1298 0 R
+/a172 1299 0 R
+/a171 1300 0 R
+/a170 1301 0 R
+/a169 1302 0 R
+/a168 1303 0 R
+/a167 1304 0 R
+/a166 1305 0 R
+/a165 1306 0 R
+/a163 1307 0 R
+/a162 1308 0 R
+/a160 1309 0 R
+/a159 1310 0 R
+/a157 1311 0 R
+/a155 1312 0 R
+/a153 1313 0 R
+/a151 1314 0 R
+/a149 1315 0 R
+/a147 1316 0 R
+/a146 1317 0 R
+/a143 1318 0 R
+/a142 1319 0 R
+/a141 1320 0 R
+/a139 1321 0 R
+/a138 1322 0 R
+/a136 1323 0 R
+/a135 1324 0 R
+/a133 1325 0 R
+/a132 1326 0 R
+/a131 1327 0 R
+/a130 1328 0 R
+/a128 1329 0 R
+/a126 1330 0 R
+/a125 1331 0 R
+/a124 1332 0 R
+/a122 1333 0 R
+/a119 1334 0 R
+/a117 1335 0 R
+/a116 1336 0 R
+/a114 1337 0 R
+/a113 1338 0 R
+/a111 1339 0 R
+/a110 1340 0 R
+/a106 1341 0 R
+/a105 1342 0 R
+/a104 1343 0 R
+/a103 1344 0 R
+/a102 1345 0 R
+/a101 1346 0 R
+/a99 1347 0 R
+/a98 1348 0 R
+/a97 1349 0 R
+/a96 1350 0 R
+/a95 1351 0 R
+/a94 1352 0 R
+/a93 1353 0 R
+/a92 1354 0 R
+/a91 1355 0 R
+/a90 1356 0 R
+/a87 1357 0 R
+/a86 1358 0 R
+/a85 1359 0 R
+/a84 1360 0 R
+/a83 1361 0 R
+/a82 1362 0 R
+/a81 1363 0 R
+/a79 1364 0 R
+/a78 1365 0 R
+/a76 1366 0 R
+/a75 1367 0 R
+/a73 1368 0 R
+/a72 1369 0 R
+/a71 1370 0 R
+/a70 1371 0 R
+/a68 1372 0 R
+/a67 1373 0 R
+/a66 1374 0 R
+/a65 1375 0 R
+/a64 1376 0 R
+/a62 1377 0 R
+/a61 1378 0 R
+/a60 1379 0 R
+/a58 1380 0 R
+/a57 1381 0 R
+/a56 1382 0 R
+/a55 1383 0 R
+/a53 1384 0 R
+/a52 1385 0 R
+/a51 1386 0 R
+/a50 1387 0 R
+/a47 1388 0 R
+/a45 1389 0 R
+/a42 1390 0 R
+/a41 1391 0 R
+/a40 1392 0 R
+/a39 1393 0 R
+/a38 1394 0 R
+/a37 1395 0 R
+/a36 1396 0 R
+/a35 1397 0 R
+/a34 1398 0 R
+/a33 1399 0 R
+/a32 1400 0 R
+/a29 1401 0 R
+/a27 1402 0 R
+/a25 1403 0 R
+/a23 1404 0 R
+/a22 1405 0 R
+/a21 1406 0 R
+/a20 1407 0 R
+/a19 1408 0 R
+/a18 1409 0 R
+/a17 1410 0 R
+/a16 1411 0 R
+/a15 1412 0 R
+/a14 1413 0 R
+/a13 1414 0 R
+/a10 1415 0 R
+/a9 1416 0 R
+/a8 1417 0 R
+/a6 1418 0 R
+/a5 1419 0 R
+/a3 1420 0 R
+/a1 1421 0 R
+/a0 1422 0 R
+/a89 1423 0 R
+/a49 1424 0 R
+/a54 1425 0 R
+/a59 1426 0 R
+/a88 1427 0 R
+/a112 1428 0 R
+/a44 1429 0 R
+/a4 1430 0 R
+/a134 1431 0 R
+/a2 1432 0 R
+/a11 1433 0 R
+/a7 1434 0 R
+/a28 1435 0 R
+/a107 1436 0 R
+/a24 1437 0 R
+/a12 1438 0 R
+/a31 1439 0 R
+/a43 1440 0 R
+/a48 1441 0 R
+/a46 1442 0 R
+/a80 1443 0 R
+/a63 1444 0 R
+/a115 1445 0 R
+/a108 1446 0 R
+/a74 1447 0 R
+/a77 1448 0 R
+/a30 1449 0 R
+/a69 1450 0 R
+/a150 1451 0 R
+/a145 1452 0 R
+/a100 1453 0 R
+/a109 1454 0 R
+/a26 1455 0 R
+/a118 1456 0 R
+/a120 1457 0 R
+/a121 1458 0 R
+/a176 1459 0 R
+/a127 1460 0 R
+/a123 1461 0 R
+/a137 1462 0 R
+/a156 1463 0 R
+/a129 1464 0 R
+/a140 1465 0 R
+/a144 1466 0 R
+/a164 1467 0 R
+/a152 1468 0 R
+/a148 1469 0 R
+/a154 1470 0 R
+/a161 1471 0 R
+/a158 1472 0 R
+>>
+/FontBBox [ 0 -77 85 111 ]
+/FontMatrix [ 1 0 0 1 0 0 ]
+/Widths [ 0 0 33 0 31 0 0 35 0 0 0 34 39 0 0 0 0 0 0 0 0 0 0 0 38 0 60 0 36 0 52 41 0 0 0 0 0 0 0 0 0 0 0 42 30 0 45 0 43 25 0 0 0 0 26 0 0 0 0 27 0 0 0 47 0 0 0 0 0 54 0 0 0 0 50 0 0 51 0 0 46 0 0 0 0 0 0 0 28 24 0 0 0 0 0 0 0 0 0 0 58 0 0 0 0 0 0 37 49 59 0 0 29 0 0 48 0 0 63 0 64 65 0 72 0 0 0 71 0 77 0 0 0 0 32 0 0 73 0 0 79 0 0 0 84 57 0 0 90 0 56 0 89 0 92 0 76 0 97 0 0 95 0 0 85 0 0 0 0 0 0 0 0 0 0 0 68 0 0 0 0 0 0 0 0 ]
+>>
+endobj
+1287 0 obj
+<<
+/Type /Encoding
+/Differences [ 0 /a0 /a1 /a2 /a3 /a4 /a5 /a6 /a7 /a8 /a9 /a10 /a11 /a12 /a13 /a14 /a15 /a16 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a75 /a76 /a77 /a78 /a79 /a80 /a81 /a82 /a83 /a84 /a85 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /a97 /a98 /a99 /a100 /a101 /a102 /a103 /a104 /a105 /a106 /a107 /a108 /a109 /a110 /a111 /a112 /a113 /a114 /a115 /a116 /a117 /a118 /a119 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a162 /a163 /a164 /a165 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a174 /a175 /a176 /a177 /a178 /a179 /a180 /a181 /a182 /a183 /a184 /a185 /a186 /a187 /a188 /a189 /a190 /a191 /a192 /a193 /a194 /a195 /a196 /a197 /a198 /a199 /a200 /a201 /a202 /a203 /a204 /a205 /a206 /a207 /a208 /a209 /a210 /a211 /a212 /a213 /a214 /a215 /a216 /a217 /a218 /a219 /a220 /a221 /a222 /a223 /a224 /a225 /a226 /a227 /a228 /a229 /a230 /a231 /a232 /a233 /a234 /a235 /a236 /a237 /a238 /a239 /a240 /a241 /a242 /a243 /a244 /a245 /a246 /a247 /a248 /a249 /a250 /a251 /a252 /a253 /a254 /a255 ]
+>>
+endobj
+1288 0 obj
+<<
+/Length 1473 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1473 0 obj
+134
+endobj
+1289 0 obj
+<<
+/Length 1474 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+pV0ÔwÓwvvÓw °±Ñ÷VÐ5ÔwÎÏ)ÍÍ+V°´³ãòtQгÿ°08p¹zr
+endobj
+1474 0 obj
+102
+endobj
+1290 0 obj
+<<
+/Length 1475 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+NÎåròäÒ÷ôU()*MÕªÓ÷P0Õw
+pV0ÔwÓwvvÓw °±Ñ÷VÐ5ÔwÎÏ)ÍÍ+*²³ãòtQ°®ÀÄ ÀåêÉ
+endobj
+1475 0 obj
+102
+endobj
+1291 0 obj
+<<
+/Length 1476 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+OÎåròäÒ÷ôU()*MÕ*Ô÷
+endobj
+1476 0 obj
+126
+endobj
+1292 0 obj
+<<
+/Length 1477 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1477 0 obj
+135
+endobj
+1293 0 obj
+<<
+/Length 1478 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1478 0 obj
+110
+endobj
+1294 0 obj
+<<
+/Length 1479 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1479 0 obj
+157
+endobj
+1295 0 obj
+<<
+/Length 1480 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1480 0 obj
+116
+endobj
+1296 0 obj
+<<
+/Length 1481 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1481 0 obj
+151
+endobj
+1297 0 obj
+<<
+/Length 1482 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1482 0 obj
+161
+endobj
+1298 0 obj
+<<
+/Length 1483 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1483 0 obj
+169
+endobj
+1299 0 obj
+<<
+/Length 1484 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+‰ßþúêß¿©ÿiÿþ«×¼­ÏþŸRºþ=P dÿïzïß樂·ëßý×k÷_ýþ·tãëûqÿã>02p¹zr
+endobj
+1484 0 obj
+162
+endobj
+1300 0 obj
+<<
+/Length 1485 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+pV0ÔwÓwvvÓw °±Ñ÷VÐ5ÔwÎÏ)ÍÍ+*²³ãòtQP[8ÿÿF.WO.
+endobj
+1485 0 obj
+103
+endobj
+1301 0 obj
+<<
+/Length 1486 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+\®ž\
+endobj
+1486 0 obj
+156
+endobj
+1302 0 obj
+<<
+/Length 1487 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1487 0 obj
+150
+endobj
+1303 0 obj
+<<
+/Length 1488 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+OÎåròäÒ÷ôU()*MÕ*Ô÷
+endobj
+1488 0 obj
+124
+endobj
+1304 0 obj
+<<
+/Length 1489 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1489 0 obj
+122
+endobj
+1305 0 obj
+<<
+/Length 1490 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1490 0 obj
+120
+endobj
+1306 0 obj
+<<
+/Length 1491 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+»Î£šp0'lmTÛD¯B&.WO.
+endobj
+1491 0 obj
+190
+endobj
+1307 0 obj
+<<
+/Length 1492 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1492 0 obj
+186
+endobj
+1308 0 obj
+<<
+/Length 1493 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1493 0 obj
+202
+endobj
+1309 0 obj
+<<
+/Length 1494 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1494 0 obj
+109
+endobj
+1310 0 obj
+<<
+/Length 1495 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1495 0 obj
+209
+endobj
+1311 0 obj
+<<
+/Length 1496 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1496 0 obj
+164
+endobj
+1312 0 obj
+<<
+/Length 1497 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1497 0 obj
+182
+endobj
+1313 0 obj
+<<
+/Length 1498 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1498 0 obj
+131
+endobj
+1314 0 obj
+<<
+/Length 1499 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1499 0 obj
+187
+endobj
+1315 0 obj
+<<
+/Length 1500 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1500 0 obj
+188
+endobj
+1316 0 obj
+<<
+/Length 1501 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+oò¬ÕPøм`Þ\õåáË×Æí}_õ7nÿŸ¼ö_öÿƒSùÿwÿÿ÷÷ßO &¹í_ï×g¿ºõ6?::»mê†Ý^[O˜$m¼µuõ­­YW Ö:s]1Xpбibaƒ—«'
+endobj
+1501 0 obj
+223
+endobj
+1317 0 obj
+<<
+/Length 1502 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+ÜÌçkª»7oúíóöï­ýÿïÿßÚÿ¿þýG«ÿÿ»þÿÿúûÿ®_ÿ¶þÒö·U72›­_}ëêÛ¨­YW Öh,xÀÄ ÀåêÉ
+endobj
+1502 0 obj
+190
+endobj
+1318 0 obj
+<<
+/Length 1503 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1503 0 obj
+201
+endobj
+1319 0 obj
+<<
+/Length 1504 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1504 0 obj
+174
+endobj
+1320 0 obj
+<<
+/Length 1505 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1505 0 obj
+182
+endobj
+1321 0 obj
+<<
+/Length 1506 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1506 0 obj
+117
+endobj
+1322 0 obj
+<<
+/Length 1507 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1507 0 obj
+126
+endobj
+1323 0 obj
+<<
+/Length 1508 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+5
+?¿üªµ¯µ›¿§ú÷OžõŽf_~ù»ê÷ë·ÿýÿÿßQûwý×»ÿoýºõßõÌÄÖÃÜ]¿~г¿ž ägoØÛ*p¨™•A€‘ËÕ“
+V$endstream
+endobj
+1508 0 obj
+185
+endobj
+1324 0 obj
+<<
+/Length 1509 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+†únúÎÎnú.66úÞ
+º†úÎù9¥¹yÅ@evv\ž.
+ª‡™[$gè TÀËU¯qÙsX9¾|yéå÷µñ¯ÿþ­úÿ¿þÿÿëÿÿý/ýý?únþÖ«mÛÄ$Âl¿ßäu|¿õÚµÙ‰‰k 6$lüX¸\=¹
+endobj
+1509 0 obj
+176
+endobj
+1325 0 obj
+<<
+/Length 1510 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1510 0 obj
+141
+endobj
+1326 0 obj
+<<
+/Length 1511 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1511 0 obj
+103
+endobj
+1327 0 obj
+<<
+/Length 1512 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1512 0 obj
+106
+endobj
+1328 0 obj
+<<
+/Length 1513 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1513 0 obj
+139
+endobj
+1329 0 obj
+<<
+/Length 1514 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1514 0 obj
+114
+endobj
+1330 0 obj
+<<
+/Length 1515 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1515 0 obj
+237
+endobj
+1331 0 obj
+<<
+/Length 1516 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1516 0 obj
+116
+endobj
+1332 0 obj
+<<
+/Length 1517 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1517 0 obj
+122
+endobj
+1333 0 obj
+<<
+/Length 1518 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+†únúÎÎnú.66úÞ
+º†úÎù9¥¹yÅ@evv\ž.
+fÜÿqL
+\®ž\
+endobj
+1518 0 obj
+101
+endobj
+1334 0 obj
+<<
+/Length 1519 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+‘HÎåròäÒ÷ôU()*MÕªÔ÷
+endobj
+1519 0 obj
+168
+endobj
+1335 0 obj
+<<
+/Length 1520 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+÷jª÷–̾üß?ð׿]ÿŸˆùÖÿÿÿD\}ë¿õÿ³ÿ‡]ÿ™[6µ»ïúÖì[[³®®È:Ô&"báÀÈ ÀåêÉ
+endobj
+1520 0 obj
+183
+endobj
+1336 0 obj
+<<
+/Length 1521 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1521 0 obj
+111
+endobj
+1337 0 obj
+<<
+/Length 1522 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1522 0 obj
+161
+endobj
+1338 0 obj
+<<
+/Length 1523 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1523 0 obj
+143
+endobj
+1339 0 obj
+<<
+/Length 1524 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1524 0 obj
+120
+endobj
+1340 0 obj
+<<
+/Length 1525 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1525 0 obj
+140
+endobj
+1341 0 obj
+<<
+/Length 1526 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1526 0 obj
+124
+endobj
+1342 0 obj
+<<
+/Length 1527 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1527 0 obj
+147
+endobj
+1343 0 obj
+<<
+/Length 1528 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1528 0 obj
+142
+endobj
+1344 0 obj
+<<
+/Length 1529 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+\®ž\
+endobj
+1529 0 obj
+134
+endobj
+1345 0 obj
+<<
+/Length 1530 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+pV0ÔwÓwvvÓw °±Ñ÷VÐ5ÔwÎÏ)ÍÍ+*²³ãòtQ0Šoà`hàrõä
+endobj
+1530 0 obj
+102
+endobj
+1346 0 obj
+<<
+/Length 1531 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1531 0 obj
+140
+endobj
+1347 0 obj
+<<
+/Length 1532 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1532 0 obj
+130
+endobj
+1348 0 obj
+<<
+/Length 1533 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1533 0 obj
+124
+endobj
+1349 0 obj
+<<
+/Length 1534 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1534 0 obj
+108
+endobj
+1350 0 obj
+<<
+/Length 1535 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+6p04p¹zr
+endobj
+1535 0 obj
+110
+endobj
+1351 0 obj
+<<
+/Length 1536 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1536 0 obj
+140
+endobj
+1352 0 obj
+<<
+/Length 1537 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1537 0 obj
+157
+endobj
+1353 0 obj
+<<
+/Length 1538 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1538 0 obj
+159
+endobj
+1354 0 obj
+<<
+/Length 1539 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1539 0 obj
+112
+endobj
+1355 0 obj
+<<
+/Length 1540 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1540 0 obj
+162
+endobj
+1356 0 obj
+<<
+/Length 1541 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1541 0 obj
+165
+endobj
+1357 0 obj
+<<
+/Length 1542 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1542 0 obj
+129
+endobj
+1358 0 obj
+<<
+/Length 1543 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1543 0 obj
+133
+endobj
+1359 0 obj
+<<
+/Length 1544 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+øÁÐÀÁåêÉ
+endobj
+1544 0 obj
+103
+endobj
+1360 0 obj
+<<
+/Length 1545 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1545 0 obj
+103
+endobj
+1361 0 obj
+<<
+/Length 1546 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1546 0 obj
+146
+endobj
+1362 0 obj
+<<
+/Length 1547 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1547 0 obj
+148
+endobj
+1363 0 obj
+<<
+/Length 1548 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1548 0 obj
+119
+endobj
+1364 0 obj
+<<
+/Length 1549 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1549 0 obj
+150
+endobj
+1365 0 obj
+<<
+/Length 1550 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1550 0 obj
+158
+endobj
+1366 0 obj
+<<
+/Length 1551 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1551 0 obj
+132
+endobj
+1367 0 obj
+<<
+/Length 1552 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+pV0ÔwÓwvvÓw °±Ñ÷VÐ5ÔwÎÏ)ÍÍ+*²³ãòtQ0“úßÀÁÐÀåêÉ
+endobj
+1552 0 obj
+102
+endobj
+1368 0 obj
+<<
+/Length 1553 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1553 0 obj
+113
+endobj
+1369 0 obj
+<<
+/Length 1554 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1554 0 obj
+107
+endobj
+1370 0 obj
+<<
+/Length 1555 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1555 0 obj
+120
+endobj
+1371 0 obj
+<<
+/Length 1556 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1556 0 obj
+121
+endobj
+1372 0 obj
+<<
+/Length 1557 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1557 0 obj
+147
+endobj
+1373 0 obj
+<<
+/Length 1558 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+;‹endstream
+endobj
+1558 0 obj
+183
+endobj
+1374 0 obj
+<<
+/Length 1559 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1559 0 obj
+109
+endobj
+1375 0 obj
+<<
+/Length 1560 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1560 0 obj
+140
+endobj
+1376 0 obj
+<<
+/Length 1561 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1561 0 obj
+145
+endobj
+1377 0 obj
+<<
+/Length 1562 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1562 0 obj
+150
+endobj
+1378 0 obj
+<<
+/Length 1563 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1563 0 obj
+142
+endobj
+1379 0 obj
+<<
+/Length 1564 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1564 0 obj
+122
+endobj
+1380 0 obj
+<<
+/Length 1565 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1565 0 obj
+116
+endobj
+1381 0 obj
+<<
+/Length 1566 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1566 0 obj
+119
+endobj
+1382 0 obj
+<<
+/Length 1567 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+õ5ñ/¿únoÕ
+/nÖ¦
+endobj
+1567 0 obj
+150
+endobj
+1383 0 obj
+<<
+/Length 1568 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1568 0 obj
+115
+endobj
+1384 0 obj
+<<
+/Length 1569 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1569 0 obj
+105
+endobj
+1385 0 obj
+<<
+/Length 1570 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1570 0 obj
+137
+endobj
+1386 0 obj
+<<
+/Length 1571 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+ü­z}½eãë¨C‡8¸\=¹
+endobj
+1571 0 obj
+128
+endobj
+1387 0 obj
+<<
+/Length 1572 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1572 0 obj
+129
+endobj
+1388 0 obj
+<<
+/Length 1573 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1573 0 obj
+119
+endobj
+1389 0 obj
+<<
+/Length 1574 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1574 0 obj
+157
+endobj
+1390 0 obj
+<<
+/Length 1575 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1575 0 obj
+114
+endobj
+1391 0 obj
+<<
+/Length 1576 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1576 0 obj
+107
+endobj
+1392 0 obj
+<<
+/Length 1577 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1577 0 obj
+160
+endobj
+1393 0 obj
+<<
+/Length 1578 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1578 0 obj
+149
+endobj
+1394 0 obj
+<<
+/Length 1579 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1579 0 obj
+147
+endobj
+1395 0 obj
+<<
+/Length 1580 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1580 0 obj
+108
+endobj
+1396 0 obj
+<<
+/Length 1581 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1581 0 obj
+121
+endobj
+1397 0 obj
+<<
+/Length 1582 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1582 0 obj
+141
+endobj
+1398 0 obj
+<<
+/Length 1583 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1583 0 obj
+153
+endobj
+1399 0 obj
+<<
+/Length 1584 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1584 0 obj
+149
+endobj
+1400 0 obj
+<<
+/Length 1585 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1585 0 obj
+122
+endobj
+1401 0 obj
+<<
+/Length 1586 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1586 0 obj
+169
+endobj
+1402 0 obj
+<<
+/Length 1587 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1587 0 obj
+143
+endobj
+1403 0 obj
+<<
+/Length 1588 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1588 0 obj
+114
+endobj
+1404 0 obj
+<<
+/Length 1589 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1589 0 obj
+148
+endobj
+1405 0 obj
+<<
+/Length 1590 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1590 0 obj
+103
+endobj
+1406 0 obj
+<<
+/Length 1591 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá
+æú@9}§
+endobj
+1591 0 obj
+99
+endobj
+1407 0 obj
+<<
+/Length 1592 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1592 0 obj
+135
+endobj
+1408 0 obj
+<<
+/Length 1593 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1593 0 obj
+146
+endobj
+1409 0 obj
+<<
+/Length 1594 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+%E¥©úá@uú@I}§
+endobj
+1594 0 obj
+130
+endobj
+1410 0 obj
+<<
+/Length 1595 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1595 0 obj
+164
+endobj
+1411 0 obj
+<<
+/Length 1596 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1596 0 obj
+107
+endobj
+1412 0 obj
+<<
+/Length 1597 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1597 0 obj
+139
+endobj
+1413 0 obj
+<<
+/Length 1598 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1598 0 obj
+144
+endobj
+1414 0 obj
+<<
+/Length 1599 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1599 0 obj
+141
+endobj
+1415 0 obj
+<<
+/Length 1600 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1600 0 obj
+101
+endobj
+1416 0 obj
+<<
+/Length 1601 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1601 0 obj
+158
+endobj
+1417 0 obj
+<<
+/Length 1602 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1602 0 obj
+121
+endobj
+1418 0 obj
+<<
+/Length 1603 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1603 0 obj
+118
+endobj
+1419 0 obj
+<<
+/Length 1604 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1604 0 obj
+148
+endobj
+1420 0 obj
+<<
+/Length 1605 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1605 0 obj
+115
+endobj
+1421 0 obj
+<<
+/Length 1606 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1606 0 obj
+146
+endobj
+1422 0 obj
+<<
+/Length 1607 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3P0
+endobj
+1607 0 obj
+120
+endobj
+1423 0 obj
+<<
+/Length 1608 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ32Q0€ÃC.
+endobj
+1608 0 obj
+16
+endobj
+1424 0 obj
+<<
+/Length 1609 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ32U0€ÃC.
+endobj
+1609 0 obj
+16
+endobj
+1425 0 obj
+<<
+/Length 1610 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ32S0€ÃC.
+endobj
+1610 0 obj
+16
+endobj
+1426 0 obj
+<<
+/Length 1611 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ32W0€ÃC.
+endobj
+1611 0 obj
+16
+endobj
+1427 0 obj
+<<
+/Length 1612 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3²P0€ÃC.
+endobj
+1612 0 obj
+16
+endobj
+1428 0 obj
+<<
+/Length 1613 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3²T0€ÃC.
+endobj
+1613 0 obj
+16
+endobj
+1429 0 obj
+<<
+/Length 1614 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36P@ÀC.
+endobj
+1614 0 obj
+15
+endobj
+1430 0 obj
+<<
+/Length 1615 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36T0€ÃC.
+endobj
+1615 0 obj
+16
+endobj
+1431 0 obj
+<<
+/Length 1616 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36R0€ÃC.
+endobj
+1616 0 obj
+16
+endobj
+1432 0 obj
+<<
+/Length 1617 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36V0€ÃC.
+endobj
+1617 0 obj
+16
+endobj
+1433 0 obj
+<<
+/Length 1618 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36Q0€ÃC.
+endobj
+1618 0 obj
+16
+endobj
+1434 0 obj
+<<
+/Length 1619 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36U0€ÃC.
+endobj
+1619 0 obj
+16
+endobj
+1435 0 obj
+<<
+/Length 1620 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36S0€ÃC.
+endobj
+1620 0 obj
+16
+endobj
+1436 0 obj
+<<
+/Length 1621 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ36W0€ÃC.
+endobj
+1621 0 obj
+16
+endobj
+1437 0 obj
+<<
+/Length 1622 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3¶P0€ÃC.
+endobj
+1622 0 obj
+16
+endobj
+1438 0 obj
+<<
+/Length 1623 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3¶T0€ÃC.
+endobj
+1623 0 obj
+16
+endobj
+1439 0 obj
+<<
+/Length 1624 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31T0€ÃC.
+endobj
+1624 0 obj
+16
+endobj
+1440 0 obj
+<<
+/Length 1625 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31R0€ÃC.
+endobj
+1625 0 obj
+16
+endobj
+1441 0 obj
+<<
+/Length 1626 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31V0€ÃC.
+endobj
+1626 0 obj
+16
+endobj
+1442 0 obj
+<<
+/Length 1627 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31U0€ÃC.
+endobj
+1627 0 obj
+16
+endobj
+1443 0 obj
+<<
+/Length 1628 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31S0€ÃC.
+endobj
+1628 0 obj
+16
+endobj
+1444 0 obj
+<<
+/Length 1629 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ31W0€ÃC.
+endobj
+1629 0 obj
+16
+endobj
+1445 0 obj
+<<
+/Length 1630 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3±P0€ÃC.
+endobj
+1630 0 obj
+16
+endobj
+1446 0 obj
+<<
+/Length 1631 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3±T0€ÃC.
+endobj
+1631 0 obj
+16
+endobj
+1447 0 obj
+<<
+/Length 1632 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35P@ÀC.
+endobj
+1632 0 obj
+15
+endobj
+1448 0 obj
+<<
+/Length 1633 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35T0€ÃC.
+endobj
+1633 0 obj
+16
+endobj
+1449 0 obj
+<<
+/Length 1634 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35R0€ÃC.
+endobj
+1634 0 obj
+16
+endobj
+1450 0 obj
+<<
+/Length 1635 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35Q0€ÃC.
+endobj
+1635 0 obj
+16
+endobj
+1451 0 obj
+<<
+/Length 1636 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35S0€ÃC.
+endobj
+1636 0 obj
+16
+endobj
+1452 0 obj
+<<
+/Length 1637 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ35W0€ÃC.
+endobj
+1637 0 obj
+16
+endobj
+1453 0 obj
+<<
+/Length 1638 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3µP0€ÃC.
+endobj
+1638 0 obj
+16
+endobj
+1454 0 obj
+<<
+/Length 1639 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3µT0€ÃC.
+endobj
+1639 0 obj
+16
+endobj
+1455 0 obj
+<<
+/Length 1640 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ33P@ÀC.
+endobj
+1640 0 obj
+15
+endobj
+1456 0 obj
+<<
+/Length 1641 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ33V0€ÃC.
+endobj
+1641 0 obj
+16
+endobj
+1457 0 obj
+<<
+/Length 1642 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ33Q0€ÃC.
+endobj
+1642 0 obj
+16
+endobj
+1458 0 obj
+<<
+/Length 1643 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ33U0€ÃC.
+endobj
+1643 0 obj
+16
+endobj
+1459 0 obj
+<<
+/Length 1644 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3³P0€ÃC.
+endobj
+1644 0 obj
+16
+endobj
+1460 0 obj
+<<
+/Length 1645 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ37T0€ÃC.
+endobj
+1645 0 obj
+16
+endobj
+1461 0 obj
+<<
+/Length 1646 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ37R0€ÃC.
+endobj
+1646 0 obj
+16
+endobj
+1462 0 obj
+<<
+/Length 1647 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ37V0€ÃC.
+endobj
+1647 0 obj
+16
+endobj
+1463 0 obj
+<<
+/Length 1648 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ37S0€ÃC.
+endobj
+1648 0 obj
+16
+endobj
+1464 0 obj
+<<
+/Length 1649 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ37W0€ÃC.
+endobj
+1649 0 obj
+16
+endobj
+1465 0 obj
+<<
+/Length 1650 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ3·T0€ÃC.
+endobj
+1650 0 obj
+16
+endobj
+1466 0 obj
+<<
+/Length 1651 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³0Q0€ÃC.
+endobj
+1651 0 obj
+16
+endobj
+1467 0 obj
+<<
+/Length 1652 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³0U0€ÃC.
+endobj
+1652 0 obj
+16
+endobj
+1468 0 obj
+<<
+/Length 1653 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³°T0€ÃC.
+endobj
+1653 0 obj
+16
+endobj
+1469 0 obj
+<<
+/Length 1654 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³4P@ÀC.
+endobj
+1654 0 obj
+15
+endobj
+1470 0 obj
+<<
+/Length 1655 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³4R0€ÃC.
+endobj
+1655 0 obj
+16
+endobj
+1471 0 obj
+<<
+/Length 1656 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³4U0€ÃC.
+endobj
+1656 0 obj
+16
+endobj
+1472 0 obj
+<<
+/Length 1657 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ³4W0€ÃC.
+endobj
+1657 0 obj
+16
+endobj
+1282 0 obj <<
+/XObject << /Im19 1284 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1277 0 obj <<
+/D [1279 0 R /XYZ 72 786.278 null]
+>> endobj
+1265 0 obj <<
+/D [1279 0 R /XYZ 120.194 102.296 null]
+>> endobj
+1278 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R >>
+/XObject << /Fm19 1266 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1661 0 obj <<
+/Length 1662 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZKoÜȾû ¿@·P€‡Ë~ð mlÊ®½‹X›²A {4Œ8ä,’µ¿>U]ÕMrDYNN6ˆÝÍê«ëñUÕˆ³þÄY*ÏÒ, ešm¯ÄýݹÖ0F”:Va¬±÷áÆQnTfIü½HB•(Z÷ûëWß]*u&¢0ò³ë¥¹.ÿüáüß×{õöÚO‹CÇ/ŸÉôlq™®,nš²*Üá»KÏ”†³i¦úóùFå:x3vUs{¾‘JUS UQW¿CÕ646ì 6T°/ºòá\fAÑñHÕãSÛs™{³Å—wøÏ”ôb×vDÙ™cgzÓàËÁ/®‚vGϲ
+^“ßÌ¡íÏ3„ø!À}:ûFàmäö ®`¶R"ø¾º¥Æ[úð’¹=Ž½)_/ÌQ
+r"_dYæ©c™[³76€9íÊÊZ„2NyŠXY3•Êø}Ñ”¸T´Àèî¡ê ­\ 4L[J·¥XßRHf©[3ZÙ3Séή¬Âüÿ‹1¥)©] |WIÊ|qW½¹G)1]Q#-ˆAu0v‰<xØ›† ÷<ëjË‚¢T€ ­|uš…IÎçD]ݬZ†Êy5ô¦ÞÑ<ÏØÔ»kZÎ>ÜÞPãCm»Òt| ^åWñÞ}@I,B„‘H‰±Ý¼n+§*°j„“ÂS3°‘$•›D…ÌÈ×olŽ—m3\t]ñ¸&usƒ£µ®÷$::(ˆGÐxàaEÖ¬PÎí“Dž°…½ êÿUÐݸÆŽd X»oI…t0XrZ‡ÜÎÙ™®#±mÕ¯Ù†¿a.Ì—?½¿þùïWÿ¸¸~»òÑ LPN,«fMpX
+›D:¥ >=«“t"æOÛèFÚn
+mv½3Bû orçè-O*j8ÎkaÝŒ‘ÛI`­OÅv¨WŽ+u¦‘â#4íÇHqÿö\9n*ÂD»ãN Žh)IžÙEå0EÍuÞYŹ•sP{’öšÆ^¦¡sãE:¦©‹îÖÞEœuAŠ/*¼ä8emà òÎ$= Yцù‡âî|Z{ìÝÔ/ßÞ‚¹­©³cÙêí*‰‰¸£ù´±-.¹8kcy‘“|JvèYJ=KLÊ™Db¾é¯6‹éja¸išÚç̶ú5Ú”¼ÙÕÀÓ™þ¡«†ÁðvÕ°§ÖÁ œÝX¯þþ<N@†F«Ú»"Zã¤'fPÏÚü*ÈéiûHÐÒ›9nÙh8©,,]5¥ùDSq±ÝšÞÞTüq‹“¥ËƒÇ©Ía¦á:÷ÀËú5V
+K¤GLtAl;7×#9+”¶Õ8¢Ù,iY˜Kµ`ÛÜ&9t6á± ¡ÀKoráPÖ¾æ}†~;MŸ£÷ÕÓ^
+x,ºÞ|,v‡µˆB+«lŽ…ÍÍÝY”{Ëg|ØW6U·_¨1ébžœÉ37 Ø’cð$òdÁý` ÒiÆ> Eç½­G²ÚiòL(,ÒPë쌅cXœó°ß¾8é| À'Z㇡£Ì<;ŒéœòÙ¯z¹-lx”¢¡²6ŸÑ´ìÍ€Q¶ÀM þO}A‹¹y81l=~ƒ„ε.²#¹ËŽLŽì¶" Êßoâãš–«(›% ßÿòã/C‰o?Muýx4âótš¦J€ƒˆÏ³OÍ“æhOKví8@‡XëÑM1>—ÙDw½ÌIa+h^Õ€¨8Ó’õ¨=4N%E“VþV²R.…‰²'ÁÏ6Éض]uhìd{•§¸=>PÃã8øÙZW›gÁ_÷`fDâýÜ7¬ÀÈ6 ^£YÁ‡ñ¦kÇ¡jLoGDð*L? ¯e ¬mHâ……ÆoŸïŠc d°Æ •$ŒÐ61„CoÊgZb>­"Ö†w¤”€J4ߎ•.Ô€Q4«Ø™š{©ºÙÄ\Kâ y~ÞÝ[yß·Íö ¼},5ª“JWs½)þ”s½© Ú£•„šz[uÜS`ê¶$ ¬€€Làô…"™jZ*OÈÊ™×çœùÊuÌ™—˜ 1:Y/Ä@(ì½ï—XÖ×´(¦Ä´oEp™>Ak‡—õä•‘ª4»b¬GbhÔy—?ùµø+ˆ@zÊ@â8†[X?^o&h•QA-$…8™Ù4>&φ=Jˉ 3ÓŽ6C›â—RÍqš{ìÌ}ÕŽ½M… ÷°}rbš®œ6ÙuíÞ -¸œôÔ‘ö¢áÒ. Ð2Zq·ZŠ ¯G<R8Ê¢ï«[V [x.ËÎ&õ°ƒðÒÒƒ½rUR÷ä»´ÈçU¤èÛƒñnD2‚Z§“BéªQI“0…èðë7*÷‡˜¦X³)QåbAÍQ+Ø;Zzâ>[pŸ²IÆÆ}Õ #êpeŠ)R¬Oÿ6VÉ›ôZ¶˜ë̹}üÒÔÕʈ9¡k»ê¶Be#óBÇž ^W
+:t±ˆZ/ž†ÐÑ |ŒÁð Ðcæ¶Á¬ŽYáƒgAøO´
+ôïVö1§g1·%ÕîiÝ¢±õè½9‚iÝV”òO€®¡TS5ð³§çÏãˆs˜1ÎÖP ÐföqP°Ð*> ì];ªe<Roâ¬0eD·Á<õc¬ˆLžé¥sÿLÝ8sÇ9¥ÙWiŠÛ±%©R°ð÷ÚþâŒ&^býHƒ~4^Û`bOkzë ‡vœ¯b³tz&¸¸ŸG:0“ñ å%éÄ‹´ä,¿‚BÚ'´>Rp´#}MšöZ°áü1”z[þNõÌÔX7Ê¿ AB¤”‘ŽÕ©ÓÚÜÜÕóT9ý~
+ÿKÊ~ŠY55³™òŸ‘K²
+6'›0ýtDx˜Ðg–_„‘`
+nMc:ÖcìÖǽKQÔ£û•Rëê Ey
+Î×`¯¡²ª"¢{Óh¥Ã#ÅðõìHéV­¹àëò~Øš@ œÎb­Ø~'¾GÍkO‚).…ô78«8`
+endobj
+1662 0 obj
+3495
+endobj
+1660 0 obj <<
+/Type /Page
+/Contents 1661 0 R
+/Resources 1659 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+/Annots [ 1663 0 R ]
+>> endobj
+1663 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [482.362 133.989 496.302 144.898]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.3) >>
+>> endobj
+1658 0 obj <<
+/D [1660 0 R /XYZ 72 786.278 null]
+>> endobj
+1659 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1668 0 obj <<
+/Length 1669 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZK䶾;‡ü…/Ö
+¹÷z‘
+¸6”¹§rd7k1“€#,1l³ÌÊfQ­ç9ö5›O®
+ñ žË㑬¶ã&µ5 ®Ù¸¥„âz0ËÝ·¾›d K/,eB;_Hylƒ¿"Ã!7\EN’ÖN¢¡þÍíjÐ#_”˜=èTL]cÁ¥Z¦;ön˜qh&GÎ83õ}ˆÍy„
+§A=·àO´L\ÊôÅ0¾Â!Fè÷ã Sò=ï6œ
+µ%§[±ïí•/}˶cuÞv€J'çs*?mœžžÑáÜ ¦9ì"«åPéG`PwÊî´é´ŸTØT“"ž$œé¹á-i©;b!FÀ¿å^2L)à}‡Üx@t9M&ZÄ<rÅ‹¬HÉErƒSqÔ°pf-aýIþž2°ýúЖƒÖtU-taŠ–ƒÂÊ/4kŒ6‚Ñæ­ã4Ì’G™§'³D|ù- u[ºW+eQ˜EæùKÐIÖ Cl
+Û¢hF§(»¢å¿;5\g×
+KÐÅ–tÜ!dïcsl÷“¶®tÃPô\Å«Ån/NÒ:Kvâùâ/;êP Ùpmé„Qé÷âtiˆ²…¸$XW'2}€_5á]$g‹ˆ·D4ð¨Qv»SS1Ù­w—p¶Þ:v„p7r@†´èÆíòÂ,^8åÓ¦
+nOã24ƒÞ )–aÙ°qÓ$=Y*Ê%t>-Pœå¸¶¸W$×4ÜãÞ‰"—£ä:þ%ç›è/œgìV<Üg5^_çqÐ-“ß¹±o˜Êr¼P:Ï_@KU> áÆ&¿D„Š}6Ìñ¹nËxcæ%H°‚ÿ-HIý/I¦©¼² ·:8s^°‰(ÌZg‹
+T7šž'N­WðþK@ö­7Ê,Ì”¹ø’m>1çÀƒ9`K1òÌ_Nüm0
+endobj
+1669 0 obj
+3521
+endobj
+1667 0 obj <<
+/Type /Page
+/Contents 1668 0 R
+/Resources 1666 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+/Annots [ 1670 0 R 1671 0 R 1672 0 R 1673 0 R ]
+>> endobj
+1670 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [121.151 544.648 140.545 555.557]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.15) >>
+>> endobj
+1671 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [504.329 237.7 518.269 248.609]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.5) >>
+>> endobj
+1672 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [450.459 147.851 455.913 157.548]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7) >>
+>> endobj
+1673 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [451.036 134.302 464.975 143.999]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.7) >>
+>> endobj
+1665 0 obj <<
+/D [1667 0 R /XYZ 72 786.278 null]
+>> endobj
+345 0 obj <<
+/D [1667 0 R /XYZ 72 182.393 null]
+>> endobj
+1666 0 obj <<
+/Font << /F33 497 0 R /F27 394 0 R /F15 393 0 R /F37 380 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1677 0 obj <<
+/Length 1678 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ•UÉnÛ0½ç+t¤€Šw±·©n§úÖ-1•Ù2$9Aúõ!iÇvÜ…³ðqö¡XVÂÇ2Ã3SiÊM•Õë+–Åï>ÛsŸ@‘R ª$J¯
+¡h¥âß-¯®Le¬¤¶´Ùò.`—Í7²l}^H©I·ÉyEf?n\E–¨xÚæ7$X$›]ÄLó¸«çÝè§xÒ}O\ŸÌÑVE|Ý}/™ôÍÁq¼ÅùÜ«!wÄfá$
+šµ©û]ãÒ¥ø*C¥Þ»œYKø2®Br ¼:)^·9›½i{ÐÀTÔó0>]ðg%Õú¿»N#@€%F-3ÄÄ$¼Ú ^[nŠ
+endobj
+1678 0 obj
+745
+endobj
+1676 0 obj <<
+/Type /Page
+/Contents 1677 0 R
+/Resources 1675 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+>> endobj
+1674 0 obj <<
+/D [1676 0 R /XYZ 72 786.278 null]
+>> endobj
+349 0 obj <<
+/D [1676 0 R /XYZ 72 664.978 null]
+>> endobj
+1675 0 obj <<
+/Font << /F15 393 0 R /F27 394 0 R /F37 380 0 R /F30 512 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1685 0 obj <<
+/Length 1686 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ½]oã¸ñ=¿ÂèË)ÀZ'~H¢î¥Ø½vÑí¡(® pÝ>(‘%Ÿ$_6‡þøÎeÙq6¸¶(Xäp8œï2j•ÁŸZ•zUº"Õ¥[mö7jÅ«8ú`Œis“ægo ®#æZÛ´ÊŠ×ðmž™]­•«Ò</V
+°á“¥¦r«Á¯¶3†ÎtZ9'KʤÖhƘ™siUÁ‰ªª`Pá‘în¾ý¨ò•Ê€‰ju·%Ô»æÉûÛÞýùæw7J¥ªD>zu…úڤƕ+ù¼ä/žtò¢bͬ~Œœâ ?ϸøöã^g«?ô7?Þ¬~¼Ah‹¬Zkð <Ógñú«ŒÎŒT:-tÉG¼®€³²´TÅoPÀ%_'(•ÿf¨Yk]ØÔ
+$²Î¢D–%b¬02Ú¾ÇðË-Ÿ¶JîÛzƒ"<ò:óø&yv"¾ë[?2©zð<Ø'Üãög!ïëndÂÌa‰
+Êü”!Gdä…9±1àlT SírЛ¤.œ0tØ¡Žq„a†z›xºíÊp
+ .½Ä¦'To•ì~Å¡~Â’íÛ¢ŒnY E¦#%?ƒ#ÊfÊŒ£MO:0´)=¯ÍÁ w%ˆù‰?[ß
+  bfD<#ç¹MþÚ ”Á‹È`°
+›c[ÜHðlêãHd!ê #a/©9$Z³w-$ãʱ9ÞcÁЕšÝKWЮ°à8ƒž€Ú11;wa’uÑjdz§Ð`‡Ã=)ÍQ+»@L¾7ž!oXl&?‡ìÈ\,¼Ñá~Ò}31ª0{¥-9Äê]ÙðÛ¶”åËäSÇû¤ÈwØ]±0
+W
+ëŸz¹ª•s2x‡¤Kî`X˜……ÅTŽ½‡4l#¡º3»Ø4Æ *4s†[·Çv¾ò@Íe·ÔÍ›ì{(~‹Ø•Âòû¦?¥“{Ù1<t¯v Ñï°y.•ŠÛ5Y‡H×èE@ž-hWÁ¶Å]ó…ÆÜ-õÐS°ëtÍá óSÅsòÔ”)2zN@`ö.ÓœMé–¨‡@¦¾„ýõŽ[2ºÃ2rð¾4ûËì."ÞÚ8Äq8Wè7%PR©}%¾ÂU˜øêR¥Z¾þ¤J.@ï¥Íw¯Üx²4¯¤'%suwš
+»%åIj[ïyÃ⥟Åcñʈãøf¬åU[çñ™7.žñÍ¢[_¼êÍÒÙ2U&ëYOk•U¼e–Ê^¤NµÎ_÷Õ‹VUendstream
+endobj
+1686 0 obj
+2672
+endobj
+1684 0 obj <<
+/Type /Page
+/Contents 1685 0 R
+/Resources 1683 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+/Annots [ 1687 0 R ]
+>> endobj
+1680 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 280.999 400.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1688 0 R
+/Length 1689 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1689 0 obj
+30
+endobj
+1690 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 280 400]
+/Resources <<
+/ProcSet [ /PDF ]
+>>
+/Length 1691 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝVMnõ6 Ü¿Sø‚Hê‡<F‘eÑU
+à·èª×ïP²d?Ûºþ
+[(³ôAE|ÒósÁžw·¢ìw›8£†ž²¬ÖÉÔu4ñV÷ŽåÊ?¸.©o[²–ÆÀs+tHÀ¤8Ï+Õ‚÷
+z(WìýâŒl‡æ´#F›õÉÓ܇‚e´ ª
+:Î%œYk &VŒQÀN ':¤éì© §V'‰“€À8¦ÄŽ.•rSö–ðp®Øûeê±³Ï-è«nœè
+5eŠ8Gv¦Z çî©(ªb ÂòtL>Ê]éæ:VèJÙ‰ü‰:0>#Û´1§C®mÒÕ‹Íúài ˜aEù ù A ‰Ú:ÖgåØ¡ÜĹ!‡r›C¹ )ìÈúäÉ : ó@8A´Ì–ŒL*Ó\A9©öü\0ÜÊçÐ Ù0c DŸ6룧´ ŽT<]Š× ÄA φ½ÿµ7ú‚ò¹
+endobj
+1691 0 obj
+1151
+endobj
+1688 0 obj <<
+/XObject << /Im20 1690 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1681 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 280.999 400.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1692 0 R
+/Length 1693 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1693 0 obj
+30
+endobj
+1694 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 280 400]
+/Resources <<
+/ProcSet [ /PDF ]
+>>
+/Length 1695 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíXK®$'Ü÷)ꈄäw‚YÛ^Ž¼zVK–^-¼òõUPÝofkË3Oj•$ä‡Èkd³üü~쿲ýùTŒ ²¹MŒiÛ/${ã|Ø$“¥l®4 Ñãû1þxˆw&fIÈ¢Aæ50ãD‚5¶ä­kð˾Ï8wqJ¤ECZ×xþ§mû¾9Ë¿ßÌ?É¿]o·Ö(ˆXÐ&ãÓöùø ÓÚÅ„ås—w"X¿ÖŠñTXÔp[ž–ôáÔ-ÐÞ$™ÀçC\´ƒÄç5%Ù<ïZ¢:#š¯•-LKp¡-ÞDßÇçÖëVlïH,
+ÎhX •’6§°Cºáèźœè’#À´a¸\èœ6ày×’\€§´/œ¿%&KÎçpʉÚOÀÙàMrÈ k4ÀõQÔ$¹2¼ § oЕásSݹZ$† ÷¹ÏZ
+vCGN;K³yŽÂœ oCôùpŸpÜ£›æ®X7Ûã ¹{ÒÌ_!- Rå
+Gþt&ñ¬»lP(ÿqi±bû…AÉÂF£ª”ç+LâV€'äZt_eÅ"¹7À–
+@£½@§ŒTÀ"'R9²8 §•3š%_P€á.‰ÍƒÑ„T¹çç–wàX‘-ÀƒP-
+Öƒ^fö™¨òFL7{M“ïæÕŽHßò_ý\7éÛ ‘ o8Ù­ZID Tˆdª¤‘¦QÔ·âa™mÉäQ˜±½Í‹ mã«c:!‡ÑÑ …œÅ:(§ ™ŒêTƒÅMƒ$‘xDwÖM)[/t%Â+<´<(È4«›®qÍêVhgÌ5- ‰8Ä<HPªl²p Øè&”£_eSX]¸`Õ hº¹H…¡ICîá<£74®!êIxNØØû®)Ó>hR$¥Åú!SÛ8œ¼Úp⣱,Z)Ÿ@Æ!Hµø¸<á| gjdI _%Å*Šr;3Nj5¢4F_±&ìaªº.5b‚íêIàh
+¥"ƒÂ»€`ϵ& ëc *-þ–w­µM•ÿ”Ù<[ßP»ü>øoÅö qH.ìˆZÇ£ ¾­
+{:Ðü†R ¥åK'.¢{E<Nõ¡¹gÁš”‚½ˆHq]jÄèÄR¹ ] Ï×ÞüÌÖ{$— !ªk¨ÜxÓ
+FÅéÔMª
+œˆ3R˜;'3-Dõ’ oûJ[?¦ÃÛLìÆøÿ%á_jÛ‹wƒŸ¹ ™ÕYê’Á2 aÇ?ÉðåB-ÿƇˆ»î†8fwd¹a>*ÊuQkÃé¢Ö ž?ôë׌ÓJ Ö|7]lç5uB>/BÛ–‘IæùJÓ°ÉNüµØ†ð*Š·ÿ^+ŽñT?ŒÕ ý³ 9ýÄû‹Ê5­:¹ä½—秀û »»àxøgè’©ýŽ»‚®I§ªj^¥Æ]¯ØÚKžHŽ(`Pe>Ô‹`èÁ~9 Ãå0Ô6öñ…•ç#Ü™—Œ>+Ñ‚!ÁÐâÈç%pñiHL‹Ì󅦎ÄÀTe3·µ‹™ö‹ÙG¿¬épYc‡˜Š¤UÞ˜„/VÈ Þ‡ ;Æs‡Ò°á¥&ˆo ÂùÜuÊ o5휺ù±æÒį¼Áë'˜ÅK(K—Ð:ØR È•£cZ0ö§0{(«/€mq…
+©§ÓQƒê
+endobj
+1695 0 obj
+1709
+endobj
+1692 0 obj <<
+/XObject << /Im21 1694 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1687 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [253.501 94.919 258.955 109.148]
+/Subtype /Link
+/A << /S /GoTo /D (figure.8) >>
+>> endobj
+1682 0 obj <<
+/D [1684 0 R /XYZ 72 786.278 null]
+>> endobj
+1679 0 obj <<
+/D [1684 0 R /XYZ 124.505 518.117 null]
+>> endobj
+353 0 obj <<
+/D [1684 0 R /XYZ 72 440.858 null]
+>> endobj
+357 0 obj <<
+/D [1684 0 R /XYZ 72 184.923 null]
+>> endobj
+1683 0 obj <<
+/Font << /F15 393 0 R /F25 380 0 R /F27 394 0 R /F39 496 0 R /F37 380 0 R >>
+/XObject << /Fm20 1680 0 R /Fm21 1681 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1702 0 obj <<
+/Length 1703 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ½YÝã¶ß¿ÂÈKµÀY'RE(Š\šÒ´E’.‡¦Z›»VÖ–ö$ù6Wäï|Q’¿Ö½¢)ü Š‡ÃùøÍX-2ø©E©¥³©.Ýbµ»Q þ=-âè[˜cJSäiaðí
+á2R.µI}f/Ñ›"µ™Y,•óiQØ…jxdiîÝ¢ ‹‡‘Bg:õÎÉ'•§&×L1
+çRïaGå= <nùîîæí{U,TBøÅÝ‘Þ­ÿ‘|yûÏ»?ß|}w£TªJ”¸û3Ü—yš»r!SùâîÀ§°ž5³ø
+:
+âujuÉ[\VÀ»QYZ*û
+8–kR€RÅg+ °ÔÖ¤90_ÂöÞ8±¶³›M´&Oua_?ëûúqß…Ûe®³Äÿ>Ü”`rùLáÇ–Ç߯*¼€ýÌ5uÿïí­H³«—üÕ¦êªÕ:<»J~R¹¾`=<tíŽgÚæVûdà·¯ÚÝóVüµ½]ê2Y‡®á?´»ªIo—ÆdÉÝ&0uÛÕuSm™ä¹6<ª{þÞoÚ[í’—†_ëÕ°XZ›fŠî¹0ž$­€ Ï“aS¯pÁ¾êd]õ›°æq?Ü‚<Ÿ¶d0É×QnäkxÜ8‡¥sÀI
+ÐåCè(@á[ÕãÓ’à§å\j 1 Ì)¨9= ÏtêW€mW²„N‹ÛœgŸÜ´’I^ç^ëGî¨С`¦£ø¦Á›Êr…-ÓÒµ"ž{‘Ý·¯D2w̱HMQ\.(r
+ÆÖÇ;­e._ñè¡í¦ §ÁA¸—<æTꕺ‚˜#Þk¿€ -FÌfí܉¬‰N#Š$ð½ Ï0‚ç‘Øa“#Øã•Áxµï>R|—Å/›
+äɹƉÆζ¡\kʉÏÌÓPô
+#É’—66\qÏNÂ/byëôŒ3ÞmbUG?<tO¾Ü9`=ŒYŒacAš D‡çùij´9Àd»å´ÿ/ÿÌÄs™Ó›È J/[^îðçëý¨ÏŠÏì|FvúÚU—w ­µã¦ÅÌ
+ K(7„'‡Ø‚Ã.2Z-Ï8gË
+N,U¾ü÷d¡öÕW½œk´˜`€E aRržüˆ9[´ ¡{7R÷1ù¡ú0û‰Y•Ù¡úO³v™¥Eì|Çͬë+iç@Õ÷÷€³Èd8—±UV¦.7óò…Ê:´Klä*P!cüÔóUâ,&ÕlØg4>ƒW@„=B”àÄßÈ\ÝG¦}Ë£öžKÏvß¿‘¸RBÕ¦ÌQÁNu2(”$ V-)‡ýãœ+’°~ G
+ZÃɦe4”Q(ƒ6tš€ä˜?FX‰d”#`‚ÿP5«Ø›Èfr£¤&‹ÍÄ2”?œóiLÅÉkf[ïva-€D;˜JųñIøE3®rž{îiby XÈ^žx „¸Y”Z>ï¿j©Y,qy•Ln“¿Yµïù¹Ô#”6’t«ÚýÃ|Vüq¬UE
+ë”™”ÚMu”nåAéVÎer\+IU2ñtÇ<¹Ê)ìDvŽ×‹ü=´9sD‚F>Ÿ*z|E€9lÚG„/½üÛâã=ùÙUüäáªæ1Œû™‰7Ó’s1‚(¨¾sX߉R Á§Ÿ9@Îw~ÅSwÅSÜä)Ô @P~úßÄ”¦=ÖöÚŸZ+¨§í5øà‹“.a®S­_)®þ YDEendstream
+endobj
+1703 0 obj
+2719
+endobj
+1701 0 obj <<
+/Type /Page
+/Contents 1702 0 R
+/Resources 1700 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+/Annots [ 1704 0 R 1705 0 R ]
+>> endobj
+1697 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 280.999 400.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1706 0 R
+/Length 1707 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1707 0 obj
+30
+endobj
+1708 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 280 400]
+/Resources <<
+/ProcSet [ /PDF ]
+>>
+/Length 1709 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíX9Î=Íû>å}91"¢FHHD\Ÿ*¯åêe†ôÃ'üæ½ry©Å£¤
+ÿ·ÏýØ~nZüØ´MÒ‡(Lò2j'ŽXe¤IFh㥶^X]ZµïÛxß²–9';ˆb¡ûû6¥vAt Ưsôñ¾u/£ûÝ,ðuìÛ÷zm_„Qø÷óÛæįmØ«Í «ÁnÔÒ:ñßöÎühµÂ¿ªU åLª5IºT´ªh猜û›”—Á-ªë9µÌ­Ò"œ¹ î£LM„]ZˆD GhíâQƒÈŠ éìÒÊ!»KM?ŸÌ…v.ˆcà—²ÀÏ ëäãL•9Ëž6‹1‰69°j6½§¬»{5UÉÁ¦Õô¥[…é„IY¸nÑr YF&a”’öúºsαÅkú€2XL¬ç´Ô]TIãþÚ²GûÃn®Ìc Ī IÂ7èPÅâÀŽ‰ðD]çÕ˼À™T;ÔcGËEá1{pαùì¤ o$F$ʹ ÇkéÔsòàœ©ÊhÎ׈àµíeV±5– / ò¥R˜Ñ1â—›À0صtD•á6d×JKƒx×ycµÂ°c Újø|ŒaƤÚ
+ ëœóV®Îƒ‹zµ}íc¢VÃ^­3rŒ²æÊO~1Q)U’Ìb»a“屜㺼 2xáÚ-Ö6–ÓìãzÂ+VrdÆ]ª–S`5ŽqN˜jrµÂ0’Û_Æ/g^÷Øjñ鮸?K?°VäBWr2„bЮ§²›bǘDû´œ3U}ËJ‰da)ˆºhE†¬ª”Ö
+ÃŽ‰¼ZƤE´ #,¡hÝÄÆBé©æ®uZˆDI}J'ÏÓÙós"9­¤!=åUÛ+6YÁz™`Ò
+›rÓ´3t{*Kçð2À¢6A&‰p#­…6$ã3Ÿ©-1´ê÷ígΗôÝ "ÝÎÓïI£ÝéÏï‹“j:±™9)ë.+ŸU¯_bœIµ˜1Í’Ñ;FŸF“uûhªù<›ªÖ -YÃ0÷¼*Ï1Æ!ª×ež1éCœhFXyƒsÈ.¿®çŒyÝ \·÷­ÀÉÙ¥ý8ëš´øÿW¯¿tmïýÆe.û×?Œ‰Çˆ~ïG˜÷²é]îôו„°€Å{XqèvE‚—¸ýºì-Ú^m;š ½°86YË»˜aÄVÆBà]lpa”f9Ï.¬—.¬a˜mi‡ª5’ê®÷qŒû¼;i6§/o¶¤ÖL/oÆ›,™KûÒ1[ºÉù¾¨ÃåyQ!rƒ*Ї)áI¬¹­>.¹ü¿Ž“Ûotw¯ôendstream
+endobj
+1709 0 obj
+1155
+endobj
+1706 0 obj <<
+/XObject << /Im22 1708 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1698 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 280.999 400.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1710 0 R
+/Length 1711 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1711 0 obj
+30
+endobj
+1712 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 280 400]
+/Resources <<
+/ProcSet [ /PDF ]
+>>
+/Length 1713 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíX¹Ž1 íç+òQîã ¨Q BBb
+*~{rÙžìj·Á"­òüÆqâ3k´Uúïó:~Vý8¬/:¦¬\‰:Û ®‰xã´+NYµõQyÛÖty_ŸGµºÖâ'’‘@4ŒõØã<&’ª¶!©¡ÁE¾ÇXŸÇ°b2†Ý]ƒ<Çy|ÿ·Ï¦>_”3øÿ+8ôÛ1õÎÓÖˆ· 7[íƒúy|>Ìý]û"¨ßýÊÊýîf»ÉàF‹‰:ÆÆ=P·”!;€®šC„³ŒÛ Ñâfø²Øœ‰â=Û»Cä4”47ç2rS„=¶—2Ê^ÆJ ,0ø•±¦B¶Ø>תKâ d„]‚ƒiº¶ìd,áÿÅ..¥0ò0àeªº~ Œ-1d9]¤X1F{€Rv¹æ–ÂðO'¯’ËÍKÉj n’.ïÌß·p²â²ëH˜:æFŠ nÝ°<±k! ö6<D¥Œ°EÊž½•"»z®§mŽJÙuÄ´KÛ"Â]Æ
+8Ñê`ö)*e‹]QMl1*1ª3êj æY,¸QAÖic°&bœæ¹F?J î%ç ùª‚g«ƒ °Ú!Þ×mßÜ´욈õ~‹¬2ÊN›=_†•ã!qÖ¬,\†çˆ`Œeìi!ÛÂ=Ý£¬uªi¶1w‚3[¬ˆMOCÒ)ªÐcÐú|{h¬›×8v×¥ŠçŸ_õšTR­y®kÁä¯M‹ÀHåÜä™”½Ô²êÓ‡W›"yނ;¡Þu(Ù0ŠÊ£ ùj“dR¶Øã:îæ"0Â2%Ù«
+ͧ¼F\îkꮆE¼èd‹®a"K0¸)f¯s s=ÂäÖ"°k!»$2š$xFX.CSÎD#!3å®Ñ‰—î^6–3Ŷvd”¦“c‹•|Ô6KÐËÄñÝ⬊cM«âÀ@ ôGËD’‡cYt)ä×ZÒ¢(±k"Û6&d„Mb^b£Ù8ÆšDÈ®5àŠ<
+³éå›æÀ€…mǹý´)d„Mÿ´@Ȩ½dL:p
+8,FN!ƒiÇTºžGr;C<y ¼â«kCŒtÜ‘²5¼‘éQ@„ù0Jq24šœƒ¼µ¥ÄV¢,YûžìÝ+@Ê(+‘c•r`tX_¬Ç#h²×Ó`±  ›ŒøÃZ–еû‡€ö®ù }´‘¨am²SÊÈm²SÊ^ꉣý¾Ü …)›öûü¶oN[ãÿ¿züg{”ûWÿÖÏ¿Ý<öÎè5Kßö¨[Õ{©gú†/ø°HXð±Ë«”@K@‹p®P²½œû–ÃÚ ß´F?›³e,‰-{Ý ŒèªØ$ ¼îL¹{„¬kŽék6Çt ‹œ¿G®ùUÁô¾ó\}O2¦-[Þ8̽oàd¯$Ž-VÄ
+βñîÚÊßóØšºÛ’ Ý "Ô€±,·(Š×¸6rüßçÉÇã"èJSendstream
+endobj
+1713 0 obj
+1142
+endobj
+1710 0 obj <<
+/XObject << /Im23 1712 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1704 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [327.734 373.331 333.189 387.56]
+/Subtype /Link
+/A << /S /GoTo /D (figure.8) >>
+>> endobj
+1705 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [290.029 292.036 295.484 306.265]
+/Subtype /Link
+/A << /S /GoTo /D (figure.9) >>
+>> endobj
+1699 0 obj <<
+/D [1701 0 R /XYZ 72 786.278 null]
+>> endobj
+1696 0 obj <<
+/D [1701 0 R /XYZ 119.553 518.117 null]
+>> endobj
+361 0 obj <<
+/D [1701 0 R /XYZ 72 169.644 null]
+>> endobj
+1700 0 obj <<
+/Font << /F15 393 0 R /F39 496 0 R /F37 380 0 R /F30 512 0 R >>
+/XObject << /Fm22 1697 0 R /Fm23 1698 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1719 0 obj <<
+/Length 1720 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕXK³£¶ÞŸMþ»‹«Æ=Pvs’LU’UªÎ.¹ °­ ñLùíéV 6cŸ;¹›”«ŒZ-uë믱 † 4tª"®Ó ?>±€~‚±õ ô‘¤LD”H|{ ¸%·\F&V䙌”ÁV$2bF£xð1ˆ#íÆÇ'ô~¼Lñß¾;rüÐ<ýúüú´Å‘0©ß/è­-ƒÝ´ÃQ’«HJÔôüÊX°vl‚—“|)~ ßÙýЖ›-OuÈâï6[ÉYø}Sw};ä½mjjvô<emVUeEoÏ埶l±m`¤?`K…]¹?–õ†«°ï"Th—ƒ[" ›ÖîmU$™íž†~Ðvôì öžýÚÖ?‹¬;”Åæ¿/?ÃÞ· Í7Ά®ßp~®@`"Ìê‚ýÁõÈ°²ûöÑÓë¾ÍPÿg/Þ–õÛº°yÖ—ÝÕôþ`sœðúG«Kæ äÌôQGæ[(nIêl«Š:Û²*/°k›ãܸÄÙö{ÌdUÙzŽLxø\¡ÃÒ|v Ãr06–»[Þ~n'³±:;zëp:i,Âw›T†C ö¶Ç¦-߀@ÊC{<¡ßáÈú¬ž©ã€^0æXŒòêHÖ’dG{×®×x¼)÷`¿aQö™­J<;ÁÃÂvùÐu€8ŠØB„{Kþ®éÕú'6ÊO}„‹>ýø2‹'@a¤•y«*2BAà˜(MÔýÈALÃ:ß¾f6ÊY”ˆÔ‹œ6 '¸p{‡>t„ŽŸ¿Ð®’Håç<ÜásÐá-NæbãÔÚ:·§Ê½ÆaöžŽ]t‰,„DÞpöŸIOÝгjê½ _PäbžÙ¸€m ’jÚ‚„؈|<Ò-‹El6?ØK0ÀÁ*mÂç!ÃXhwøŒQ¹d<Ü•gjdEa‘cÐ926aîx'›„MU $EZ¯/Ïjj¹%½d§SÛàÌOö¸,húÇÁö^€cæ`»rŒ¨ƒW´Zw6/T fTðÝ5ü¶#¬d ž¾„B J~B¬Àï›ëU
+É11îÇûQï<•ªt‚™ÒS˜ã@AÙ«|¥M81wô8õ˜¹«QŽö`À>Ç5!Y”µK2ŽÓŒŒtjæé×åR\FŒ›Æ×c®8º‘ñD(¡ LãÈœ¯uÝHË0}”Y ¥F¦B¡z¶®wKž [˜…@ž9¦‹ÛÁGèð …@NÕt5Cõ…ƒ­òU¶Îvlù©dQû™:ç5 úhªéÍmSÿ§'ÙªÌ
+ °Ñ¤R…ûƧ+ü/¨¯-Oö°ˆñ̇?ô;Öp ¯ÕDßÞ®ˆNsŒ0HÉ\8©ŸPÔ·tþ2QSU.eœÁko°Oàæ)ŠaÜWj0¥(»¼µSˆsLL‡ôâ,9ÜÐ{‰ŒSá%x<å .˜Á¢Äƒ¯\Ar<wÔ»k†–ZäêÆ—aÝJüñ(–˜ #m¸³û/ï×…P¢]÷[?WS9FnÄR@bOÈ­ñJðÂ|“
+E·^%Zùž½Ç…i¤øz
+Kä?åÙ4’Æ|=Ó
+-1-0ꫳï5ÑB”xõîžI^î Ý¡\®±ÊOSO‰)qïÈ€{š \95­ 6ýÚ Übt:í2Ĉ½º»À¥Éœ’S9ÖúКÊ`~ªF")=º¯lïËæXö-þNhI,o¨Tpì ²P8Èùî†Öh©1ífQ?¬xGJ•˜|5ªÿi!{û‘>Ær¢"“>¼éçð¥!˜zD[FÝ,°1çw¾ÔÿŸ=!endstream
+endobj
+1720 0 obj
+2049
+endobj
+1718 0 obj <<
+/Type /Page
+/Contents 1719 0 R
+/Resources 1717 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1664 0 R
+/Annots [ 1721 0 R ]
+>> endobj
+1715 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 606.998 506.998]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1722 0 R
+/Length 1723 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1723 0 obj
+30
+endobj
+1724 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 606 506]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/Font <<
+/R6 1725 0 R
+>>
+>>
+/Length 1726 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ­X=¯eµí÷¯H÷ ¸!‰óY2€¨f˜+½bDuР9HTü}–'Ù‰„ÞOÌÕÁŽ½l'Žílg½qüŸþ>ž×_×üý÷"g(™'ÿ&GÙ|¾²#¿ý?Ö?_¿]^Î6ç[öæÇË›ß/ïœ3_©:›Z4‘’­ž±| f™à„eÈu:*’Ò±
+ý¸>^ Ÿ Áÿ~‹¿þÿžÃ‰29© ¨l² 6×dbéÓ®Ò+¥j±+K"©18žl Ñ j»A?®áÅàL/áŒãq½a?ʶχ]óƇX¦Åu³v°èùààÚðm˜4 …ÉÏŒøÖ6 ƒf ݇%Q€r˜xCJ–ídŸ7NwŒ\GêøÊ…9ql0BkÀ¢‡ÙÅéŽ)
+…K ¤ng!Žnr"äƒ Å›™N"rÓõNÃr.dc¹I¤aÒ~j('â>á\&B,» ¥¡1¼ÃËpÄ¡Ñ9ä”Gä›9¸É¨ÙF™1œ  É±@p¡/wfËRî:÷º©/:wùňiꇰáw’ñÕþXχzÞñ9¨Oœàò×4aP]×y+óô”þ MÜ/W» …ÆÊR i%=¬UHy_£%>LôgVC-Ð*!0ÿå$HŸîS²w‘l%>›ßŸá?NÅd1ß;xÃîQÂéÕfRÆ)ùÂS‹ôrž’=I)EØq&VÄ”"v…"2ÁäŠnlÞ ´F\0È
++úÁžP•¾é|éñð‚øxþþ¦o†ŒÌ=ò¬» o^|£~jÂËüiQ7Y|ŠxŠ÷“Æ4­~XOKàè&æΔ]ûpýù/{öendstream
+endobj
+1726 0 obj
+1821
+endobj
+1725 0 obj
+<<
+/Type /Font
+/Name /R6
+/Subtype /Type1
+/BaseFont /Helvetica
+>>
+endobj
+1722 0 obj <<
+/XObject << /Im24 1724 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1721 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [123.724 106.036 134.633 115.733]
+/Subtype /Link
+/A << /S /GoTo /D (figure.10) >>
+>> endobj
+1716 0 obj <<
+/D [1718 0 R /XYZ 72 786.278 null]
+>> endobj
+1714 0 obj <<
+/D [1718 0 R /XYZ 124.464 380.735 null]
+>> endobj
+1717 0 obj <<
+/Font << /F15 393 0 R /F39 496 0 R /F33 497 0 R /F30 512 0 R /F34 583 0 R >>
+/XObject << /Fm24 1715 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1743 0 obj <<
+/Length 1744 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÝ\I“ÛÆöY? g9eî}qJÛ±*N.9(§8hˆ™AD##iR.ÿö¼×ÝXÙ
+¼;B¸ª)W\&FI¤ÿþÝ«oÞR¹ $±Ä.ÞÝ9Úwë,ªnVÜÐå&Ïöþê!ÝÜÁ•¶Ëê!óMûª,>Ü0³Ì>çëêáæŸïþòÍ[N:ÝQÎÂEèô³§è HY¤
+)vöù†iõŒÃå]Yl#}K•PÎ,ÑR»·E¢ÅŠ%Dàߺù»ø¨œËzÔÝÚF–ë¼Ìn«¼ØùÛ<°`UY¹ÍwY ß™dÔMq³‚æÛ´}¿¸ 3£4ÑT/V%aÝà@­—E¾Ã¾ªÈ29I7‡Ë„®doßGÖiÃXXfr³B,ßÞ¾,J˜çaÖxÑp¾ð ·~E¹Îwiå”
+²Xé„ꉲ˜Y kWÖ/òMŒC4‘´V·ïÆð³
+§ë
+£M«@ã86¶1Ûß×íuÀLñn ®²/àÀö¾¸U; ¿û<¼aµí9÷~,Ø'TĹÊ/&ÚÚ–È×äÎì‹möù!óa›/ ‡fX SX†±´äZ|¤véØV>y<„meñôîæ8ƱX¡d/¥ôëvu:œÙCº,´-ØÅ\„€Ü£qôÅŸË/Rü׾Ȗ'Yƒ-TˆqEÜÓEÓ‹¾¦ÑÃt·7H—DÀ–èMÜÊ¥”çÇ«cSÀô¢3…¯e€8È
+.E³ÿø;äKí¨GC'BÖìcŒqµ^œª¯½ÃT}=. ­Á]éºLÚÓ0¼íåCÀ(cBÿÛ| ïHºt¥kŽF 7 0±*‘4¥ …ãáCp¦‚É„ 2ÿnñQ©®1`µBP_+Trù6¿ò•ª€.5…hk¨;.
+¬f黶úÙÔ(ºÉJ05ŠW¯IVüÍ¿ÍLã¶Á#! !‰Šˆ$Ä]€45Ÿ+Ïg_ù ¶50¸ Qkíišó9Hïžør5Übå$$[¦*Ô°Ž^üU¶ÎÓ*œ‘é#­ý·1®Xš‹ªÓB`³EtÙB£ÑL«.[ÞøØýÒv¸Á  nT2w×ìñp׳¦ã@§fìþ‚cT¸á tÊ7ªæ\9¦0^+Eêìyä°‹Rl~Ùíà`H`GÃlXâYÉ€¼(`
+&€U
+†„)+`úS*sÀøT c':1>¢a,îÄFUL:ãG4L £×T1£Åüôy¨bmMãëéšÆ¬c5 yDÇ,îÓê˜
+«_Raí•NÅ1Ôy;(î<Œ;Û¯ îh<ƒ9Õ1«Ë3–6©Á”JŽkyC„ò ÿ›ŽYŒè¹šã˜Ùu³œë˜!§6µdlbˆJFái]ZŸ¨•M #ÓB1WI+ʼnY%˜ «XÚ¢ÔÌ?)3•XŒr²rþÀChIÿkÐ㉾(}¡$êù¬ûô㺞/”â™
+R¼Ø§[w¥–÷Y±Íª2¿Å“nÌU‘|²>* ¨À"ñ–›ñþÇûä€)ÔßÕO¯ï ûBsšÁ–{Ô¶ÂÞJÿ4w"”>g¦,6Syf’iÓî"ÔU=¼Û ¡µ>ŒH}ÛÓ.¯¼$|]ö¶*ÊØv㊱´rùסùrwà/x{:§0Ù_¯Ûê ¬£ôUÂl·ÎoŸ6ié#nUô¾·½#²£'*%ÿ ^®ÄjÜ·^-MŠ÷UšÇÏR3ת÷U]Œ ÞÙ¹fÕ/ã_Õ @Â0 D‹Îg/3b°œœÈô—hjÞ)ó‘ÀÔ,ÐÀVTVZµGM ¥HŒmIF1Öúðä¿ÉiÍîcû=ŒUè¬(‡~ã±Û“¬ðè§ÒÓNfÆöØüÄhZS.ûdhÆ,ÄÉú*pJ‘d¡7Ž?ÅóÑ#™Ïª%
+øa„½T:Â+ñ÷*Ÿb^Ìßç¨Óµú,ööã3w5W„Nœž‰ZèE¨…°„(vŠöz¤"6éYõ ÏÿhqPbˆónö¼c–€ùØL¯û;3j)øZ«ùKèlÂå:’H.Oî–‡r–d~«x8ínÕÀæ¸[vUwû;ÃcîöTööÜ­0y;wËÎt·ì:I"ر Gÿ3ÜõåT˧¬>X*ÇólYÐ
+endobj
+1744 0 obj
+3422
+endobj
+1742 0 obj <<
+/Type /Page
+/Contents 1743 0 R
+/Resources 1741 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+/Annots [ 1745 0 R 1746 0 R 1747 0 R ]
+>> endobj
+1745 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [197.712 386.324 208.621 398.997]
+/Subtype /Link
+/A << /S /GoTo /D (figure.10) >>
+>> endobj
+1746 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [322.372 176.102 327.826 185.799]
+/Subtype /Link
+/A << /S /GoTo /D (equation.1) >>
+>> endobj
+1747 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [351.184 176.102 356.639 185.799]
+/Subtype /Link
+/A << /S /GoTo /D (equation.2) >>
+>> endobj
+1740 0 obj <<
+/D [1742 0 R /XYZ 72 786.278 null]
+>> endobj
+1727 0 obj <<
+/D [1742 0 R /XYZ 245.077 721.804 null]
+>> endobj
+1728 0 obj <<
+/D [1742 0 R /XYZ 243.414 674.798 null]
+>> endobj
+1729 0 obj <<
+/D [1742 0 R /XYZ 244.773 536.586 null]
+>> endobj
+1730 0 obj <<
+/D [1742 0 R /XYZ 244.865 503.163 null]
+>> endobj
+1731 0 obj <<
+/D [1742 0 R /XYZ 262.296 370.917 null]
+>> endobj
+1732 0 obj <<
+/D [1742 0 R /XYZ 262.098 341.703 null]
+>> endobj
+1733 0 obj <<
+/D [1742 0 R /XYZ 261.842 312.489 null]
+>> endobj
+1734 0 obj <<
+/D [1742 0 R /XYZ 259.062 283.274 null]
+>> endobj
+1735 0 obj <<
+/D [1742 0 R /XYZ 259.062 254.06 null]
+>> endobj
+1736 0 obj <<
+/D [1742 0 R /XYZ 200.712 214.152 null]
+>> endobj
+1737 0 obj <<
+/D [1742 0 R /XYZ 211.37 149.614 null]
+>> endobj
+1738 0 obj <<
+/D [1742 0 R /XYZ 207.275 106.128 null]
+>> endobj
+1741 0 obj <<
+/Font << /F15 393 0 R /F30 512 0 R /F34 583 0 R /F31 881 0 R /F33 497 0 R /F39 496 0 R /F28 523 0 R /F1 882 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1758 0 obj <<
+/Length 1759 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚí\Íã¶_ô˜Ssi¯î̓¬Yñ›Ü"‡lš h¶‡zhzÐz4ca=öFöìdÓ¿½ï‘”õEY²¬Ù h°ÀŽ,QÔ#ùÞï}’t‘À?ºÐl¡"L›Åúá3ºðÿÞ-Ê«?Á=ßRHN¤À_ WBRb¹]¬8'4q¿~óÙo¿åð4!6±‹7w®í›Û¿/ÿsó7\¬(Q [¬ÑR»ûÅûðŽXhb5¾aˆ¤vÁ‰•ÖµH| fN- IÕb¥ˆæÔµQ¾ •µ/•]À—`ìØfîn€T¾Üío˜Y>á±|{³bz™ùëýÃûÇcvëÛ¥‡@[}<TB%¢-k› 2çÆ&+MXÒ?6M´â06eý—¾ŒQ
+«Bõ¢"g` jDh’àH %×gh ÐAÕæ‹8 ŒÙ. Œð î``„2BB£{ Àj$üÛ|öÍ›Š™9fÆ~á‰êciǶÁ•lû]"ÊáÚîšZ­%&^ VÔ¸™/Å$ú½§MVd‘‘rI$| gÌÄ'Ò O¤ê]K¸RB,ªF%CÑS?)€%Ìú&OåŒ(¸‚´Iø,` ´J`nÌ¢Èw§yP0_ÈT衧I¨ZN‹ _ªÔ¿êG/4rg°Š14ÖŠi|›—7+Éé2' —Ç à°lù"[÷…ÿ½/Ž›ýý~—nñw²<îýýÓ ëÇ¿ã¦ÇÈX“ÄZÙ]Ë~˜3‚)F,fbum„OùqƒÑeêéÚf»ûòÖþÎÿݤÛp…£qqxÅñ{ÖΣñáXìß¹!>å·ÐGw|ÒbTLÒfšˆðœÀŒ ½üê
+W WG
+g
+Ñsk%ÑjµCàîº]€/¦@mY¦C`_ ø»D$±nÀ 7Ë)—cæ-ns¨³’V·çX»s†êIŽ
+L:‰—Õ 3CçBxfnEYQ«Q~™i
+#™i¦UÔEÒ²AÃë †±ØLãÄ ^3Ó=¬L9Ã)1 Õz†³ ×TÄ1œÓˆ4 `pˆ¸ž¹ô2COJÃÃ^à$­&a/ÅE—];ªD ÌÊxFtl&H¢+Ä„ùàQ6ÊC&µàõ1™²™÷W S£1ß¡Á8Hw.Í–›l·®;—évû1:x°„\ æRòØ5ga·ãºÅÀ j4À™¦‡3ÍYØíÐÐ`² =.•60-™ÌœÅÄyH(YÑô°¢9‹‰CKa˜¬Ó…2˜¶ÊØPÃyȺÆÌ,06ŽYx³w-mè}6à}X3Ç×&Þ/pmâ?ïQ €B«Z³W ¸ë’
+A—Ùù‰öé˜ä§`('nÓ}9û¤çÄX5e0T\eïï+ð–£<Œâ!½ ¹)‘H—o¬³üã!ØH.½Ãy=¦œ$l·«w!ùJî³ýCv,ò5fôðÍ"Û¦$ÿ<Æš+ª½Ã1™7elÅåL‰ˆ¶;Gó“NYK{!™ý=‘€Rl~ÔUµ5{zx—ÉÒÁ·,ÑQØå!}À+é
+5ź‰Y<ÙU+šÀÈ„`³QkKyŠŽÊ–ScŠ4âD¨`c¹yb„xμžÊë•9ƒrξ˜!6O–4ʃ%™Î>É1å"ƒ%oDd‘š§Kï
+‡fXn.XZå‚’‘J«q1À‹Ý~0ö™·²ºÑ3JÍ¡ÀIѧJ=&
+†è™ƒ!ÓbÐçi€÷m#
+óäÀ¤Qe`nš‹(grx‘ðo~x¿Ýƒ?‡zŽsSçš“„O2Pù³–œ"v‡ýöC
+Aä¿Hδ'¤Gê1•7úÚšÏóªPϤ
+'×u̧
+§WдT!H(ÓŽA™9«1àö—AK;F vßÝt¼µ–SÛÄw¹e®Z]Ÿ<5cŒünò”ÍVrEòtÿMMžŽÒˆc’§¼ õº¹‚}•×‚NöÁôp
+°N[nË£Õ/Ü8 
+®„žE%šö°í8\Dz³p[hAzüqhßš•dNÕ
+7 ×Eì¶#b2H'ˆ‡m¨ÙFtD;…ÏÀ"墯.ÙW@ÀK‚MÍèÞ
+œä¨^Ê ?ã5(¸qÀ0~EDmBJuFеÍwYZøílxtØê ÿë¬W /]wÀÃøi2ô2ì9øþ1õˆ›óìð²g‡œâ¥Øþªƒ8
+Æć,L´Q8]TÒ]»p§t"jçeLLx¢\ù8 ø‹2q¿wÓ`¹9@þ˜³ZÁ%¥;1‹•-á¾€7x¾Xy¼S˜'¶åŽ€Vž˜±r÷€XùýÆguÝÏMØM—ˆ ‡°*wÕÞŽîvE8X.žžg‡…óÙÔ°Ư(
+ð\)qÅq±!@;îb+Ó³ÂzÞ¬ðËúÞ†°ñÁg…]ZP3$ †¬ÞÓ© -¶w—ò²Â ?ð‹a?Ûõtøx8fX9ÁåiÛ…i]ÖP^u[Ì
+ëÆc”Ösq-EªŒrâbjiûxu³¾$9Àûâvs7[C@/>iGÌýK‡³šIµ¬'ø^ÐYWÕÒ0ˆw€þàójsv+»pǤàáb"xÌqìC®x´î\ÍWJ”›WÛn,z¿½«àW¬(å½ûªñ
+ kG®|ÙíÉ׎ Ä…%ÀµÁˆÆá]Wß Ä}œ´fǾø4ÅÄÍD¬%ê> ‚j­eÉɧišyœ:f\,¸°k_<8S
+.Ò3Ë´Ü«Xy.N‡ƒó>˜i0t¡‘ÃSÜØèëÂ@ižöÝø•® n¯÷ÛLJ¿®õì4/CÍöJB³êm¯5U©jU ¨Ž³š:Ëók«•ˆþE~<f»æ‰µ ÁQ9±ä·ÇÈøl"N?µŒ³Ñ2>“®ç™MÕ5£ÄüB×4Ðëkd}$/"g¹JSZ#´óxZßØ1€×:Ž×æ“ൎ/¤y¼î„¹eàçÞN„v-žoF§¢ºձ♩¡ö üvN7cXÓñCpŒìŒçð_²ÈÏendstream
+endobj
+1759 0 obj
+4215
+endobj
+1757 0 obj <<
+/Type /Page
+/Contents 1758 0 R
+/Resources 1756 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+/Annots [ 1760 0 R 1761 0 R 1762 0 R 1763 0 R 1764 0 R 1765 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1773 0 R ]
+>> endobj
+1760 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [220.978 686.632 231.887 699.955]
+/Subtype /Link
+/A << /S /GoTo /D (figure.10) >>
+>> endobj
+1761 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [327.153 520.715 332.607 531.624]
+/Subtype /Link
+/A << /S /GoTo /D (equation.3) >>
+>> endobj
+1762 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [357.269 520.715 362.723 531.624]
+/Subtype /Link
+/A << /S /GoTo /D (equation.4) >>
+>> endobj
+1763 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [466.619 520.715 477.528 531.624]
+/Subtype /Link
+/A << /S /GoTo /D (equation.14) >>
+>> endobj
+1764 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [305.423 507.772 310.878 517.347]
+/Subtype /Link
+/A << /S /GoTo /D (equation.5) >>
+>> endobj
+1765 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [323.605 507.772 329.06 517.347]
+/Subtype /Link
+/A << /S /GoTo /D (equation.9) >>
+>> endobj
+1766 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [319.475 494.222 330.384 503.919]
+/Subtype /Link
+/A << /S /GoTo /D (equation.10) >>
+>> endobj
+1767 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [145.03 438.412 155.939 451.085]
+/Subtype /Link
+/A << /S /GoTo /D (equation.13) >>
+>> endobj
+1768 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [360.341 438.412 371.25 451.085]
+/Subtype /Link
+/A << /S /GoTo /D (equation.15) >>
+>> endobj
+1769 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [156.645 367.91 167.554 381.233]
+/Subtype /Link
+/A << /S /GoTo /D (equation.14) >>
+>> endobj
+1770 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [173.754 203.397 179.209 216.07]
+/Subtype /Link
+/A << /S /GoTo /D (equation.4) >>
+>> endobj
+1771 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [204.633 203.397 215.542 216.07]
+/Subtype /Link
+/A << /S /GoTo /D (equation.17) >>
+>> endobj
+1772 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [494.735 188.207 500.19 200.151]
+/Subtype /Link
+/A << /S /GoTo /D (equation.4) >>
+>> endobj
+1773 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [76.242 175.693 87.151 186.602]
+/Subtype /Link
+/A << /S /GoTo /D (equation.17) >>
+>> endobj
+1755 0 obj <<
+/D [1757 0 R /XYZ 72 786.278 null]
+>> endobj
+1739 0 obj <<
+/D [1757 0 R /XYZ 263.922 750.413 null]
+>> endobj
+1749 0 obj <<
+/D [1757 0 R /XYZ 197.152 573.379 null]
+>> endobj
+1750 0 obj <<
+/D [1757 0 R /XYZ 195.122 478.166 null]
+>> endobj
+1751 0 obj <<
+/D [1757 0 R /XYZ 221.002 424.922 null]
+>> endobj
+1752 0 obj <<
+/D [1757 0 R /XYZ 133.303 340.871 null]
+>> endobj
+1753 0 obj <<
+/D [1757 0 R /XYZ 202.629 162.463 null]
+>> endobj
+1754 0 obj <<
+/D [1757 0 R /XYZ 194.546 101.346 null]
+>> endobj
+1756 0 obj <<
+/Font << /F30 512 0 R /F34 583 0 R /F28 523 0 R /F15 393 0 R /F31 881 0 R /F33 497 0 R /F1 882 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1781 0 obj <<
+/Length 1782 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚÕZIãÆrœòtdÓ4káv´'`âC ¤’8Ru‹iŠ”IʳÀÈoÏÛŠ,JìV19 hÖòj{õÞ÷–’Ú$ð§6¹ÞäEë¼Øl¯Ô†ÿ7¾ô´1¥MMœZ¬]!¼õ”·&‹,Eúî^}÷V¥•ÄeRnîî‰ön÷ÏèïíÖÝüûîoß½5IЭË8UçiNdÿEšÍ­Š3£7·sûk7y\æ8²ˆS8Œ‰Ë´$Š„)‹g±5¸¿‰h_ 7·Æ˜èýÍ­."çZ®n»Ãñ4ºÝk®Ö£|‰ÚF®>qiìÖN”صY;6gúaåL…VWÎãË,<Ók"8Ð'.ªÇº}àòip¼õî¿:úñק}õãÝt•&ƒèœï°ùqãK?=s¯*;Ÿ ižŸ§§Š™O&SÐצP¼øŒßóYîÝ>KïUÿ(·SáeæQw’[÷Ž ÕñØwÕöF—Ñž[vnØöµ\þN¨¸Ú!ÿ~盛9öu5º ÎÝš.Íä¸í8a%xNiT›Ì0wˆƬpâ/çˤ±MÓë*‰d6˜|•Íï΄»j†ŽKGæã0Ôï·”÷%ÊöøþÛÓèºE~kš¡l\(KšQœk†eÍ(žÑ ýmסfTíŽEöØžiÚ€À%¹úzZ
+·[°–Hÿá%×jµ¨õ§ƒëëmÕpÓ0Vïëì
+ð5Í
+ ]‹‡B£P3%·û§1ž” ´·•c_H”X¨XqÇIYþˆ(¾"®XÊ…öiSÆ&Ñß”ö¡¬è¢¸¼ql<T7 ÍŸ°’{o ¤Øa©Œ>»¾ã^’Ê€Ã·Õ ¤$2ÔDºWF¾½¯ÚÄü0ð¢7×*3
+ ü4Áÿ•ž;HÓ“4º?õps=WÜÇ­;Ž
+Bah:>ª×Ùæàa¥ Á¬&¯¸–Øǵ"u¨˜'Q? íF?fë…6Œ8®sØ‘Úu†«k gåIì õÂ~z&ð:zè$ðÀÿ;n#c ‚­Ón¯O›î‚šJP fn
+¤†˜XÀÓoR°»=ý}I“¨q Þ¢ vk®³Ž3?œÖ)¢uÓ𞺶ùÄ›
++uªW<ËÉKöP;òâgg}Ú&hE_?Ô ]P›ÌÅíÌ>VÞäXe å=V}ÕÐías¦žÛª4ó½À
+ºøⱸû?
+ٳ̢¯ìùpC vyˆÖ‰ë$ù™žÇåYÈ+¸ê£ÈØ3–PΑø[Ðì,×y~ÎIh!ÆÀ€wuª‡=Ï)ú0oS}8$Ø35 ý®Ç
+C8“DŽD…¦ü3F`“=;;ÜPƒ\´=m”MÀ"•W-’co® u±NÛâk™¤7,RÌÛ¬ûoº¾uýÊÙY ,bhÝ*V*TX,“ ¾ºŽûÖe{fYÀ, X:“›¥r‘Ø ¢wê[YK–àà
+»™ˆÐiªu[Ù*0!|d*³ÈÑN Ê@g¬¢8}«òÉÅ…§ýÁè£Ç/7 áN@ %ž)dž­Â(U~€·Ëcˆ¤ƒ…i…§Š§6ʳD3á´;.{'˜È=:€aK#i ˜Fبæ4T-7ŠÏçúÁ>ö
+¶Í‚€
+x¹{á¤Ñfæ ­&€;&À*ÎÙ uhû5ìÖµŒ¸ZŒÖ^Ö] úü<-{=~ð8‹‹"YÒÚ'}ž€2‰u¦¾Žþëÿ·þo«ó ø
+,¬£À–R þà€ÆÀάÉŸfÀV‘[eè"_ûC+ƒSÊùK‘+9¿ÎLp~ÈçÇÒR8qŽ…¦]
+¦wð4Ø¿¶þà^¼OE…ÉÂïîÔHçÒ¸j°Æ” ž)m}}8¸T:ùî]Ý3ñ%àTË·˜³w7è1LǬ€ÁÝÇ/Q‘ùRЧ¢3eÅâÐq¨§$ôŽ‡DõµÓÓvÒæaȽs2xZ)
+Ê“i+¡'ï1\h‘ fb8ÿn^Ö¿H<ʳøns‚ŸÌðMai›yÇÔvl{¡‚™ÓcïR€Ð|ó³­ôÊkwq´<ÜàÈê i4ìyÒ–«<¡ÞÖhe.ÞQ“8ËsàJZÄI’ÿ·õ5ßJnm^ˆãh#êÈ"0ô£O¡q‘Kà–Pš{Ñ¡Þí)÷^ËpÁ¢ô aúÇr€ó;±³vÎóŠk€¶ «»jØ“DX|ˆ çÆýÆâ8ïÇ[Ì»BY¢{¡Zý¤MÅ8¹éf½ç <ôž€‚~1“{|Í=çé”Ó©¸=°’g±üZ:X(Îy6¢ÐÅô( NkQrv˜,£V’@6ÎÞÌ4h?s}ïhÞu
+V¹i˜éSb»ÈQ¥gFù‡t>öd;n1•­t¹L€•kH×Á¦¢o:H±“ï^,wÈ^4ÔÚÙtWü¹pLÙv³cJ±cê­øn6冊èäÄè ¢øéËà}%̓Äâž^èÊ5Zë¾ä3ys}î³Yaç Öd ¬
+
+Ãßðé|þ w2Ñå/¾°ø\{^O¯\X¢”§ïKY¬²ç1¬øRé§@Òú­-äŽvÊáaκ€•ï˜¢È\ẌUf±)–FmyYàn6ÌA8ËigÍŽQ"¨2ü!w`Úµ¢©`·(`Óqì»öXÆêe ÿepa1·ª<Ë<@ÃzäÛ…~ò·±cz_üÐiö’8-ôµü‹Ö*6êêo¼Êòâ''ÐU?“áù{õýendstream
+endobj
+1782 0 obj
+3336
+endobj
+1780 0 obj <<
+/Type /Page
+/Contents 1781 0 R
+/Resources 1779 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+/Annots [ 1783 0 R 1784 0 R 1785 0 R 1786 0 R ]
+>> endobj
+1783 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [439.927 748.292 450.837 760.964]
+/Subtype /Link
+/A << /S /GoTo /D (equation.16) >>
+>> endobj
+1784 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [412.343 712.227 423.252 724.9]
+/Subtype /Link
+/A << /S /GoTo /D (equation.16) >>
+>> endobj
+1785 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [300.393 662.613 311.302 672.31]
+/Subtype /Link
+/A << /S /GoTo /D (equation.18) >>
+>> endobj
+1786 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [409.949 179.632 420.858 189.329]
+/Subtype /Link
+/A << /S /GoTo /D (figure.11) >>
+>> endobj
+1778 0 obj <<
+/D [1780 0 R /XYZ 72 786.278 null]
+>> endobj
+365 0 obj <<
+/D [1780 0 R /XYZ 72 525.605 null]
+>> endobj
+1774 0 obj <<
+/D [1780 0 R /XYZ 72 448.053 null]
+>> endobj
+1775 0 obj <<
+/D [1780 0 R /XYZ 72 355.671 null]
+>> endobj
+1779 0 obj <<
+/Font << /F15 393 0 R /F30 512 0 R /F34 583 0 R /F33 497 0 R /F39 496 0 R /F37 380 0 R /F28 523 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1790 0 obj <<
+/Length 1791 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚµYKoÜȾ;‚Èe)`ÕÛ/’M# '16ÉɺÅ9PdKØCŽù­K~{ªºŠÎ %yí†ÍbuuUõWn©HŸŠ2e.:sQ¹¥"ú{Í£¿8mbDbñíÆë™óZ[‘Ëô%þTd0Tˆ>DJð'~õÃÂÍ„Þîuý±{õó«èçW×,ÃÁz†5Õ‘&wQ£nób ™MPЛ¥’HI˜›G7wó¦úWü¶¾Ÿzumu+õúê:5:þ=¾»xØMƒÃ,öŸJßF¢#ǧÁ¾®ª†Ç}}¿»ÒyÌ<w}·?ã.¯@Æ®è‹rô=‘Þ)cßüš¤wwDûC·?LÀñ·îê^+ß·Wÿ¾ù è}­Ðô<èÿÏn_´âê:Éd|ƒ+˜,ëÊ “x_ÀºðS—3¥›Æ¦n=¿ÜÑsÜ1áT¶i|…oUÍVª"C=ÐîC;>¶LngAu°ï=½VÅ°#aI<Œøá±ñbÃŽŸüxÌ8-ò;µö¤q&>€%ô!( OR¦œ¨ùÝ@Ä£(Ëz?øGðF×½èYÄÚx­ù¹÷U=홥kꊇϙò¾kºö~^Å(ò™± µ‚}ƒC
+¸VØ¿y¤m1NK™§•Sÿp•¤qøH
+xI8`c‹ž×ò‰DóŒD뀟Ëø}MM!g.—s‡@_Qø è"lî_˜~€fÚÜf~£Ö2©Ò@8™åŸ_
+e×Lû–vDA8í¤“0£'å¤j} AKí`×ÒS¸T
+lF±
+eQ1©‚ O\™<};òN&RKøUç²UœðK.RXž½Œùófb„*N—Œ3˜Å¿Ù€›c—c²Ä^7{]+€[«¨‘šN¤Ðe[=_è¯XŽóÅ@œwT .jem…;ÕòwßPËÓ³@–ftýÑÍ“—”Âܦë†~i¡k<Y™…ÓÞ†Q©Zmº4FÒÚ%ÄA–$›4wå(|hº£’:|. xC@Ç™\ž–dJfˌ̆‰TL'8?óZC7‹,xŠÿ¶çt †¦n£Õ5;êöq¹øœ #ŒTß®ï,8á$6%E¼7+ú«†Ã‹wÞ:‚@¯ÒÒÓtïÌT¼©ÁS§ m& ?Œ».T"ŒÂ–H{~sãh‘‹n æ>LpŒªH‚©Ð„znÒæKèëë»ëà6R'/å!­œH\N ëé ¤¤<_BãÿYýtªû)¢Îendstream
+endobj
+1791 0 obj
+2173
+endobj
+1789 0 obj <<
+/Type /Page
+/Contents 1790 0 R
+/Resources 1788 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+>> endobj
+1777 0 obj <<
+/Type /XObject
+/Subtype /Form
+/BBox [-1 -1 400.999 280.999]
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/Resources 1792 0 R
+/Length 1793 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ+ä2T0
+endobj
+1793 0 obj
+30
+endobj
+1794 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/Matrix [1 0 0 1 0 0]
+/BBox [0 0 400 280]
+/Resources <<
+/ProcSet [ /PDF ]
+>>
+/Length 1795 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚíYË®$' Ý÷WÔ4âià ²Ž²¼Êª£‘FºµÈ*¿Ÿc((U=ì’hFjù”ÍËæ`ûje6ÍÿŽß×þøóa¶¯§ñÑ1ú46i½í“S~cÄ;
+u‘©i@~›HŠ¤F^ÆÈbžjÓSÏQ’ça¹Ú´•4 ·Œá†y¾ü'öh¶_›Õüÿw8øÇ0rÝutV+G›I.+o¶ÏÇo] 1k†´ýµª²µf( Öm²ù£Ô7sÑž ©ƒ­•6
+ÙäŠTÍ ¹°mì=¡û‰UFÿ”j‚äÀéhëCQ§ïya[dâ9ƒò!‰çÝ£}eeÅs6‡ã#<¹ïJxä/.ŸúžU³®æJÏšûGûø¸ËÇŠq'µ\&ßÅä9›b"ЖËë&×|«’îŒíñ¹ˆ5¤PÒ|‹ƒ ÀjªùkÄ[‘jðÌÓ¬8ŒÙpÂ$¤S%s•/¦&PÖQç 
+NŽY§¥
+ÙS‡8BJÓ«
+šoi¹6W¥wZKï!åÖüŠR¥îç@ôkŒRÑ×MÿƒþAÿƒ–Ù;y'•MÅ_ ä¹O_áB^Ô}Ú®4çV©¦È âtPóˆ0²g{ªÊÝí驪À@X¦RWC3gª¾‹%;¼8c{GRÙKÚ\¡‚Üw[O-ÈžHoÒ¸vï¿°mendstream
+endobj
+1795 0 obj
+1815
+endobj
+1792 0 obj <<
+/XObject << /Im25 1794 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+1787 0 obj <<
+/D [1789 0 R /XYZ 72 786.278 null]
+>> endobj
+1776 0 obj <<
+/D [1789 0 R /XYZ 128.284 418.427 null]
+>> endobj
+369 0 obj <<
+/D [1789 0 R /XYZ 263.359 156.415 null]
+>> endobj
+1788 0 obj <<
+/Font << /F15 393 0 R /F30 512 0 R /F28 523 0 R /F1 882 0 R >>
+/XObject << /Fm25 1777 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1799 0 obj <<
+/Length 1800 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚ•TMoÛ0 ½÷Wø¨
+Al]’#š7=FÚ`É
+endobj
+1800 0 obj
+600
+endobj
+1798 0 obj <<
+/Type /Page
+/Contents 1799 0 R
+/Resources 1797 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+>> endobj
+1796 0 obj <<
+/D [1798 0 R /XYZ 72 786.278 null]
+>> endobj
+1797 0 obj <<
+/Font << /F15 393 0 R /F39 496 0 R /F27 394 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1805 0 obj <<
+/Length 1806 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåœíoœ6Çß÷¯¸—´RüöË\’Ko½dÑrK+mÓDÁÉYá R%ûëgCNK×Îö–(ªD*|ðïñk0ó嘅pÒÀƒ!ÅÛ7`ÖüÜÎvGåÿ5gb‚<‚Õo='¾ÛùbùAßù¾<1ð°Õ‰óõ›÷ Hf
+Ç'S™Û‡2GU4Jî¢@‚¡=-â[ÚÏ«Åq± 혴1ÆõÍ-#"]g¯ó…Hù%ŠxÓ㶑©5ä£ oO²DDÙ´¤G…b8¡v–ujÐE^(›^;©%0ÛO-A´a—™¨\$ž)¤ÏQ*}UVù-_¤Ñ“®5°”Ò¼ä+ñ¥3Ä2*¡Övx`”«âñ®*{+eGÚŒyGÕiúx·)]/²W55¨OsWeoP
+M48ÄZƒs”ß=ö‰†Œ7`öŒ÷î±6Ý>½ì_pAû\ˆdÿ„«©¢aŠÅ,ŽyÊ+~˜¦—âOGþ‰5ÿlhO²8Oº5s´ˆY¦í‰G¦DÃU ­â˜Ê~]`úÖ0ï·w®âî„.f Ð­({ºRC”î§üëÏ-'ÏGnI¬Ùkƒùá,ª
+ñàdÕAÖV-5°W.a±5X½Õh/ 8ZœåÛ;55®T©³QÔr[ÚÌF…ƒx]¥˜ UàÀ£(ÿÿæÛŸgNyu¸8SboŸÌk®´]ì M Y
+æÚlf±îÙÑöYñ–èºê?íÚð}š¾
+Ðe¹<¹UìÈ|±Eg]VQ*âÃì&u£+`«ºÂG^dÝ¢‚Ɣ鸚5œ¸ýiPf]ñlyÕ7û÷>û=A8¸~L1Š/Ë„wΛ
+HÄ·¨ü­DÆ/òR¨†¸‰GÈb<R´ëˆo3^–nôdS?8ãU!âr™]çnâo`3þžå_¹S›Ø¤=Ï•¨\—+°ìÝ$ƒ:7ÉŒ ÉÁÄ=2l±ª‡Kù•Ù̯繪$."Q”n¼–íÇŽ‰l%bî@
+endobj
+1806 0 obj
+1747
+endobj
+1804 0 obj <<
+/Type /Page
+/Contents 1805 0 R
+/Resources 1803 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1748 0 R
+/Annots [ 1807 0 R 1808 0 R 1809 0 R 1810 0 R 1811 0 R 1812 0 R 1813 0 R 1814 0 R 1815 0 R 1816 0 R 1817 0 R 1818 0 R 1819 0 R 1820 0 R 1821 0 R 1822 0 R 1823 0 R 1824 0 R 1825 0 R 1826 0 R 1827 0 R 1828 0 R 1829 0 R 1830 0 R 1831 0 R 1832 0 R 1833 0 R 1834 0 R 1835 0 R 1836 0 R 1837 0 R 1838 0 R 1839 0 R 1840 0 R 1841 0 R 1842 0 R 1843 0 R 1844 0 R 1845 0 R 1846 0 R 1847 0 R 1848 0 R 1849 0 R 1850 0 R 1851 0 R 1852 0 R 1853 0 R 1854 0 R 1855 0 R 1856 0 R 1857 0 R 1858 0 R 1859 0 R 1860 0 R 1861 0 R 1862 0 R 1863 0 R 1864 0 R 1865 0 R 1866 0 R 1867 0 R 1868 0 R 1869 0 R 1870 0 R 1871 0 R 1872 0 R 1873 0 R 1874 0 R 1875 0 R 1876 0 R 1877 0 R 1878 0 R 1879 0 R 1880 0 R 1881 0 R 1882 0 R 1883 0 R 1884 0 R 1885 0 R 1886 0 R 1887 0 R 1888 0 R 1889 0 R 1890 0 R 1891 0 R 1892 0 R 1893 0 R 1894 0 R 1895 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R 1901 0 R ]
+>> endobj
+1807 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 711.087 192.665 720.784]
+/Subtype /Link
+/A << /S /GoTo /D (page.66) >>
+>> endobj
+1808 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [204.665 697.538 215.574 707.235]
+/Subtype /Link
+/A << /S /GoTo /D (page.58) >>
+>> endobj
+1809 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 683.685 204.119 693.685]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1810 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 670.136 209.846 680.136]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1811 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 656.587 209.846 666.587]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1812 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 643.038 209.846 653.038]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1813 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 629.489 209.846 639.489]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1814 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [204.665 616.243 215.574 625.94]
+/Subtype /Link
+/A << /S /GoTo /D (page.58) >>
+>> endobj
+1815 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 602.694 169.756 612.391]
+/Subtype /Link
+/A << /S /GoTo /D (page.57) >>
+>> endobj
+1816 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 589.144 175.483 598.841]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1817 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 575.292 204.119 585.292]
+/Subtype /Link
+/A << /S /GoTo /D (page.59) >>
+>> endobj
+1818 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 562.046 175.483 571.743]
+/Subtype /Link
+/A << /S /GoTo /D (page.58) >>
+>> endobj
+1819 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 548.497 169.756 558.194]
+/Subtype /Link
+/A << /S /GoTo /D (page.57) >>
+>> endobj
+1820 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 534.948 175.483 544.645]
+/Subtype /Link
+/A << /S /GoTo /D (page.85) >>
+>> endobj
+1821 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 521.399 209.846 531.096]
+/Subtype /Link
+/A << /S /GoTo /D (page.60) >>
+>> endobj
+1822 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 507.85 198.392 517.546]
+/Subtype /Link
+/A << /S /GoTo /D (page.60) >>
+>> endobj
+1823 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 493.997 181.21 503.997]
+/Subtype /Link
+/A << /S /GoTo /D (page.57) >>
+>> endobj
+1824 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 480.448 186.938 490.448]
+/Subtype /Link
+/A << /S /GoTo /D (page.85) >>
+>> endobj
+1825 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 467.202 186.938 476.899]
+/Subtype /Link
+/A << /S /GoTo /D (page.66) >>
+>> endobj
+1826 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [147.393 453.653 158.302 463.35]
+/Subtype /Link
+/A << /S /GoTo /D (page.28) >>
+>> endobj
+1827 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 440.104 204.119 449.801]
+/Subtype /Link
+/A << /S /GoTo /D (page.27) >>
+>> endobj
+1828 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [216.119 426.555 227.028 436.252]
+/Subtype /Link
+/A << /S /GoTo /D (page.27) >>
+>> endobj
+1829 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [216.119 413.006 227.028 422.702]
+/Subtype /Link
+/A << /S /GoTo /D (page.28) >>
+>> endobj
+1830 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 399.456 181.21 409.153]
+/Subtype /Link
+/A << /S /GoTo /D (page.82) >>
+>> endobj
+1831 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 385.907 198.392 395.604]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1832 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 372.358 186.938 382.055]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1833 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 358.506 204.119 368.506]
+/Subtype /Link
+/A << /S /GoTo /D (page.56) >>
+>> endobj
+1834 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 345.26 164.029 354.957]
+/Subtype /Link
+/A << /S /GoTo /D (page.42) >>
+>> endobj
+1835 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 331.408 186.938 341.408]
+/Subtype /Link
+/A << /S /GoTo /D (page.36) >>
+>> endobj
+1836 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 318.161 198.392 327.858]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1837 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 304.309 164.029 314.309]
+/Subtype /Link
+/A << /S /GoTo /D (page.69) >>
+>> endobj
+1838 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 290.76 169.756 300.76]
+/Subtype /Link
+/A << /S /GoTo /D (page.37) >>
+>> endobj
+1839 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 277.211 181.21 287.211]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1840 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 263.965 198.392 273.662]
+/Subtype /Link
+/A << /S /GoTo /D (page.41) >>
+>> endobj
+1841 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 250.113 198.392 260.113]
+/Subtype /Link
+/A << /S /GoTo /D (page.39) >>
+>> endobj
+1842 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 236.867 175.483 246.564]
+/Subtype /Link
+/A << /S /GoTo /D (page.41) >>
+>> endobj
+1843 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 223.317 175.483 233.014]
+/Subtype /Link
+/A << /S /GoTo /D (page.40) >>
+>> endobj
+1844 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 209.465 169.756 219.465]
+/Subtype /Link
+/A << /S /GoTo /D (page.82) >>
+>> endobj
+1845 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 195.916 164.029 205.916]
+/Subtype /Link
+/A << /S /GoTo /D (page.82) >>
+>> endobj
+1846 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 182.67 175.483 192.367]
+/Subtype /Link
+/A << /S /GoTo /D (page.50) >>
+>> endobj
+1847 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 169.121 192.665 178.818]
+/Subtype /Link
+/A << /S /GoTo /D (page.53) >>
+>> endobj
+1848 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 155.572 192.665 165.269]
+/Subtype /Link
+/A << /S /GoTo /D (page.54) >>
+>> endobj
+1849 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 142.023 181.21 151.719]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1850 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 128.17 209.846 138.17]
+/Subtype /Link
+/A << /S /GoTo /D (page.42) >>
+>> endobj
+1851 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 114.621 169.756 124.621]
+/Subtype /Link
+/A << /S /GoTo /D (page.41) >>
+>> endobj
+1852 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 101.375 181.21 111.072]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1853 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 87.826 198.392 97.523]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1854 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 711.087 442.597 720.784]
+/Subtype /Link
+/A << /S /GoTo /D (page.30) >>
+>> endobj
+1855 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 697.538 448.325 707.235]
+/Subtype /Link
+/A << /S /GoTo /D (page.48) >>
+>> endobj
+1856 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [420.234 683.685 431.143 693.685]
+/Subtype /Link
+/A << /S /GoTo /D (page.24) >>
+>> endobj
+1857 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 670.439 425.416 680.136]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1858 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 656.89 425.416 666.587]
+/Subtype /Link
+/A << /S /GoTo /D (page.48) >>
+>> endobj
+1859 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 643.341 442.597 653.038]
+/Subtype /Link
+/A << /S /GoTo /D (page.64) >>
+>> endobj
+1860 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [425.961 629.489 436.87 639.489]
+/Subtype /Link
+/A << /S /GoTo /D (page.75) >>
+>> endobj
+1861 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [420.234 616.243 431.143 625.94]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1862 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 602.391 448.325 612.391]
+/Subtype /Link
+/A << /S /GoTo /D (page.77) >>
+>> endobj
+1863 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [477.506 588.841 488.415 598.841]
+/Subtype /Link
+/A << /S /GoTo /D (page.77) >>
+>> endobj
+1864 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [443.143 575.292 454.052 585.292]
+/Subtype /Link
+/A << /S /GoTo /D (page.48) >>
+>> endobj
+1865 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [454.597 561.743 465.506 571.743]
+/Subtype /Link
+/A << /S /GoTo /D (page.48) >>
+>> endobj
+1866 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [448.87 548.194 459.779 558.194]
+/Subtype /Link
+/A << /S /GoTo /D (page.40) >>
+>> endobj
+1867 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [403.052 534.948 413.961 544.645]
+/Subtype /Link
+/A << /S /GoTo /D (page.51) >>
+>> endobj
+1868 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [420.628 534.948 431.537 544.645]
+/Subtype /Link
+/A << /S /GoTo /D (page.52) >>
+>> endobj
+1869 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [425.961 521.096 436.87 531.096]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1870 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [448.87 507.85 459.779 517.546]
+/Subtype /Link
+/A << /S /GoTo /D (page.28) >>
+>> endobj
+1871 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 494.3 425.416 503.997]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1872 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 480.751 448.325 490.448]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1873 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 467.202 448.325 476.899]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1874 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 453.653 425.416 463.35]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1875 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 440.104 425.416 449.801]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1876 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 426.555 448.325 436.252]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1877 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 412.702 442.597 422.702]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1878 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [408.78 399.153 419.689 409.153]
+/Subtype /Link
+/A << /S /GoTo /D (page.47) >>
+>> endobj
+1879 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [397.325 385.907 408.234 395.604]
+/Subtype /Link
+/A << /S /GoTo /D (page.75) >>
+>> endobj
+1880 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [414.507 372.358 425.416 382.055]
+/Subtype /Link
+/A << /S /GoTo /D (page.50) >>
+>> endobj
+1881 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [437.416 358.809 448.325 368.506]
+/Subtype /Link
+/A << /S /GoTo /D (page.43) >>
+>> endobj
+1882 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [443.143 345.26 454.052 354.957]
+/Subtype /Link
+/A << /S /GoTo /D (page.43) >>
+>> endobj
+1883 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 331.711 442.597 341.408]
+/Subtype /Link
+/A << /S /GoTo /D (page.46) >>
+>> endobj
+1884 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 318.161 442.597 327.858]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1885 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [460.324 304.309 471.233 314.309]
+/Subtype /Link
+/A << /S /GoTo /D (page.76) >>
+>> endobj
+1886 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [408.78 291.063 419.689 300.76]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1887 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 277.514 442.597 287.211]
+/Subtype /Link
+/A << /S /GoTo /D (page.49) >>
+>> endobj
+1888 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [403.052 263.965 413.961 273.662]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1889 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [425.961 250.113 436.87 260.113]
+/Subtype /Link
+/A << /S /GoTo /D (page.46) >>
+>> endobj
+1890 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [443.143 236.564 454.052 246.564]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1891 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 223.014 442.597 233.014]
+/Subtype /Link
+/A << /S /GoTo /D (page.46) >>
+>> endobj
+1892 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [425.961 209.768 436.87 219.465]
+/Subtype /Link
+/A << /S /GoTo /D (page.56) >>
+>> endobj
+1893 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 196.219 442.597 205.916]
+/Subtype /Link
+/A << /S /GoTo /D (page.56) >>
+>> endobj
+1894 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [420.234 182.67 431.143 192.367]
+/Subtype /Link
+/A << /S /GoTo /D (page.52) >>
+>> endobj
+1895 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [466.051 169.121 476.961 178.818]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1896 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [471.779 155.572 482.688 165.269]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1897 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [408.78 142.023 419.689 151.719]
+/Subtype /Link
+/A << /S /GoTo /D (page.45) >>
+>> endobj
+1898 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [403.052 128.17 413.961 138.17]
+/Subtype /Link
+/A << /S /GoTo /D (page.44) >>
+>> endobj
+1899 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [391.598 114.924 402.507 124.621]
+/Subtype /Link
+/A << /S /GoTo /D (page.25) >>
+>> endobj
+1900 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [431.688 101.375 442.597 111.072]
+/Subtype /Link
+/A << /S /GoTo /D (page.77) >>
+>> endobj
+1901 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [420.234 87.523 431.143 97.523]
+/Subtype /Link
+/A << /S /GoTo /D (page.39) >>
+>> endobj
+1802 0 obj <<
+/D [1804 0 R /XYZ 72 786.278 null]
+>> endobj
+1801 0 obj <<
+/D [1804 0 R /XYZ 72 724.167 null]
+>> endobj
+1803 0 obj <<
+/Font << /F25 380 0 R /F27 394 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1905 0 obj <<
+/Length 1906 0 R
+/Filter /FlateDecode
+>>
+stream
+xÚåš[oÛ6€ßó+ô¸ Ë«H=&µtuÏZÝ0°6c ÖÅä`ý÷#} ººÚ¢€†Û %}:â9„¨_ÈáØᘠg_!çðÚ8§OŸôo‡‘”À¨ùV3ðú4òš0 \fÆßWï}Ì='xÞ –_ ÐßãT.ý4)þ„ ê7z÷Wðû{±Fs
+ôVùÕ ¸¯{ |80óÕü¸qNŸ>vþŸÍvNøÏ›:Ž©‡ô0€Øs®‘aõ0®Â…Œ&iašÌ+X†:¨ ax„wÁ´3."ê6æ}I¸ÝE²PY¬«h¡
+(­7ÚíTnèÕ•ï“C+Ê9B³Ýv›fU"af£´¼¸"€QX|ÆL% ä5­6S¥’EºT5ÊÔ[N"žµœ4UÚ Â—:‡è/ýr{¨i¡e©¶ªö†Ê¨5Ô™aõ´+¢0QƒD•ÙCUÅÍs쇑z”±ªÕ`Þƒx nF{±ÜNärˆÀbj3°5úà
+m¥ëÎô™íÏî…F—r¯jŽˆsûBxÆ:µ¥jÆ;õ,wQ1255LVƒ!…Ö„pOü.ÔTåi´3͈*7D”h9,EÖ;7]ËsÕ…ÚYd“gJf‹u];3àyåÀZÕÌú± ð.¡ƒÀ8m¬åðNòVæjæ—Ñáö´ó±W9‰yUÎB”îwn™1¶ZUŸ±–§S7qˆ
+÷ìðš‰Æ½ºñ ÀÄñ,–ÞÚÏ„‰vFÊé_»ñõwendstream
+endobj
+1906 0 obj
+1072
+endobj
+1904 0 obj <<
+/Type /Page
+/Contents 1905 0 R
+/Resources 1903 0 R
+/MediaBox [0 0 595.273 841.887]
+/Parent 1952 0 R
+/Annots [ 1907 0 R 1908 0 R 1909 0 R 1910 0 R 1911 0 R 1912 0 R 1913 0 R 1914 0 R 1915 0 R 1916 0 R 1917 0 R 1918 0 R 1919 0 R 1920 0 R 1921 0 R 1922 0 R 1923 0 R 1924 0 R 1925 0 R 1926 0 R 1927 0 R 1928 0 R 1929 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1934 0 R 1935 0 R 1936 0 R 1937 0 R 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R 1944 0 R 1945 0 R 1946 0 R 1947 0 R 1948 0 R 1949 0 R 1950 0 R 1951 0 R ]
+>> endobj
+1907 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 748.292 164.029 757.989]
+/Subtype /Link
+/A << /S /GoTo /D (page.37) >>
+>> endobj
+1908 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 734.439 209.846 744.439]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1909 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 720.89 198.392 730.89]
+/Subtype /Link
+/A << /S /GoTo /D (page.67) >>
+>> endobj
+1910 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 707.644 192.665 717.341]
+/Subtype /Link
+/A << /S /GoTo /D (page.53) >>
+>> endobj
+1911 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 694.095 192.665 703.792]
+/Subtype /Link
+/A << /S /GoTo /D (page.53) >>
+>> endobj
+1912 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 680.546 186.938 690.243]
+/Subtype /Link
+/A << /S /GoTo /D (page.63) >>
+>> endobj
+1913 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 666.694 164.029 676.694]
+/Subtype /Link
+/A << /S /GoTo /D (page.31) >>
+>> endobj
+1914 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [210.392 653.145 221.301 663.144]
+/Subtype /Link
+/A << /S /GoTo /D (page.76) >>
+>> endobj
+1915 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 639.595 169.756 649.595]
+/Subtype /Link
+/A << /S /GoTo /D (page.47) >>
+>> endobj
+1916 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 626.046 204.119 636.046]
+/Subtype /Link
+/A << /S /GoTo /D (page.23) >>
+>> endobj
+1917 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 612.8 186.938 622.497]
+/Subtype /Link
+/A << /S /GoTo /D (page.39) >>
+>> endobj
+1918 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 599.251 186.938 608.948]
+/Subtype /Link
+/A << /S /GoTo /D (page.67) >>
+>> endobj
+1919 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 585.702 186.938 595.399]
+/Subtype /Link
+/A << /S /GoTo /D (page.54) >>
+>> endobj
+1920 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 572.153 186.938 581.85]
+/Subtype /Link
+/A << /S /GoTo /D (page.65) >>
+>> endobj
+1921 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 558.604 198.392 568.3]
+/Subtype /Link
+/A << /S /GoTo /D (page.30) >>
+>> endobj
+1922 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 544.751 186.938 554.751]
+/Subtype /Link
+/A << /S /GoTo /D (page.24) >>
+>> endobj
+1923 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [147.393 531.505 158.302 541.202]
+/Subtype /Link
+/A << /S /GoTo /D (page.33) >>
+>> endobj
+1924 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 517.956 164.029 527.653]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1925 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [210.392 504.104 221.301 514.104]
+/Subtype /Link
+/A << /S /GoTo /D (page.40) >>
+>> endobj
+1926 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [221.846 490.858 232.755 500.555]
+/Subtype /Link
+/A << /S /GoTo /D (page.24) >>
+>> endobj
+1927 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [204.665 477.309 215.574 487.006]
+/Subtype /Link
+/A << /S /GoTo /D (page.27) >>
+>> endobj
+1928 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 463.76 204.119 473.456]
+/Subtype /Link
+/A << /S /GoTo /D (page.27) >>
+>> endobj
+1929 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [216.119 450.21 227.028 459.907]
+/Subtype /Link
+/A << /S /GoTo /D (page.27) >>
+>> endobj
+1930 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 436.661 204.119 446.358]
+/Subtype /Link
+/A << /S /GoTo /D (page.43) >>
+>> endobj
+1931 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [198.937 423.112 209.846 432.809]
+/Subtype /Link
+/A << /S /GoTo /D (page.43) >>
+>> endobj
+1932 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 409.26 181.21 419.26]
+/Subtype /Link
+/A << /S /GoTo /D (page.31) >>
+>> endobj
+1933 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 395.711 198.392 405.711]
+/Subtype /Link
+/A << /S /GoTo /D (page.82) >>
+>> endobj
+1934 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [147.393 382.465 158.302 392.162]
+/Subtype /Link
+/A << /S /GoTo /D (page.35) >>
+>> endobj
+1935 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 368.915 164.029 378.612]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1936 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 355.063 169.756 365.063]
+/Subtype /Link
+/A << /S /GoTo /D (page.34) >>
+>> endobj
+1937 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 341.514 175.483 351.514]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1938 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 327.965 192.665 337.965]
+/Subtype /Link
+/A << /S /GoTo /D (page.55) >>
+>> endobj
+1939 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [187.483 314.719 198.392 324.416]
+/Subtype /Link
+/A << /S /GoTo /D (page.56) >>
+>> endobj
+1940 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 301.17 186.938 310.867]
+/Subtype /Link
+/A << /S /GoTo /D (page.84) >>
+>> endobj
+1941 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 287.621 186.938 297.318]
+/Subtype /Link
+/A << /S /GoTo /D (page.54) >>
+>> endobj
+1942 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [176.029 274.071 186.938 283.768]
+/Subtype /Link
+/A << /S /GoTo /D (page.54) >>
+>> endobj
+1943 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [158.847 260.522 169.756 270.219]
+/Subtype /Link
+/A << /S /GoTo /D (page.50) >>
+>> endobj
+1944 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [153.12 246.973 164.029 256.67]
+/Subtype /Link
+/A << /S /GoTo /D (page.81) >>
+>> endobj
+1945 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 233.424 175.483 243.121]
+/Subtype /Link
+/A << /S /GoTo /D (page.55) >>
+>> endobj
+1946 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [164.574 219.875 175.483 229.572]
+/Subtype /Link
+/A << /S /GoTo /D (page.74) >>
+>> endobj
+1947 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [170.301 206.326 181.21 216.023]
+/Subtype /Link
+/A << /S /GoTo /D (page.63) >>
+>> endobj
+1948 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [181.756 192.777 192.665 202.473]
+/Subtype /Link
+/A << /S /GoTo /D (page.51) >>
+>> endobj
+1949 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 179.227 204.119 188.924]
+/Subtype /Link
+/A << /S /GoTo /D (page.54) >>
+>> endobj
+1950 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [221.846 165.678 232.755 175.375]
+/Subtype /Link
+/A << /S /GoTo /D (page.71) >>
+>> endobj
+1951 0 obj <<
+/Type /Annot
+/Border [0 0 0] /H /I /C [1 0 0]
+/Rect [193.21 151.826 204.119 161.826]
+/Subtype /Link
+/A << /S /GoTo /D (page.86) >>
+>> endobj
+1902 0 obj <<
+/D [1904 0 R /XYZ 72 786.278 null]
+>> endobj
+1903 0 obj <<
+/Font << /F27 394 0 R /F15 393 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1273 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1953 0 R
+/BaseFont 1959 0 R
+/FontDescriptor 1960 0 R
+>> endobj
+1953 0 obj
+[ 529 816 762 593 653 686 707 762 707 762 707 571 523 523 795 795 230 258 490 490 490 490 490 647 435 469 707 762 490 840 949 762 230 311 490 816 490 816 741 272 381 381 490 762 272 326 272 490 490 490 490 490 490 490 490 490 490 490 272 272 311 762 462 462 653 647 650 626 704 583 556 653 686 266 459 674 529 850 686 722 623 722 630 544 668 667 647 919 647 647 598 283 490 283 490 272 272 469 502 435 502 435 299 490 502 230 258 475 230 774 502 490 502 502 333 375 354 502 448 666 448 448 425 490 979 490 490 490 ]
+endobj
+1954 0 obj <<
+/Length 1955 0 R
+/Length1 1956 0 R
+/Length2 1957 0 R
+/Length3 1958 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSS12 1.0
+%%CreationDate: 1991 Aug 20 17:33:47
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSS12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /BUXHDC+CMSS12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 46 /period put
+dup 55 /seven put
+dup 66 /B put
+dup 67 /C put
+dup 73 /I put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-62 -251 978 758}readonly def
+/UniqueID 5000804 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+‚úBª±XŸ}`¨¬z–¿ŒZ¯æÔ'¦ýÞ¢þð¸«Ã|m¶,‹@tÍl8TÌf头Åù
+Uã«œ@fÍ'?æíy.*&·$dž“)ÈôbSET
+™áÝŒ?‘Ôoß²­Ûo&ÿûX¸Š%¶ïâk¶\ä¥
+ï¤[…† D£lc#‡•¦ðKNÆàØtr¾›/I&TKÓP~w6¿Z!bfƒ:
+§àõŽåÚ¿Ôgà­¶»0,®ÞGÚ(k×#µ%o?)Awù¨‹•¥(„nYÚôj){÷ê]0S^Ä­Œ`Œ
+}vð:*#-x”†ûÉJjvò_È£úè‰8„_³6]×z"¨úõÞ¢Ká£zFR¢ôøbÕˆ6&®iÁuÒ¹ˆ½c-„$ÿ´\Îb”ε2‡­¬vÓ§%"GrÒ‚òSì×ÎütÃTÔC?®ÇþH׬.^xÚLí~Ïm<E«™¦¨åÿúµÐŠIëÎ ¯ÕÚ®MPëÓKÈu¦ù¶ÍØÇ[ൊèƒáõsôլ߄âØ£ô3&6¼[§åƒü…é£ì)-hýpéR\º14
+÷%UcyÛõëˆ6$.i‹þä–ä.³?4b›w÷E©™Í~>ÿÁeª…§´_7ÇÒƒYpŸ{6fµ©¢„’¯¨±8€.K·Z:=`G4B’‡Q©ã¡"À^šMW.¾Àf?*¦§«7…¯2Ú¿9ƒ!I»Ú‡`­!L‘eF…£V›û ¦c3–qó`Àƒjç½—[D&Ö4xÖ¾ñë:ôÄ%âb¸*œõ=Q˜gGäŽUåo-Wp?8™¤Ê/L}Ò öÂåÑ­Oÿ+›]«,
+Ø}J‰t“ ÍSÉ̬ùÉ¢Ö‚½" 7€Ä^þáŠÉ(,MäQóª°KÈÄq6Öõ
+E–è õË´/°8i5©U}ç ÿÌ!Œ>¹ È©£`YѨ¤;Åû¥ßÓi¶¯°äa›C¢i›2²Øóã°sÐôaàsÊÖŠ wü%ÓÑIÅçØ’?SluaØvHæÌ*r§ˆS8¾•ÊÒXuzŽ16%ò{Ñò+¶QûÛþ^à9ù³õà“D«!
+Âß$³õ÷Jùô­æ„Äé÷¿vW-†—-§¥ŸÙ-˜Ò7NÜñ3ö-x'r‹ür°¬ÕŒoÁæàí£”.‰©©ÏmåíĘFÛxL¸süÉÕ)PmåF]qŽ€¹ì¦ËØÚÕèɪšIëÓQ+Û@ä¼£
+·ÇOH;1¸x;CÊ
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1955 0 obj
+5846
+endobj
+1956 0 obj
+1196
+endobj
+1957 0 obj
+4118
+endobj
+1958 0 obj
+532
+endobj
+1959 0 obj
+/BUXHDC+CMSS12
+endobj
+1960 0 obj <<
+/Ascent 694
+/CapHeight 694
+/Descent -194
+/FontName 1959 0 R
+/ItalicAngle 0
+/StemV 76
+/XHeight 444
+/FontBBox [ -62 -251 978 758 ]
+/Flags 4
+/CharSet (/fi/period/seven/B/C/I/T/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y)
+/FontFile 1954 0 R
+>> endobj
+1272 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1961 0 R
+/BaseFont 1967 0 R
+/FontDescriptor 1968 0 R
+>> endobj
+1961 0 obj
+[ 581 917 856 672 733 794 794 856 794 856 794 642 586 586 892 892 256 286 550 550 550 550 550 733 489 565 794 856 550 947 1069 856 256 367 558 917 550 1029 831 306 428 428 550 856 306 367 306 550 550 550 550 550 550 550 550 550 550 550 306 306 367 856 519 519 733 733 733 703 794 642 611 733 794 331 519 764 581 978 794 794 703 794 703 611 733 764 733 1039 733 733 672 343 558 343 550 306 306 525 561 489 561 511 336 550 561 256 286 531 256 867 561 550 561 561 372 422 404 561 500 744 500 500 476 550 1100 550 550 550 ]
+endobj
+1962 0 obj <<
+/Length 1963 0 R
+/Length1 1964 0 R
+/Length2 1965 0 R
+/Length3 1966 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSSBX10 1.0
+%%CreationDate: 1991 Aug 20 16:43:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSSBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /TADAAA+CMSSBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 78 /N put
+dup 101 /e put
+dup 111 /o put
+dup 116 /t put
+readonly def
+/FontBBox{-71 -250 1099 780}readonly def
+/UniqueID 5000806 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÕ™=ü 1Üh©{]N À${ãéEV´žN¯n©Ÿ @Q”ôØÖDòáðè õÇÕ•…Á®FÐ%¦|Õ¥žËÞ*¯‡÷%©„5‰3…Ænm« 2tº\Ü™-—fÛ9bÔ†âh%P¯ÞËËv¢ŠAw[.ôv|¤(cn¦ž€³¡Ó0`¹ð%–ï$1ôS'Ë»Ëc] ÆF—gYå.°že· §¡n¶^½&-½¦–Mk‹Â ¹rÚX Éúg¡¢k›Éq*šZø#CÑkÌT/‰ÒŒ ¨‡\é Ѩúúeø“ÊF/Ú©n*q«È©¢ ç®°äZ:ÞWê#·R’B{(-œ!×e¨Æ‚z÷tºï¢MË-²$Ê<T ƒbÉÉÈÒY¿£Y×(ŸÆ–9x´l·Dü–Õñ¥“dnlLnR
+ª©qh2Å><8î1£é™_°‚ºø?Îö:Se(ƒ”(­ŠhòT¶\ìjÛÛµ$Ôc“ˆ7J\tÄmòý0Ƕ•í2¿ûQNDK±ó¾öCÒ»ü²”©‡‰-
+Q+å¹ØDmöóò“E''EË#Úz¢æÿYSrJ:GQýÔå Óÿ¦öÉ]œ–.oEBm@!‹=‰D¢tzð•YvøÝ“Ê3“åt¥Ÿ
+39!ñ‚.Øeå‡A*yR¥Ž‡H[”ÅÉód{èÎèÕlÿQíh¡lÏÙL[§ã¢Î¶ªc˜‡7‹W0™ýáý:•N6‚™í1È,][Ï3Á_†½#M脾E—){“3Æɼ“åHŒ Ø©ßÙ‹¿Èbà±@³PÌ’uö²¹SôEP"{Ê®m• oL£÷ÎÃÑ]“nà„
+΃ÅøâMmÇÍÞ JÝW¶«¸Rc+RM«4]kÆPÁÙòMvÚ­K”á2Ÿ“KrQ}·à´u!¹-w¯|²0‚J¼ŠæŸF¹ìÇÆ­_¿*TàϨf­nÊó†;#u›JuÒ] }-8ÕðA¾…û{¾O=çâ÷N­ûí÷äsñnh1Pžo V©G$ÑÈ\ó ³Ðþ/þþůNúOƒÁH¢–üLb>[šñ+z©IØ@Ä·´ÛT£W«J-#öl»2O¹Ü€± ‹‹ešA.ͯ3Ag§ã³,é?ÙC<JeÆvi%YUçJU7¢Ž¾½ÛÏGè(‰×ç³Û
+LË©·
+Ž€ÏÒ<ËzqõJ»]¦:¬òMˆEyx±LªBÂüf]yú4¡í½X3,Ò†”Ú³–åÂ8ïM!‰o•84P3•b0µ;mÊh¥¯3í]Goô"›˜i.±-òI×\_ñE€nÕ„Uî…•$ÆûóïübT²Xùs8Êd£êp¤VýGÛ"º,_òV`’=«ŒæëÕ<Þ6u³Â"Ž,Ÿ.
+ÕàÐÀÛ™ÿÕrq ¤*t&?­@êàü›É¦ïü§•6t^œbyl =Mé‚’èµî¶W .á‚Ö¯÷Ê/ë—ÈPEmIXÕ 6Ÿ¡•@mQú:C4£sp…)¡„ÿ@ã\ŽaœÆéeMïÚýõ)¢'‘P ïòÕÊGQ>eèqÙ~¾¼®„À7k†¾50000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1963 0 obj
+2970
+endobj
+1964 0 obj
+829
+endobj
+1965 0 obj
+1609
+endobj
+1966 0 obj
+532
+endobj
+1967 0 obj
+/TADAAA+CMSSBX10
+endobj
+1968 0 obj <<
+/Ascent 694
+/CapHeight 694
+/Descent -194
+/FontName 1967 0 R
+/ItalicAngle 0
+/StemV 136
+/XHeight 458
+/FontBBox [ -71 -250 1099 780 ]
+/Flags 4
+/CharSet (/exclam/N/e/o/t)
+/FontFile 1962 0 R
+>> endobj
+882 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1969 0 R
+/BaseFont 1975 0 R
+/FontDescriptor 1976 0 R
+>> endobj
+1969 0 obj
+[ 458 458 417 417 472 472 472 472 583 583 472 472 333 556 578 578 597 597 736 736 528 528 583 583 583 583 750 750 750 750 1044 1044 792 792 583 583 639 639 639 639 806 806 806 806 1278 1278 811 811 875 875 667 667 667 667 667 667 889 889 889 889 889 889 889 667 875 875 875 875 611 611 833 1111 472 556 1111 1511 1111 1511 1111 1511 1056 944 472 833 833 833 833 833 1444 1278 556 1111 1111 1111 1111 1111 944 1278 556 1000 1444 556 1000 1444 472 472 528 528 528 528 667 667 1000 1000 1000 1000 1056 1056 1056 778 667 667 450 450 450 450 778 778 ]
+endobj
+1970 0 obj <<
+/Length 1971 0 R
+/Length1 1972 0 R
+/Length2 1973 0 R
+/Length3 1974 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMEX10 001.101
+%%CreationDate: 1992 Jul 23 21:22:48
+%%RevisionDate: 1997 Feb 16 10:50:33
+% Copyright (C) 1992, 1997 Y&Y, Inc. All Rights Reserved.
+% Please note: This font is NOT in the public domain.
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.101) readonly def
+/Notice (Copyright (c) 1992, 1997 Y&Y, Inc. All Right Reserved. (978) 371-3286) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/FontName /IVCHLA+CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /vextendsingle put
+dup 16 /parenleftBig put
+dup 17 /parenrightBig put
+dup 32 /parenleftBigg put
+dup 33 /parenrightBigg put
+dup 48 /parenlefttp put
+dup 49 /parenrighttp put
+dup 64 /parenleftbt put
+dup 65 /parenrightbt put
+dup 66 /parenleftex put
+dup 67 /parenrightex put
+dup 104 /bracketleftBig put
+dup 105 /bracketrightBig put
+dup 113 /radicalBig put
+dup 122 /bracehtipdownleft put
+dup 123 /bracehtipdownright put
+dup 124 /bracehtipupleft put
+dup 125 /bracehtipupright put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueID 5092766 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+IºrV0ºø^ÅEí²–7€½Ã“;k?ƒ‚­ú¨ 0\j,2dÜz=ýsÈ%áÛ†zêS'ØS3/å!:¸B>Í vÊFÍ R ù Ô¡Ô!ü) ¯Æ^ßÑõ•…gç½i³ýhßSš…KÒ'59›ïE·mo‘
+Ôëò÷¾_Í··Y f ·«©M½‚¡òâ²qm5B"ôò–LõvR5A•[,œÆe]³k7ÄHeµj¬²èþU™9«#œ(âýc’º²zðI Ω«n~#ÆOÚ)Ûˆ0/3úÛ™\Ì*–àhØ— üûÞÞ{€úóš£|ýGÛÏÅ#54%µZ™‘Dß‘‡¸¨\ªë?y£÷ÄÿÌúöáìÿÌ“"›Ø¹qÉW
+ê¶+ŽKð¤,Ûž‰®˜*ž„èO‡LÙeíF”dR¸VHJÄg|s[åìzˆƒ˜Õ½¾ôêA0P.Îc.m"ÿ‰ü"–Ëø™èîÐ4_PzäôDe¼1!gôhû¥œ!c½·Ê÷w·¢Q} ü‰opÇ{Õ‰í”r1£†È¥ʈ¸O¹RFŒÛn™hˆÖqB?IIÐTá “\« \›Wÿ×g°Nc*K•Ó’£àÌpùª&öBtt žd9+¹É¾þ3*:‰ÛgdͯáQœ˜HÆ3òMÞ2<qü:o^.½Ë ´F*\ÖuNÄ¥­¼ØUm%[X.½µÎl—÷â1o^¬éO(‚¢$Õ@-Ò“¨].Y¨µ©lŒ§á¬k÷wÚž;ÉXÄ“ &Ó5Ý{A6ƒ¶ÛqV‡9ɪi§mUÇ7_¨“´-½ãï¥8”½ø!ýqˆçÁ­ŽiÐùàã"°Ÿ)Am?7¾ñeŒÛ
+Cr(&¢z¾È^Î"_ZzŠÍ+†Z0¸%È¡7”Â#ßi©†e†ÖõXƒÒ¦›š°îÊôω‰´—TBèš‹!L¸§iK=¶8¿Î²Üì´îíÊÙšPõP—CòßÖ³[¯oÁ¥z£‹!ôæÑeØCûp]\柰IQ·$¤OƒÃ
+T°ÑÝÚåN²ýÊbå¦8üÝ´(N÷ƒC<Ћå2c †4”ÕíöyБzG'Д…¶bå;w$ÊlEÙ‰úãôášàV*NlYN!‘3¯
+Lªß•o§h"›°’‰{ä¤ü²_¤(çúÀ—N`f"õ™µ„­%»¬ ï~)·S³´§¢ÁÐê…;a¤»äÜ›o¼™~6εÁW!›ˆ÷Œ3 $æEõ¦WLùE½:U'Õ±šaµUg²ÆˆùˆZ‘…‚Burk§ÚIf@ÿÉ™†žNƒa0Tíü!? þ˜÷9RGw7Ú¿­XgÏþߧRyø›Ïõƒ?ÃàV¸^m¦ò høYoýæí‘V\b9þh$`‰èËê›-\~òÙ{o؆…deÝ’g_EÂêSO­€ Ý¡E£I«Î©bÖÓÖw`¶
+Ö‚ƒä ]œãÇîÿ¨Ž `nŸ²mo«x@ÍÏà ÜÁ®ù±4²@óz}§\ ÍßR¶æ#Ø;¾l~‡MºoóUÜA
+ãÚÏ*“ÿ.˜~û©z§Úð˜µ@h³—ÔhIêðÂÉ%ø½4›ûØ[9«TB´×"Eå
+‡]û”¨) f# †š¨óªÃJözN­‹¶~CòH aR€5ˆ$— ÊámUšÁJœî­ ÄÏ)/ú‘êÞû 7«62Ðu Çù
+Ä©’ørfé±…ä—´Ûÿ!å@~Y,á\!øðT
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1971 0 obj
+5014
+endobj
+1972 0 obj
+1367
+endobj
+1973 0 obj
+3115
+endobj
+1974 0 obj
+532
+endobj
+1975 0 obj
+/IVCHLA+CMEX10
+endobj
+1976 0 obj <<
+/Ascent 40
+/CapHeight 0
+/Descent -1760
+/FontName 1975 0 R
+/ItalicAngle 0
+/StemV 47
+/XHeight 431
+/FontBBox [ -24 -2960 1454 772 ]
+/Flags 4
+/CharSet (/vextendsingle/parenleftBig/parenrightBig/parenleftBigg/parenrightBigg/parenlefttp/parenrighttp/parenleftbt/parenrightbt/parenleftex/parenrightex/bracketleftBig/bracketrightBig/radicalBig/bracehtipdownleft/bracehtipdownright/bracehtipupleft/bracehtipupright)
+/FontFile 1970 0 R
+>> endobj
+881 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1977 0 R
+/BaseFont 1983 0 R
+/FontDescriptor 1984 0 R
+>> endobj
+1977 0 obj
+[ 643 885 806 737 783 873 823 620 708 655 817 682 596 547 470 430 467 533 496 376 612 620 639 522 467 610 544 607 472 576 632 660 694 661 491 632 882 544 389 692 1063 1063 1063 1063 295 295 531 531 531 531 531 531 531 531 531 531 531 531 295 295 826 531 826 531 560 796 801 757 872 779 672 828 873 461 580 896 723 1020 843 806 674 836 800 646 619 719 619 1002 874 616 720 413 413 413 1063 1063 434 564 455 460 547 493 510 506 612 362 430 553 317 940 645 514 535 474 479 491 384 615 517 762 598 525 494 350 400 673 531 295 ]
+endobj
+1978 0 obj <<
+/Length 1979 0 R
+/Length1 1980 0 R
+/Length2 1981 0 R
+/Length3 1982 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /OEDBGB+CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 23 /nu put
+dup 66 /B put
+dup 67 /C put
+dup 71 /G put
+dup 82 /R put
+dup 84 /T put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 105 /i put
+dup 110 /n put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+/UniqueID 5087383 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÖ¨ð[G¯•ï(©ÅaÛܘÄ|õRPé6n¶ý=: ªbãÕÙ9s2m4{~ÜC‘ÉßD…¸ü˜Ô%Åx’Ý÷Sd,Õ&©jÎÚA x"±ÐŸ—”æmѬ,+;ÆþÅboB|Õ®œTÇ÷bÃoI³Âåæ*ûVÜî‡DZ©BÁJæÑþ©ÏŸª2a{YŒå‡ï0Qâ(÷/e@­™§AòGÆ€挄éÑп™ª]w}ˆ§ÓÎÒêgô®a輕çÚ8.‚ݲ° ÝcS,tã¾^ÅU ¼»j³‚†×q.’o†–ƒr¸!N›]@Ájß
+ýGÄ“75uÆÊ‘ämˆÞ$æ‚ÞÄKWêŠøNWÔVF2PØ,KPË» 6™2aƒóÔbw;S³ÉæÛBÖ³ö{‚ Õu&D“C½ùúÏhN¾ã›e^±½L2Ib^ÇžY6þ2Ùò"CSò¤l5Xï!ok²£º÷R¾ì6ÄD UjïìôTº|»§S{ËëÂG3:‰‰6A…|Ùõžº °£ÙºJ 3•3kLÚK¦EnMpúÙ½«·òq¼lHÙßZo®xV Þ<HÔzg |T}˜­8ŸÒD”ÓeÖ *¾¼Çžq'¬Aq—¶“ïïÖ£”)ŒØ Ï¨†ãN6‹LÝNÙô̪] zZ`€aŠ–Õ²?úŸpÜ£¼ ›”i©oP}WúúÍÉðYÏØP¹¡eE“åÿ¢éóÀ¶†È\뫃FO&ÀIì pò]Éã™üº™Äà&•9IŠk~’à©ù"ÓÛÛ½Úv½­¢£ šŒ'‹lçj£NÊ_¬pF–&ÀJÞ‡\ƒ{
+kô@0'KlY=³˜•ì›!Éem.:Ì©6®E)Åuv`ª]›vÞÕyA~eÿi^AôªÒàG‚´÷Ã#ü.zìl´ ™„0 ož®äŒß{§MŸŠÚÒé”iû}¸ðA<Ñf3e.¡Eߟ‹qNÍK»K?JŒXVXxÆ»®ëõ+0:Ô ŸPz’Ü2=6gÖ;šý¢q9ÄTŠ·µÂ4ž Ü}è€ó «uó|·xF£#OOUÞ„"¸-”.¶ÈW(¥q<Nz*sU~µú>#L’èöŸã³’jýë 
+lÁßOæ†VÖ´ÖÊꉅZûº}LØ-r:é=ÐûVóŸŽ”0 E›Òãy¸\MŽM§Óc¬Þ½3¾¿¡B"Ìʽf>Hš„™åïi±ìï ÁCëÑ›YXŒËÉ¡J½
+öN rWwº1&¸•&]c˜¾ášùV£R?úyMY}ŸX{¢î¡øSÌ^3u ݯtÃCþ/fÂgrg`<=Ýg„.kþ}*Ï1@–ÌZaj /‡QˆŒÀкÌý(‡¿ËÈ?kô¶¯9x¬wl2\„sýèŽ þøݵ©Ÿ—ù
+ãRyîÍz€¬aUMüðÇ}€‚)ßdÁ^@ar9Ø| ZnWúÕ •˜@ˆCB5µ´ß›2Ðë[£ ÿvhgû{ÇZÙ›ˆÿcÝ4_§n#Îúk=¬¶…±RÀyB*B?„ÝÇÁûäíÆ¿«³«=<<Ý¡-^ó:/z¹ñTø|æðr~öêš/ˆÉO+¬ì˜=(lš€ÔU,Jj\D|©
+Eêo@팫Ù3`£ÿDu^¿ƒÌ¦ð:ÂáÿêN„#KDË&Ùãå9J±'o7CðÚ"ËRb#Èd©Ù袂þÀÊÙ㳇·
+\¥Èß1{Gh†RÝÓà¥2nËî•`GîÞºä©ÔuÁ eˆ=àq™A†²oÉ-Þ".,í¶“á|\;…š€\˜8‚!X/rAp¾NfI’ìæjƆð/qåÇNŒG—#…Ýâ¶$§ÿ6»ç2QÅ/MyÓ9ú ¯Xû¯Y4ȶ²—w® æ9^3+ã—mkX*Ô¼üdd82+¿õL9ZØr<ct\IÊ.I êDqÄéI«>¶ÇŸÞþ—t" jo¯6XŽ>YvXú` Äü– T3F”·^¿/½ÙŸÄ¤ÍcYGðïG!Œ”£Ôëç+¬è›.yl»pQ¤úÿ•y97jk9–Ž- ûhÚ
+| )OeáWÚ‘üvL! þ§s†=kÚ)ö“[m«
+ëH𣔯³Æ)#1†¬éS[¥'¸ñéãtèhà4½…¯Öï‘t{;ëØlH¬4k¤´†cd=À‡õ=^
+ÆêïNz-­´¹âm®ÅÌ!ÄîQ¤GÉU& 6âÀt9ç×L}íeóA(|íF@×aHçzÄjYÜhˆ¤š3²Ù25ƒ#Ï)R7,Æ·¹€×î(´Ã>//`³³Û‘0†´Ýý£+mŠÛò\Ûµ,UïMŽ3ó謞¬¨ºÖ~»ÚM‘+Hé ¢”|%÷Ò.’J7F¶g¥áÎU’~Lú/|þl€<SVðK|û;„M}³‘ˆœü6ÒÖxÑjï’ cÑ­A¾93íý³Z“î«—míª#B+Ýäå–×_±¶+r]Y™×dËeä>²*e‹Fí’öU«¡8ñ¦Èâ v¶ä%Ñw‰~‚WbÑly¾À‘kO—Ú|dѱ@#uê+ج<&û“œ¡1Í0gQdÐCõ„ Òô°/‡h°a¹Qá'¦^+Íœ­~ÂM¢þ­2ýÉ£L/Þs‡Ünê Χ›qÿî².w£…r0Îp@{ ì U+fOÉBEáseÌúOÿÈJBzý¡52ž$:ÍÚn(7ÜßëA×ò»yz(•b_~R–0éñE¾÷–ë÷zRëJ3CkÌ7@ûéŒRççi‘¹âžöϹ/Ýöw»ˆz3žæâÉ­ã8”í¾| ”žXlÈOìØÉO›¥¡k[ÜyÚ<Ôf§\m3K.i†sOÍmö—`eòÙ°¤¥‘xhŠg/~P½¿Æ½ê¤°ÏæK[
+Äô˜@5áFžB‘ [vØ,Ši×äq'cK
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1979 0 obj
+6252
+endobj
+1980 0 obj
+1017
+endobj
+1981 0 obj
+4703
+endobj
+1982 0 obj
+532
+endobj
+1983 0 obj
+/OEDBGB+CMMI8
+endobj
+1984 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 1983 0 R
+/ItalicAngle -14
+/StemV 78
+/XHeight 431
+/FontBBox [ -24 -250 1110 750 ]
+/Flags 4
+/CharSet (/nu/B/C/G/R/T/c/d/e/i/n/r/s/t/u/w/x/y)
+/FontFile 1978 0 R
+>> endobj
+713 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1985 0 R
+/BaseFont 1991 0 R
+/FontDescriptor 1992 0 R
+>> endobj
+1985 0 obj
+[ 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 ]
+endobj
+1986 0 obj <<
+/Length 1987 0 R
+/Length1 1988 0 R
+/Length2 1989 0 R
+/Length3 1990 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMTT8 1.0
+%%CreationDate: 1991 Aug 20 16:46:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /LMJFEL+CMTT8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 61 /equal put
+dup 67 /C put
+dup 68 /D put
+dup 70 /F put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-5 -232 545 699}readonly def
+/UniqueID 5000830 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+<5€Î;Q×B˜A”Ôñx€ ‰/¶çaÿCÆ?’Vµéô"{x"+ªÔÕ,wF-ð’"œlžE»Ÿí|ÕØ´×+àá)i¯êþñp`<Û‘Ë$1s±šVM);€£Ruô÷ŠMܘô¡ÿõ’F=”I`û1kåð9`ù±òËÌÔHeãˆñÔ+ü•qÌ`Ï#Ç%`˸ƒZ ¢þgk;H°“˲ÀÅ:ñ~ųr©w¿Õ/ûpb´þ *Ôï\Œv#ì“$¢Ë;@/ÌÎR¿Èf/Š9Õñ´—çÎ4ájŠ”
+Ë#½–†xú zWR¶+ÃANŒfaBä²dê^¢hŸVÔûO=ÆÊéºûUÌ.
+—I‡€ðȾï A®ÖjT–Œ·›ßdEäßë<¹•O©ímÀuû„4¾\éõ™
+=pÄ[ç¶N²ò&†Ó(v“û`G²*D+jAEX› ì½;¯„SY­)ÿ³q™\{fUŸ[åv9vpå©Vd^ô£V«¶"æGtC*þa<ä$+`©
+¤§v﨎UAëJÃá“U&\þƒ¤U?V
+3Öï17žšRÇ\w·ª‹ò'r¯›äJr"ã¿“rœ2âHºÅš%òF †Â,R×Ö!ÆU*ôGkëñú7KâЪgy?@Gce(³ÈtÃE.yV†¾)3E¶òF•új1¬ûÏ<œÔÀŽŒvPŒ´÷f'…¥ûøÛT@,ÑMø¤=ÜtÉ·
+¹ÏLû(}žó«Aý#^oSžù-Ô<9'½u V±`2&ÐÇ@‡+·¾Åüiy凰ºaÚÆ6¶ÝMhöÙÜF(¨._~
+gš—´D¢yßµùxQªoÓ=«îfcû+¥È2Tïoòœæ
+ã§"‡!4í¹ÂÜ<Æ‚¢ì‹^_áÂ…àe,v ÌÉÁ©2 ª›ÊòmYõžþ´·çãD4¸w´]LéW«pë{'1h¼o=vRmvÆ`ÒC­¸%H”r«ADÕ)IFE£¯–WɼØ4 ÃàÁÒÆØÑèâ%•:QRè×ì]<VctM}sxM IL
+?à¸ÎÙ1ÑQ®â9{bþ­6[µÀ®øÀÁîÅ–°Á°N5V8´q¥~Vœ¢z³ÛU´n,1TÀdV^K-ÂìPï•-ÇÀÅ› v6€hƒðèçAYüª(¢`.Ç+4o-Ëð¦…Í–¿Õ¾Å„TŠ‰TVwJÓ·=½TøÙÏ M9û¸Ý‚ÊèkWÁí#XýI¤¼ö˜€ ¢Ðí{NZ¦‹ykèE©nÕç¸ÎßWFpÜäß¼2²ä¹8b#åžNM‡Ü?@+g¤ÿKæŽe\DçL–ø öbÖe ¦JJc-—¾j
++@Nä Çׂ0=ºPï\òý;žßTkºÒAÒ íÄ ÞÂVP’V¥ø¤€ŒÞ´OwÅY
+6ü÷2y_n4®—¦¡IÙ™_C¥°Oa ìèŠ#2ÃËþg­Uß’õ«‚Ó’[¾Í/ 䲕YÐ.È
+6óT.Ï­Éæ€:…ì
+\Z Úv©‚!ûxÔZ¤mcWæ|KbÂ¥ª¼‹‡ûÇH¬
+ö;¸£c"î„ÜWX/Fv††s§´jÛ… ‘Ó0Ì«©A˜/ƒ¨’¢O^ˆT¤|Ú­ eïõ…i>l]´·3„ÆÍÕ¾àB”D¦ÚmòªL] Ã÷wT*§z=[PVj }L“ ï+½½ùêp@ð¦ËÂÔÛEy­QÑQ%¿,+0 Ü(>á…Ó¤¡ìK¤Eü˜wˆÍÐ:hRŒ4£ÔÅ£õ[ǬÒ@O­p-Ã( T”ÂRØÞiøVø^ó\jeÏÁ¶ dû®ÐX:ÐÖi5`¥r¡×«’–-ûH8¤Má+â‰D£ÄqÆÎ ø«óEîZ¨|fƒ‰xh®(oWyòVÚãB²1áíáñ6ý2Õô®FZŒ‹h¼ÛÇî÷¥ãæróÉ%ÿí‰BÎíÖê»0àÄâÁ“C4&ýZœpVd'8ähJn¤ú/ÌY7€×ü—Ë9+#wtQù›oCIOAuRç•äI•~øÏÃ9†ExùCíg,ae×…ôgVJu"àÂH•ÔÕáÔüEž¸z³^õËßQ9ñ­éÕyŒB›#
+¶Á} ê\½F M
+Óów7ìi4æz›tÛÓµ±uùz
+…âH/U~NäDï¤Îħ€$ãd? €¤Ÿf‰,bW³­ó7x%ÜhHé{©‹K¶nr_ÀonÌ1ŸÁc_H"Û@Ã<•¾Ô0\„tpÜg—ÙØœ÷ž©LÑ B‘@bBB ÆüFdK¡¦÷w$«ÑƒØ(hé<E©ëv'¥¿êî²®öŠÚ°ç! ðÊ;Gïu¢ˆå_/ç­Q#ƒˆh5¶µˆ°_ý`rJȺ;îþû%k€ž¦>ýÌÏ[ô Öꦊó!9_¯¢j%™Mëå°jKñ S´UË1ówñ¿íB«hfŒ®l‡áÿ9šû€ú²XÅ¢ÝóÚ&ó¼'Gî("ðî›~¯U^ÐkøwŸœ¿a ¯&ƒë¤q[h ‘qÛ¬Þ/ ß³™)ù¢ ˆÖBßM{VÅ5ä'ñË>{¸KÀ«¬{a
+aHK ‰ÀÑcl˜äÐÿG^: QÐNM®x‹Í'Pë@H1ÿÏ“&¨ô§“)Áy¬L.?†Á|Ÿl]×1Ü2(p³8/9{t$»¸æȪ!÷Y^­{S~³Âeʪ¢¢
+ôëJrï…×(”~ó©ïó i†Ùà4
+$×1ámJ¬$~†&þÌh„]øf•véÈ"×mÐJ'½ˆ…îq”+mHUtêDDXu¦E~p§RAaáLæžÎ05]|³®fSJ>D߬ÎáÑaýW{f'=ÇQS‘–lë°ê€çð
+pÅ|S§¥(~d-Ù÷,é¼gsIšŒºèq$¸¬ñÖö'ÓJLÞ®?) îÖÖÞàŠn U
+¬8Fìcã› 7÷m’{¥UlúŒñ&£¢#O ×æƱSº=O[çñ˨üš¶*ãAõš€äDg–
+ ËÅrTútwý\ùa¶lDE+½&9çÒ†~›Ájà%Šÿ;Z¥y²>®à‚VI Á„±‡.|qíbæäß6©ìFQë#UoH¥ƒË³çœ9þ-î®$édÄ«Aè~;I~…\¶VGI²d0ªÆ˜é¡Bã›”´ì{D"ß'×f5ªg…cþÅÃVÇÚ²3ÊÑ’ •™› ”Òu*×`ë†[ùX“TÀDú…ã•ÊyR˜¦³üoŠÚ¼¢
+˜]íö ra sø6iâÍ›% Æóæ%
+´‹ÿ³D@üÓÙNÝú»%u¥ÇŠFŠa”vWq7@¨!£æ&Aûâ—€)–gTâá¨n“•!Æw…Ý”Æاøèá<^óm“I+¹(ºCÿ |Ét‰ÔKdÎÚg³îQûµØÐKš´E§›À–*n;¤Òwâa?~pƒF³uŠR`4>:'ÆO9ÑÜö{FaÄ´H†ÈXÂÚ|@5`-’þ•ð°ç²Éñ•ÊwÙ¢š;eÊ$¬KŽë~eÎUˆ$Èpƒ>%sôuâ½bÖ’Dè`A(못µUAÒvGÃSj·ûx·8Cí žۥã‰ûóÐ,*W–,€‹)%qó¸Âú¹¥ø}Mn:*‘‰N¡ÜÿšÁÁ£Ža*\›¯¼[îÑG Ñûê¿p@¢ìPŠ" ™þ®‚(°,gE0¸ÜäXèÓ’Ì8ª÷’d¿ŽÏ­ÏoµÛœå4Ç1íy­Ÿ”wÈëìO©èäK¯¬oQq
+îˆy‘¾Ê[p>™èÉMbý¢2'ŠÿŒYcÆ LaP5ÝãŒS<_ r
+ÔoTÚôÿY£„ ŽÙ®mIxk Ÿ¤¿þC_=þ9"‘•5 Pý¢ÂCƒ¤rß5;6c£`Ò´?œU[IÓõ:GÅo(UÜ>Á³ß ¥€ª”:y"«—¿XÍ)ÆŠ©•~×3´”ÀÙ–8ž3^zæ¸ïø÷ø)-Àln.EN‘$ÖuFMM˜«x!íшõ$ í¥ô€`[?ðõíÀ»¶§ðO$G^±!×U¤ÿÕèÜyœIXÔoî¡Ô=Ÿ]Ùw25rÆzŸ)Às@g8Å^wÍe ¤
+©Ò£—Ÿ¬Ý¾ôAÐ?’{Oæ=Çl–w*GF¸ˆk{CñeJÕEQ‚¬ æ#ˆðGMHÎÍÀq(°<íAW®2Y½%óXv·/‘›Œ¦é
+™~©äV¡Ò]ç¬Iz΄Ìû}Fº¬R`óÔÓ‚î5«}:™9 ‰þVpAñ½Š]݃ ­¢ëÕ˜ÑyϦ”æ
+iÓ\DÌÁ Lj•]ÒÖ/NR8±“xì2Ë—š]ÝÅ&Zp›ŽçyN Xâ!‡YŸ„Êù¤)MµÇHë{ß=6· ¿æ,=èeèû'±Ïddczt¡^rGº>oŽø™£âì`I<ãb%u¹•N‡-aB¢ž×Tm‚J1¤ª™ü‚ÀÀu+âö§zÂŽ$À'/Òñ <ÿ#VTVÐÂN‚•d/ÌzR×¢];<^0•Âhö&ÈÆ™ƒ±˜°Ô-K‘E$´¾¢§jŸC<2WBùx_F¦ ÚL•ÿ
+”‘‹Ù"xçg[tûÖÞ‹ZLIfÆÊ¡x-®Ô’¨1òéˆBMV7Òzó¦Ç$¦B!Ìv¬‹¦“D&!Ýî|3Æ•8|¯¼Éõ: +u¿îÙ*Up->€ºaìÄ£@‘þ_ó$U”|ËF”ÞwFXÌŸq2ºŸ@¾s|Iäî´—2ÙªâÚËTô†@WÉ…”êµ5—=|÷†ÙV@… lSÂ5¦Ó^Eû‡PÑäËë×m
+¿¹‡š.gO¶åj€l¬³ée 98óŒà‘b¯ÔÊiƒ·Ñ}’›°2k¦îÅ–~V)ßdxâª]{ÒÐCZ¥ÍØøðÇš|µ¸Y ×Øn©¶þìW2ÀWÊÀ·ß²ž^¬¥åP{¾k£‚¢Ô`Lÿ+¸Ï_Ž²ÛÙÛëÙovõÌ> _‘‚.Ùè­Êièëñ
+6
+8z¬ÔúÝöÔ+³¯Ô£™\„õõéåÙ+Ž®¸ßºQš‘? °p¸7‹övrê^cøÊ.¤PFd­ P*ÆUâ†ÿE^o½Ïß_Ïå†~¾Ö0ø#¡{)uß'åâN t5Ô-»lÃ%Ñ£¼ô¿…ê(NýsfÝ«Žà5ê•ìgyõ¶úž4
+ À s—{¬Æ‘0áLêëîA&¿*ºÝI
+_
+7Úà¿.?âüæ
+- ³ÚAº?/°ÿyÓ[â{Céyãh¥õiªQßÝ.@úär×ÞÎëŸÖQ£ÕÜ^XÍ0gbÁ¯õ%1s†]ý3[Ø»àä–'Òéï$ô¥Z$㕼%--3øØJ̯J熕cwˆ]ö¦Òhá!ÍšiÚ‹ÿS'Àߥçè
+ô榕T¤1>)!H¶ã{Ù‘™%éÉ)Ä(eHZ÷„zE%LªSæ9 eþ9&î#ÙRžÎ
+t›
+½›ü0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1987 0 obj
+11016
+endobj
+1988 0 obj
+1612
+endobj
+1989 0 obj
+8872
+endobj
+1990 0 obj
+532
+endobj
+1991 0 obj
+/LMJFEL+CMTT8
+endobj
+1992 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName 1991 0 R
+/ItalicAngle 0
+/StemV 76
+/XHeight 431
+/FontBBox [ -5 -232 545 699 ]
+/Flags 4
+/CharSet (/exclam/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/seven/eight/nine/colon/equal/C/D/F/I/J/L/M/N/S/T/U/V/W/X/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/w/x/y/z)
+/FontFile 1986 0 R
+>> endobj
+706 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 1993 0 R
+/BaseFont 1999 0 R
+/FontDescriptor 2000 0 R
+>> endobj
+1993 0 obj
+[ 625 833 778 694 667 750 722 778 722 778 722 583 556 556 833 833 278 306 500 500 500 500 500 809 444 500 722 778 500 903 1014 778 278 278 500 833 500 833 778 278 389 389 500 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 278 778 472 472 778 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 778 736 556 722 750 750 1028 750 750 611 278 500 278 500 278 278 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 500 1000 500 500 500 ]
+endobj
+1994 0 obj <<
+/Length 1995 0 R
+/Length1 1996 0 R
+/Length2 1997 0 R
+/Length3 1998 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /FYAFTR+CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 47 /slash put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 58 /colon put
+dup 68 /D put
+dup 69 /E put
+dup 73 /I put
+dup 76 /L put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+/UniqueID 5000798 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÕ™=ü 0)xfáÍ
+1›kÙX”)¹Ô $Ü“%ÙÔÌDóù—©žlÀgg5ëÍhZ¬‘BÚþÇ‹´ü/!™½ôby(Nö
+ß‹¥
+ 2½W¡Mæš} šÃoó/ŠPpó)ƒ»
+Óq
+L
+#ÈùcQŸXñ\’¦û÷¾ùýî;Ö;3þíU(ø9%ƒÂ–fUAƦßÓØþzTFU¢%¤óGÙu{7Ï íè·%ìÆQtè»Ì‹k««
+0sàÑu0.Å»þÐêݺVK2™|¬)º(…–ÑŸÀä%ø@xéx½”›€ž®{îMYÒtj óhèÉîêÅ8ëehöàÏ5 ‡®dÀ¦ÑVGgÿ趛WåAƒë«SˆÒðÏŸ=¶HxU‹‰ÿÖå½]×G^%\c3˜…Œü}4Oƒ7`n$=‚¶kL¿±‘™Ö[“¨œýv³a\ç°¨jEï~'»U×8‡ŽnsÐJcãkiNë¾÷8 5‡SbçB•Aïó]Õƒ tv17kª.²á†>Ôåzüä¿Ó„²/Z÷ÐË@ ¬§y°P''ƇD–FšÍdcž:[ªôþ¥¼¤6½!œ˜`”\O¾®¡LµõäÖnñQZã:À 1¢;|œ)ö¢ÙbêµÒ²½ý[]VV¨‚X¶ì0®†<Áæh±² \àjhànF¹ù ˆ0Ì3ðüá²úGüü¡ý… 9Vb½—ãà¨z¿Ï ës…¶æ”!zŒñˆ0Cø®³SæfmcÑ?¯{‚«ö­ÝXýü[Ÿa¿éH÷H™d1س„žbëù¥«Ck
+55Ó9Åu³d¦œµCàs§ÍWsA «Û­ÇJ úå»óÒ²ì|f|ƒ×¹18=DOe4¦§»ÕQY÷{ÏÂ$H̶@ª›Ã˜2}yä^£ÀkkßÛ©Í(©šªÔfF²Ö0Ë šÉ¹C>½þp8`§ãlú\YôiÓùÏuvÞí‹+!–R"…÷×߀‹}u/ÇI‹Îª„dè4ôOï5×Òª(É[ÛŒ/}ÃÉ=ÎñÆ?Gi‰ùRqç_¡†»‡BðuW®1dêϺ“™^œÄÉ–p•yÁ¯jfãy§Õ¾dT ( Þ¢½7๴´Œ‘†áa*çý»¹–r¬“òÏJØO8Ù{'¯ÌÆNÕ´ÔPì¯Ö‹à°äèì°ê.Àh—å "ÍB¤‚16-ƒ_4
+ö1¹ØBÎao']äE:U๬m«"f­nÖ‰ì±üf•ÿ#û˜NÇ»!è„ùRÞÚÒ‹&inìÊñªi4{£ 0´OÀx8º]cMð
+ïBäë÷å€Aï„ù]¼¶Šã%¾.n šüë÷è™Y€¼ZÈV
+Í O]öÀ»_)-ÅŒz©¯-¼TÛ™Qâž ì¹X`‚qé(¨v6€|OnqK3G°_b¡‘ÁÄð°ÅÕ|f:Žní‹stÍÉ%ßdJ›ÃÈŒ%
+l…{'–CÆD5¹¾÷ÈÈ9Ý-sõñ ïmÌ(‚ *—uQs¹&ß4¾´×ì⸵g1ñoš¶ªàMœœµw10\á¡Ú›‡$"8f xgáA^î_aÁû¹‘W`Z’øQ±üvYÐ|-QmZÒ3N‹ôiYë’wóu¹ëêÌV;ë¼ ji6öª±t;qúß×»H=^¤5[*Õœ9«ÝH–¨ÍXÐŒ±j|°ãZ9=¾bÁq•C.HÅý8»wíEQy·øVÿ?–ÁÏiÕ,€;ú\v˜ùÉüs[›ô2BóYC'þºa¡§ÀZ>ÌÄ41ZÒ(v" 2ºø) D$Ñ/
+
+<Nõ¸#8E#ñ'»^õ¤„ò25®Ågiô¤ (<5üE}*¾ så¨ k©bC‡.´%‹Þ`+ó3-û¶ œ—šoÉP«ž÷m6EÌÞb§*ž6¶0 ¢ã„—ã¨î´?ÁÖ˜&±kYX0ÀçêóÃÑÕ„qðºAå¿›+“gÚU 'òßè#“5„EÂÝT&^?æ;tX'¶äèx-H¥
+MœF ?Í[‚âÝWiå
+ÍD4p¹9õN©±—Ñ÷4-ùFih 
+Œgg•)âè¿Û=…
+oÜì ÿžÍ »²‚¹)ÃH“¯U¥ìV}×΋'ÔÅ:ðBñbrX„8g«ÕƒP_2ÌôbßaÓZª•)3֬䆣åÏH5½•¨‰îxw6ɽlÑç¦7X‹ËÜZNQ6Nqú#8ðÚN’€ÁæÜÆœ˜@.耮9² JË•ÉA°•ð¨@h2AM¾0 ‰LÆ7Q8.%Ò‡ݹZ |B²Ò¬$ÀÒ.Þ¤°0ó¹³)N¿‹’q„ÌÝô¬Þ ¸ åŽF¬Ùd}!“ Áš!‹Ž7£ü”:ƒèÙ–?¶|whDⳫSípØ#ÿGŸê®Ní¸œ¾Swx£lýFëzípž%éÅxXoŸ˜ ä^ëZbJ‚º„¾…ÀÝ‹^ºÉÌÀp‘¬;ØuQIyèJ‡‘—Ù‚ F@R-¸äÈO·‰»Q3›ðórï¢~8oðnœßä"_ ,¤ÕSŒ|°ý‹$Iþ—ISênKt»–eS߯¾¢UI[7½èp€ÔNDØ(Ûx<zúå$0JgÏ—>¢®Q]
+64õ-CÀ~e¬õ¥ -b$ÿ>ÃdÎtRåBoß»T0ÝÔë2–iÝ1ø¬égø_¨Ýª}.ú§­Ïà×
+$,€¬¡Xl»Ó²¬û±ÇÚ1›MWí=*ö½¼ðó³¢ Ž¤mÜu£¦¦J«xs~[)|ƒ ­„ M]½zCR‡ÝeËgJÓWêÒ¶qµÕÕNiöyã­âu3þðAö¼Ç1xœ—aԹǜW/6àY'>»‰Kˆ¨–¼2‡°’šøð£,úç3¡GûAœ„6fÕH“ãõ8¶ÄhL¶¸ñ›é»îm©ý¡§k-Ò^¥&W:ÓÏiÞœjyŒñ6-“D%ôá^Žö¾îý©ì:áqHT*#þöÞpaÑVƘ€š‰ƒçž#
+ø-d^ÕaŒf Q3øòr ÷Ù·¢îCщ¢D.QÞ-;[õmS5§aÜJJà‹Ë ;-¯~·d 2œò²à)Mý£aƶq hÖ@’ç¯Dé,S_º(í€e'Þ€ÍM&Ìþ£ú—Ô«¶ËÊ]©;?‹LZÄ9Vêç–åhÀ-—†@"F 'ŠlÛqµ['¡ƒÈ[FY"ÍÍŠ”ßDlýÈ_zÏ‚mi«GÙkUÇÝÇ–xÄn~ðxì1¢èx³ÅTÐP%#ÿY+jy”tÙîªûÕ§pa‹.^1RIËÞ5±cHgÉTÎÖåTаä'T& 7öTF;ÒÀ[#`k‚jÅ•¯7ž6ûØ‹>#P.ç’>I5l›?Ãüúý¡7xB2ª§uEÖ†²œÏË!Ea‰ì—ÜðŽ³§~JüKQëŸj kRòÇC%ìº KÇ ¡Ü¹åt
+1ó¿6úúÒð R¶7‚$ï+°“‰¦Šúf<I¥MƒjWîö~Ù0œJ»…’[zï#µ} \nFïZ«‰Tß_"`Øé*˜ÀÕ
+äS®tï³›´dÊâ•9}ƒ‚œ„â%gƒXÍ))œ-§J‚f…2;3º^kñ§L›I•>.9¹­˜Öƒ‹]‡è‚¥¸¼ÑšD•1NJTŠžíµð©J ²FçSœ=ôéƒÔ‘ÿRj4‰>Uïr!˜ü¥­À±§|Ö†¡s/I;•«ãÓä´Sí<é #ëvZbaÒ¹ãë؆ÞX³ˆ…¹´2,ZÞÅÎMsÞ•Ö}ð:wGï¦!¶87Ï©0TÈÞ;ø‡?˜[C¾Óoݬ$zõwÁËK»
+J"f \·¼ak=½é ÑŠ§4mO ¶Üß»$ßç¬À?Ã?úŒ§º™Hšì’ü}ý!¯¥ï&ø”=[N)¿äöïÁ™ôR¥e†ËkÇ0&/áÆV•>¨OÙDß*Ÿé¾òaŒ˜ Ö&§RjcY°_D#s ˜týnf•‰S~O‡@¨RRâ<yÊyüzuÈ`õ'$°Êÿ\-–µ:ÒaWõ]§ûÃèÌ×[ñlwOâ£ú×ôóýE&ò9»Ó^¬u=ö6¨“äx‹Ä G¿½=tÔo_r(IøúÿE*6ž´ö§¤'ßîž\´ZÆÒŒ™ºÕ-Ú#Ž Ú¢‹+6Ö“Oa*E%ªqî•ŸUf;jÒÒ3ÔÎDoó?Iý7!®ã­ßÒU*¤F‚–êl bïË)1ŸR·GF÷Hå­¢m`ðÒ8:êÊ#
+çE\¥îéÏñ¯¯_spthlIõ±l éñÜêZD Î|vÃT®ºçoÖÑ*[fR †ã"ìž®•ëhh3^ø.i†súiÀ ·Œ~[žÆï+¼\i‹zî žŽ¹ºÓØ{V·§ߘ3 âˆ]%ŠÕ¼‹mA
+|¸BGÔCp@9W÷R|ô9ÿuµ)‚gf}« °¹\+þØ# Ÿ¹®^i«ÂÔdXÔ¡JO¼¾†£SS‡ø´Æ ®0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+1995 0 obj
+7031
+endobj
+1996 0 obj
+1132
+endobj
+1997 0 obj
+5367
+endobj
+1998 0 obj
+532
+endobj
+1999 0 obj
+/FYAFTR+CMSL10
+endobj
+2000 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 1999 0 R
+/ItalicAngle -9
+/StemV 79
+/XHeight 431
+/FontBBox [ -62 -250 1123 750 ]
+/Flags 4
+/CharSet (/slash/one/two/three/four/colon/D/E/I/L/W/a/b/e/f/g/i/l/m/n/o/r/s/u/v)
+/FontFile 1994 0 R
+>> endobj
+583 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2001 0 R
+/BaseFont 2007 0 R
+/FontDescriptor 2008 0 R
+>> endobj
+2001 0 obj
+[ 826 295 826 531 826 531 826 826 826 826 826 826 826 1063 531 531 826 826 826 826 826 826 826 826 826 826 826 826 1063 1063 826 826 1063 1063 531 531 1063 1063 1063 826 1063 1063 649 649 1063 1063 1063 826 288 1063 708 708 944 944 0 0 590 590 708 531 767 767 826 826 649 849 695 563 822 561 758 631 904 585 720 807 731 1265 869 842 743 868 907 643 586 663 656 1055 756 706 764 708 708 708 708 708 649 649 472 472 472 472 531 531 413 413 295 531 531 649 531 295 885 796 885 444 708 708 826 826 472 472 472 649 826 826 826 826 ]
+endobj
+2002 0 obj <<
+/Length 2003 0 R
+/Length1 2004 0 R
+/Length2 2005 0 R
+/Length3 2006 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSY8 001.100
+%%CreationDate: 1997 Aug 23 16:21:32
+% Copyright (C) 1997 Y&Y, Inc. All Rights Reserved.
+% Notice: This font is not in the public domain
+% Notice: Computer Modern fonts were designed by Donald E. Knuth
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.100) readonly def
+/Notice (Copyright (c) 1996 Y&Y, Inc. All Right Reserved. http://www.YandY.com) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/FontName /BDAAAA+CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+dup 14 /openbullet put
+dup 48 /prime put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueID 5096649 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+!–7+z,߉ñ1¼O5$´HGc"Ì^·8@ùòÁÕmu<¹ÿÆJ>Gê¶Ü8ö¢¬õ‚lŒ<ày|ŸŠÏÈn'Q°sLŸ2Ž>c©øÖÆY+6)?;;² Ü«&Þ ­Û2†Ñ…ƒ­*¶ŠÁõqä:÷hfˆ.Ü[bXZ‘‹¥ðgÌÜ-A­!((Æ5ªœé2ÓL÷ÿu|¿ Ø®p P]L¯ȨÞèq^ hˆ¥*"Q¦pL¦³ÈÀwªÉ~àJž£6H1TÊð¢tl*é¹®’ÌK"T‰´ KÍøK¹în$þ}ßâ‹
+¨eÄhnÜ>¾w§kö±J'Kh,©î^í¹ƒCÂØgC˜o@Ïì ¤ÑË%»MÒLV×ìĪᤂª`0að
+—GAXHÑÀà0–à„*)Ôî7%„D΢³~LÆüÃlÿŒˆA^£,©ª?äVöÌP$‹j™Ðšà ²¶ç‡$†`†®B¯¹>ë#ÕÛ{i㙶H¥óI._zùR„­BhÓ µü}ü±ÎGöê¶ăcØþôE(ŸÐ2™ZŸÐx
+ kcÑx̱æN|Œ0æœr¾uÉ0›'“ûáË>™”‰Šž‰g°)i&xŸ2m@SÈÒK\H*Ç3ÿq}C‡ÊýÀQâÑCá½sM®Pn>“`¾Ic¥Ôÿn´Çˆû ¾ã³ÚÆêÿ“_Ba/©û`0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2003 0 obj
+2730
+endobj
+2004 0 obj
+963
+endobj
+2005 0 obj
+1235
+endobj
+2006 0 obj
+532
+endobj
+2007 0 obj
+/BDAAAA+CMSY8
+endobj
+2008 0 obj <<
+/Ascent 750
+/CapHeight 683
+/Descent 0
+/FontName 2007 0 R
+/ItalicAngle -14
+/StemV 46
+/XHeight 431
+/FontBBox [ -30 -955 1185 779 ]
+/Flags 4
+/CharSet (/minus/openbullet/prime)
+/FontFile 2002 0 R
+>> endobj
+549 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2009 0 R
+/BaseFont 2015 0 R
+/FontDescriptor 2016 0 R
+>> endobj
+2009 0 obj
+[ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
+endobj
+2010 0 obj <<
+/Length 2011 0 R
+/Length1 2012 0 R
+/Length2 2013 0 R
+/Length3 2014 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /LPMCRJ+CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 52 /four put
+dup 53 /five put
+dup 56 /eight put
+dup 57 /nine put
+dup 68 /D put
+dup 73 /I put
+dup 76 /L put
+dup 83 /S put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 121 /y put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+/UniqueID 5000831 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+yÂabÑ"x+äpïLÛ¦»/³I¼¯‹UNYë9¼‚¿C× Y/Ì€å õ0Ùåçeê,)»|5ªUŽLYÏÍ¿7˜¦œ®SíÙF <«o3PÎ2]<A¹õ 1¡w€éü´`7ê´¼i7wñʨrG)W„÷B&I¼>LÃ3—Ó^NA}êY »$Žpï0Fí¥¥&7¾Äá¢fá’ xQKñÐ [òbíry½nó,–žs1j@©:Þ٨뾌øV†Â‰7ô‚ð øp—«¶ÿãú¦Oú]íoáUºÔÁ×Å_©¤áuÐþmJ4 i Ät¡ƒ'8‚Ž_ %èÿDœ™zÁÑQè¢T^oD †Lªâ¢2J[&>œTbßt6§Ÿ-Û=ðaÍY?å˜dƒOÂo¬Ä5*°ñˆ›¹Ì_âŧJ·
+Ó‚ž4Éz O¹´$ôKƯ'ì¦ïËo»³cIÉÿYN•+
+‡ ¾©g4­u–gƒä¼œÚìN!å¿Àg¼PyZUÌžï˜
+Eq”ZØ挣„z§,ߌøÏ£xÚòÂ!¼b>d˜(6á´Cêšž¯,7Qjû—eh-­(v½*kÛî¿v—”kI‡¦ø­¦D ˜R ØqãR³ÆÀ[o8÷†Ó(a9á)›ú>n¤gåÕX±Å5¾UGFoc²Î¿8DÅÔgoM
+x6Ü\¼Ötþ7Í[%8´;÷è0(RËJä«W_mš@Ö”A«€oo²ÌTüî–ëi§S¦£Àv1 |ja{îOþü7c§ç·¹ûáçOU–ãÒ3n÷ª~
+>zÜ‹e“+"ÊÉ­‡öì¾…
+:U…a‡`>ãtì?§sî0ºj#ëb8ÜðË
+¤~Nè¡þtâv@8c7íA¶ˆƒófd/
+ŒcpkÚ<%gÀ¢LØîŸÓöÌ¥'™d¯»—•×ƒ¸jðÅãüéF»ž>./nJì+ =pL¨ê§&T 4XÊ/e°^¬»}+IÌß>eò à}ôK°““¸iæM%ñ~3ÅŸmüÄ%âçþÝ|Ýl¤øY|
+*œô«Ù)=pîÕ¯˜f©hy–ËÕçÃÁS°SÊþ×6 r]Ö{ d|²‚¾÷yɬáEÓíÕÖUgнsÔ¿BÇjqZa"f­xDóIÍ
+’ +a{¬ˆWu(nò–ý·¢›£`$
+'®zc +J.R%ë~µË/öƪ
+þ×Ç@Åáê/ddêkÚSèd.b:/k7È‹ÊÃùæcRL1úý6;”Eà+ÿF|dýVåï X<5÷ÿG–*óÏÑ0%;©¶‚€°ÔoþÖÞg
+#Êø¥zˆsä´6Ïa"Í ^Òfiþ½ˆ m;•<™ûû3>¢™n1*ìhs}Qq„ûlRkžµç°[ôâ^B`ÓmýѼÛÚ}<ÙYìb nžÒìšÂb E ¶Àùüp~Œð{¾ß{ÕÀø´¾ØžVÖÓNUáÜZ$EUÙºöaKl
+¹ÓGRËc.j}'%œ°çÈþ¢þ¶F•Û‘D¹d›ªç…«Ö̺Vºd%LÙXißE,ëßm ¿Ù1ÏeC)tH€Iô'6jYÔ¶¼øµxjÄx_ÏGõ‡ß^îÒ,´²˜Ñ¡¿»{¤ºþp (8‚w«1Ÿæù8ÂÅÑcwœbRÇPÝ\í’Ð2
+ô™0ŠÐ=W!YL~¬®þw¶+Æt΄¤ ìNï;Á¨`
+«IåôÖ¸ã8¦yxttenÑ‘Ä«À¨D¦­IóḺ:M!¾\ølÖDò=
+[ÕsTy½³UÕùzš±srü)ÌŽ%<CüNèÆž´Nœ+ZBþ@ @YÐmcº‚P‡}ž0Õ|›qÿÛ}¡œ?¸M85AÓ©Ú\„±“X´j3rª¬:öëù[üÒ}#ÀÇI˜V16?œ×ðÒ]\?,‘“¡£9åÚÁ:ö‡hë|À[÷ã%Ú´†ÍübV<ÌÕPÊÌËÙèäO4EKQ2þÚËÊDÓK$A~°ã0}Ó?å›Br~ bÞba=¾}d•Œ5ˆ‰“¤ºu¥¸>Úâ
+ˆÝGWó'£qçc{ꀇB•ŸPe2ýip”PîÊTPXÇeÿ}GD_££«<ÇþÖ?¿“BéÌâþTX~•ðÑmI³9S0æý¡sC„bV­&ŽQë Co9d!étäR¦ÒÌó¯u½?}ñàØÿL
+œX+\±¶h«Aß‘ýW¤òhºm¡aº+¯6.¥ýáxIj}•¹Ëµ¾þ ô!.ÃüÚ]÷šþ]UW×[Ë’’]tÒ'ä’áy'¨Ë¯Swð0¡œÑæ‰@ZüºˆŽt,ŒH¿~ªkÿdö|ñ~,T¶ù~ƒ2CzäÄt„»ï,è!µ¤ÖÐkƪoq`Ôâ(磃ìáh}Ú™4µ?è_F`ܽgLJëê3;̯¶Åk;:Åþ n®¢¢
+¤XBDÉZ0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2011 0 obj
+8356
+endobj
+2012 0 obj
+1376
+endobj
+2013 0 obj
+6448
+endobj
+2014 0 obj
+532
+endobj
+2015 0 obj
+/LPMCRJ+CMTT9
+endobj
+2016 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName 2015 0 R
+/ItalicAngle 0
+/StemV 74
+/XHeight 431
+/FontBBox [ -6 -233 542 698 ]
+/Flags 4
+/CharSet (/quotedbl/numbersign/parenleft/parenright/asterisk/hyphen/period/slash/zero/one/four/five/eight/nine/D/I/L/S/X/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/y)
+/FontFile 2010 0 R
+>> endobj
+548 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2017 0 R
+/BaseFont 2023 0 R
+/FontDescriptor 2024 0 R
+>> endobj
+2017 0 obj
+[ 642 857 799 714 685 771 742 799 742 799 742 600 571 571 857 857 286 314 514 514 514 514 514 771 457 514 742 799 514 928 1042 799 286 286 514 857 514 857 799 286 400 400 514 799 286 343 286 514 514 514 514 514 514 514 514 514 514 514 286 286 286 799 485 485 799 771 728 742 785 699 671 807 771 371 528 799 642 942 771 799 699 799 757 571 742 771 771 1056 771 771 628 286 514 286 514 286 286 514 571 457 571 457 314 514 571 286 314 542 286 857 571 514 571 542 402 405 400 571 542 742 542 542 457 514 1028 514 514 514 ]
+endobj
+2018 0 obj <<
+/Length 2019 0 R
+/Length1 2020 0 R
+/Length2 2021 0 R
+/Length3 2022 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /VXPPDG+CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 14 /ffi put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 65 /A put
+dup 66 /B put
+dup 68 /D put
+dup 70 /F put
+dup 73 /I put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 88 /X put
+dup 92 /quotedblleft put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 124 /emdash put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueID 5000792 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+ .UŸm;›·3YZàê`“ù†7z– ñ*¡µ%ÍŸ§AþÕJ2¾ÍU¨hÝcšCpø2,Ë숛§#Ë@üJ©
+èsêÞ8,©Ï ûeð«íýšd»?Ms.š‰"ôA#
+pÃ9É–v*³\œXšé K ˆ Q­F7Áq “èÝ{N{G„“¹¦0oÛ?¦×8ª±Iû²
+,Eêó9#U*’¢;f‰%>d­2ŠÚ\m|E*ÝKÉ w £Wê€ÔžC
+±t8y4pʸ•h<N?Í¥.6AUÐþ‚NŒþÏFt÷㼊22µ ¾ßðÕÊl7\!LïXZ¾ Ó4Ü÷%%¥/CT2)e³IoólC Ê‹&eã¬I楜b%cF–ÆZ‡CžöXgë/˜#kú”é©þ?£ÄÔø6`ðÖÄ;~ ±l¯¡q_åTÜ!ç'×)ÕsòÃ.
+%Ù«rCÞ‹™ÖEõgKÈxúlÚÆõRû&`Ô î‡ŠÑP8®Ëö-¤çOËÝo<C?*¤Ã°^ÐÝ÷½){(ûò˜Y ãæÌÕżÀÜXÀÝ=îÝÇPYøüÎ1éÜS8g02^¯½QÜɸÔèÑÐîÊ™5¦ä¡×daº!»"Äfl¬c°Æ'X~êmÃÙ(Ä3
+FÛ,tý¹½: âçŸ2~ÏÒ”ùŽ/ •™ÎN —[GS éNMCäh2x¤ JJßåçÏ/Ã#ÆËùßÜÜ–¬hHíC„±Š9i¾ÎÄ7:¤6¤6€€|†àµK¸3G._1ª³M©Eê²fÌ<eÒ±>°c‘ÖŒ’‘kd#à‡~ÕÖëxí —H·ËÆ´»/Û&Tì¶ÃË æîGãn „²ÆAÐÚ£||æ¶, š5l’™VòÛ˜à„=SlÆôk€d¯„ï{ô*w͉ÞÔÜûíxº>“ââjmà¤Õ…h¼«—oè"3óæï~iÜ×¾ºþ¸?Î#á L¯ŒÌò}“ÒP]½m— f§Y;Ö0m”+ÜÉ‹žQÎÁëKÒwìfõE@ÓÖ–oaþ+ž‡E?o̼mÔ¥˜©S†žXBÜÕeGÌ]Ì­xv2¡g©)¦ø}|Ö|÷DÓ|[§Hž#3»K}Ãò>CãUOÙ²’mŽ8¹ñ¼ùƒü»ë¡ÛÇâ7º¼š4‚â¨ÅµžE²…ÇëÓcã\¢ß¥ %@ÛT¨g—Z+ÃÉlúÂ…îlT{Ç.ã|ý3Ù´+EïŽÞYÓ<+wêõ±P ÇaÇ8æL0?.ƒÄÏý%tÝ—ÓG?Ñ \O¢˜UQÇJ´“|£pŸ\×á42 ȦûTí.ôIÔ¶¹ìÔ#Ý¿J÷AîŒâ‚8ˇ6^j›2°Ã6Ëy›¦elû¦ åUÒÑ…7Þx¢ó¦Ý 7YOï…ln„ô±¹måC?*©À¶Ë%×7øÄ¢VVmU9-uÊàeÄ­³kiÂC‰©¢¸wôÕûûô¸;Š±Ÿˆà}³vàr›‘J üBãr3L’}ð§Þð±DmS64§„9LvéŽä­7˪ê+|í8‚ÒëÏ|©T1ðk[Åúµ–k]P»›ìib(yˆQh]SEº‹¥Ð~êQ Ó½ò#kXë
+ZØûîªô[$o7G«™D
+á‚i”+oÅd}lHQÎCF§õyyèŸz´p7bå9B|å…ψÐÈä ïÅ ÞÇ°ˆCºÜÇsZ(ìð
+ˆøvt+/£íAZaQAgÞE…mT‚+@ó í_€bR÷œ`_Å¢l ¯–Õ-aãcôÊ%
+íñ$ Œ9LUd4k!±× ~råŽt¯jjü·îÁÑùQïOÑc1¥·Gw"qÒëájÀÛ£LeÔ>ërG`È×öí/{òlu(jñÀ%l”ÜÇê÷Ä ËÓ[¬µg>dyPÓm÷ c ŽHYÄkÊC †‰üo­zBP¶Ý_#˜½PLr©ÅL›ÎRL`3‘‘R»B8xÒžO“ŒÅÞÂîÞæЪUQë…áÙ‰l³)«PÜú @¦±7Ðè½€¬l®º²Ä¤ï+T¿$}ÒO;brÃbœäk+ò( ýœEìåIUE#†0æÎ÷¾eºV~ÐJûéÜ,캠5»$ÒŸªüIv„·ú Dí8d•äÂÊòÏÅK«Ê¸¥½ëÏßSîI¨K-êƒ|m úödÎ/ýÁ8’ä6kDÙöú–0<ÕC¿O×à\6°Ñç›BÆ*~iùÜ+[Õî+’)\­3®W=öëA­ï9Sôáˆ8FÆN}I&šŸÏºR”6Gúµ6A‰U5›`×9 û*Y ù%çÊ+Ø(…3›€RÎ\+†¤^3ʘϡ!ÿ”@Þ™Ú —òIÓ©Sˆ ¹t‘¤¿.áÇ´ų±™ø‚ñ,öÁÇzÅSXÝt!iíÆ ”>¹ËXq
+¸.±½Ík‘Z»3^îë$‰8|ÀñîÀ©¨Váns?É;)æ¢àpg£þ)ñ@n+ù˜Û­‰ÇýÐw þq×ð *ïM[8ORýÙ‡Ž¤@gÏ.CzÇdÊÓ
+ÆLf!2ŒšÍ^ÜôZ©c¢Xe¾¬ç3¯ìz覵XB$ÍEB{†C‡6çz;ë¬f ³þ‚Æ’"“´õ
+Ÿá?ýÆž7=MR–+ûPÜE7åýãÂN
+â¥_›‰>h8®un6ê%ÑÐÈ­÷>¡ö Â”—å9%„  ©4ï1Ô§z#ȾGÚ gÞ)x“#B¼Š0ù‹¸&ça»¢“–æPô9φ’‡É±D7àC€=JOÒè´džMOC‰ô‘F¨£›øKû4Ê6è9àC@ UÕ
+XU^<„&Í{‹~XµK^È»'¢ù„@¡–Žî ÞRnâP)ØnÜjÏ-üg5h™"„îh6ÞÐÈF}Qb¹2Ä™&ŸF?âw‹’'ÿ0Z˜Áû#ä-Ò\Þs`Öyu¢øÎ1/Àþ{ 5$u‡µÊ–Ä«E¹‹™¯‹ÆU æO5}Sª¤ÚÇ··¶š ƒ_…ŽÅ0ýá %YïôÉN¸ì¸›F³È=¢¨GxÇ®íÞ!ܧYök£ÊÓû þϽÍâíg ÚœU
+ (‰ÜuÅÇg½÷ŸŸ´€ßž8Ëâqòµ³¼ ‚X¹Ètr0Ï<!uÂU•
+†n¥Mæö—“‡]„õã„gUðgÚ·2žØO“ "ïa:ÊÕT÷Ìh`bÎW‚¼Gé×)ŒXŽ7÷õÌ)Ö_yPpÞ@Nà²b<¸Ôh>ý*þÙüFÀö‘T \͹dè[«PFŸ±}cÐG.•mO곘‘/÷Á¸öŽD¦ó‡L–q G¡ÿ©"œIqf°>¼å;bFoÄØF,˜¤± !Ä›˜uçÁ°~ü­†N-qœÀξÌ
+ÁJ=‚(Dð1]‹«^ãyaœ
+ª™j0x›æ¼ÑôÐÜì¿¿@Ç–Š’aœÆ°ƒ„hß2 ¯;÷[†7aò[‘“¶@FÝlµ½ƒ†„QÞ¶_]3š>ãÉ-k&;KE-º?ä¢ôNwxµ«æ/'IU:Mu`âÔ©mói{¬ya™ÞwÔ6µë0jz¼Eû<ÁN]×7÷ï ›ÄÚË™jèç~Ã~¿W5óB|@‚²™Íùkó #Âêˆ ¬ )gù#A‹¹~µ‰n¢–Ѐ°Z…ðT-ñ@üͳdÔ¢±—É®wW6þ©{u‡äAf—~wc%)ˆ´vÑM¹–›¥ä°>CÈ>„2˜>¶*Xƒ¡>'qDÛ…sÕı´ ÜŒÞáø°¯N§3pà®Ó›#–ã’›þß¡8.T¿Q¨ñÛ›‡Y~,KQå9JñK݉„‚Þó+ä·îZÆ]ÄÛ›wN×P\Q´G÷Áñ}d@;ÌMr2„H‰èn\¯ÜSQ8aJåÊN.´ÆĬ¤‚1×ðn§+ ’6’"õ7ôt‡Iº{J^ ,àqWjÉYËJ䦑ýˆ9/[ÜÑàå2‚©DvñªÀÉï¾È‘{Q´öê›ø$GOS¯‰¸EŸ£ìîOj³ê~KS+!‘ï$  eÞßx€"PrÏ£’ì¾÷Ÿ;
+qœ“ökX¼=ňaKžôoú‚ʞ7ì/ÁüÆpá_N¹ Ä–Ëúü‰¨‚ñì¯È3ñ·ƒIïX k² eâ ás#Ú¡@±“›@ &.–'PB°³:QV±ÔcBOü'×ÖoñP"O’níÔ…æ –T°v¾ŸļÜ.eSL
+@á—%®C¥ Ç@$*j,¯éÓ܌ݩ€J¨Ï‹žüО©Õ—¶ŽÜ9ÎîG0‡òObÁ“¼©âŸÝçÑ¿>åe„Càw[gíËz)ÒºÌt¸õ/ûÎe8Š¼²°ÃÁ*t2‡—x…˜H“‰çþüCf⊆õ"‰„•ŽÝкþ%üdÀxLù¦B>IA«ÖÕ70lV^ÆöG
+ë<K©\.g'ÚËnÆînz˜7#ƒX9·P0ÒPðþcÇk$¾ÂËk´´åVù"™«(ýÒ6ñ¢*#ÏŠ“"éD›·[’@ÉŒg6èo§„P1Ï.$UÕñ&vÔ~”:¼^múÒŸ@#@Ô í/ËZ¦”…ùo&W‚÷)—Œ†8 E;'„¡ª[ËW×¥ñ 0I>#0ÛÜËSÂW--)¢æôœW‡?®³£èƒºh{!6›jÝÎaŸÐQ+I=lúYVz}iì(ƒ;òÛ#Ej3•­‡í%Ãk- uƳÕEÓÃ_‡3oí àÎæt›ö—«_Ý/^,¯×„ÿ†Å°LÛ·×ÅrtT²TŸç¬§9ÁSÙäUjÌhÐÐçÞ'šht݇ds*bf?dnÀÖ|>­hC-Ö¤Ïl6¤‡z™)ïüÊ×ëÅ—}ˆ€JFpgG§3Ôá «ßÖÖO9GO”oëÒPN<¢:>‡Ùî;-Ñ*¹hŽÛϾ™H<¶Ï*ÉúçŽDÿ±[ƒÞœTwÙ®„8ï/9¬ÉÀØ ZFÿtñÈîn£9ÌбZ,Á=Ž*Mo@ÏOKJ m Ãc¾)>ýéºËÿŸuoÌR§o:ÚljÇb!x¬ƒçÏ‘¹‚ÿ‡ãÑY ÑS’PΈ’b¸÷Ï-,°‘Œ/E¹±4+Ï-6¡¯'*36²É„8œÃ¥Ðí´ÑŒÉO‹éežëí˜ð]æ׫0ÿ7¡–Uõ†99Þ|B<Jß¡ì?º)D?©cÜèŽ4ìÇ’¨oMŸvÃ~|MjÅÍùô±¨ ôGlõˆV6"ЋCÝÇK>E8ty(<ÍŒeëB7ïþ=Ÿ¿ÛI’&w>ä¬6z×Q
+ðÔRÖ=ðNJ]àUôüt,9Á&]áN€_0HQ/ý÷ûÏ;du7Iáø­Âýr‹$¹§/¥¥òzûnßµ}Z^«ˆpö†±âÙtÒu·g!ÿUÌZuʵ<ó¥R'!‰T­Ñ¼Ÿ
+®ŽX…Â_Àƒ‡amŽÿÆ]å«yjaËæß@Í´9xZ
+¯“¿þ¡Í[@3¸;/ò¿ï]aOuÉ#ôƹv¨oÛùÉÏêuα ¹Ó\ˆCp7X BÓ™! .eµ‹úŸ© ê§ kèæ ÷ZBZ›CXgÑ@ܲt,ä~e¾Î`
+ô(¼¹hÁÌw¿HdÍ8Eµ‹ÿ;·ÜiÔâ’ýÂ
+ ¦&|Ù^6g1€pNض(Â:£»'+\½îɱÿœö%^Þ¹Àíâ’˜”zbQyèÇL l|'@ÇãtˆL×î㥕–¸)O“^«üª©œŽïƒûô$Ø)¿²|p mtôýÚÇw¸Öoø«­vÊHÚ³Ëyd£CmÁ>¢Ï ³"tËÿ)+k ¾ÓæíÄýØê¾>å²3 Z¤°…h@Tv’Oœš¢~6SÒØ+¾€R•u‰±Ø(eE}µÍƒ<u‘•‚ôò/¥2Ḓ½6Ó—Ü?öæÏž•ÛI
+¦Çž•{¥þÏU.䌺/Nünó|hJ|6h €…‚½þÍÖ¶1JÊ3•6xs½Ñ«tr Ýño·M^{í~+E¢ùo¤*\<å&7[N'ÀM@Ϧ’¦ÎlŽzòÂ2)]‘+]ëx{…ÝU
+iæoŸ®ŸüÌíZ¤¤f#ÃÂ^tÞ‹U‰TûÖvjïà»ÆÎúÁû[Ø*³U®£HÅ^W62Ù&6€snW¬æZ½<•>Ò?2;‡èªQqÃA{+¯¥žü¬»¼=³Ú¹ªà1}ÞøíÌ •Õf¾ËÞ4ýØÕÛ½æÔq|Í_Žû†:“x‘À4­z+ú¡£Ê˜ [%¥ùäøƒ]C ?³]“«‘Ó¿'5ù?\.äuz%
+´r¿ßÈ}µQùâóÔÆ|-IúŒÒÝÚSŠuªå½ÑÔ}Û ý»¿òÔ°[l9_ìõ1õ¶|(S=ä€úú/ñÀ?¹i0™<Eõ†¿åŠ
+×€½6vù.Sý©/wv±:„Jª,“S¬×Ãñ”߇íÈý XØ‘££3ˆFïƒÃæ{HuPä!§³.®Ù7Þi+^äï#¬J í‰O`õàxåÈ 0çU”Õ$ÄÇž*žN’dĤø¾ˆþ! `8ðYâOY6ísŽØÕpþO(I£Óí:;oâÜ0^)Á3e Œ¹2»ÐÃ5Í¢‹®¬‹RYÝ­âb.ni`Q38¡ç··nG3ÌáÕÎ+ÄØçxæ¿YC±–5–Ûzàtxš›ŒêŽ6ºìQð¯-½I7©ŠNqß•RE¡ÃT@S ‰º! ¥îóŸBöúÊÆp;Ÿ¹å¸ÎžÚi—~ªµçÅò¤g=(¸ îSáÃzÅÜ@üìCÞÔU»¼iþ AT=„l‘›x¸U´ýofxšÛ*ù £`â‹ù§Vg,ÀI•eïÔù’I ¶Úû–%‡Ãõ©Ð™$Íy%uçŠÝ­µ?@îIpy‡ëju­©Dq‰–y=
+©.© ¸ìgµ¡ÛŽïqwïlŠç
+í_kÑ’
+äøVr>\ñÛïb^ÐíÖ ulWøÇb±~àÑ£åMºIs¿Ü]çœ%a{b±"«dœŸPCK/^w{4·'Là¤éO5Nðànƒ"ÌÂøG(ŸÖ™ ÕÓË1ÆTã›G4XÅW^½¸Wÿ–¾Ã­z°~²`»‚Ï;ö¹)×Q©wƒP®U?³yéXý!ëà‘Â%>¹2óºöî fò»æè6œ`H”ó…ÇqDsD_
+ˆ¼ªŸƒbbUµX†;ÓþCNÕ'ìûy0âÝåòÀwþŒ?®J˜1c2;ãql¢i“[r4Ç]àÛ<yæ¡’ì"âÇ'$œÇ™³Œ8¦:è¬äm?F=æÝÅ
+€¡C-¶Ÿ³É*&ߥK˜7oVïxŒ`ÇØ3‘·À
+‚ wô.Ʊ.:Œ; ½0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2019 0 obj
+12493
+endobj
+2020 0 obj
+1673
+endobj
+2021 0 obj
+10288
+endobj
+2022 0 obj
+532
+endobj
+2023 0 obj
+/VXPPDG+CMR9
+endobj
+2024 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2023 0 R
+/ItalicAngle 0
+/StemV 74
+/XHeight 431
+/FontBBox [ -39 -250 1036 750 ]
+/Flags 4
+/CharSet (/ff/fi/ffi/quotedblright/quoteright/parenleft/parenright/comma/hyphen/period/one/two/three/five/six/seven/A/B/D/F/I/M/N/O/P/S/T/U/W/X/quotedblleft/quoteleft/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash)
+/FontFile 2018 0 R
+>> endobj
+547 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2025 0 R
+/BaseFont 2031 0 R
+/FontDescriptor 2032 0 R
+>> endobj
+2025 0 obj
+[ 754 1000 935 831 805 896 870 935 870 935 870 736 704 704 1055 1055 352 384 611 611 611 611 611 896 546 611 870 935 611 1078 1207 935 352 352 611 1000 611 1000 935 352 481 481 611 935 352 417 352 611 611 611 611 611 611 611 611 611 611 611 352 352 352 935 579 579 935 896 851 870 916 818 786 942 896 443 624 929 754 1091 896 935 818 935 883 676 870 896 896 1220 896 896 741 352 611 352 611 352 352 611 676 546 676 546 384 611 676 352 384 643 352 1000 676 611 676 643 481 488 481 676 643 870 643 643 546 611 1222 611 611 611 ]
+endobj
+2026 0 obj <<
+/Length 2027 0 R
+/Length1 2028 0 R
+/Length2 2029 0 R
+/Length3 2030 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /REFDAA+CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueID 5000789 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+~ õÐâOPQùÍìá
+÷áOñ\Oóü¤}ÙÍ<zêQ}# íL TRh¤ú<c8ºlñL=ãºòê5)nãØÖIbwáÿ`vþdȨÃAŸ§tG=c"?úAË®`œ=—k“ß´šÜ|Nðsù8Ý©öQöÌ÷•UšD˯„§m˜<ïX# T­HltÄ¢Wüp:Ï‘‚Ð¥—¥ö€¶äï”­ø¿‘¥ j€m¶NÉf6©ƒ—Ò*t“.·4jœK^éSË<€ªcKü(ª“ŒpKÚÄÑ5QÌþ+'„¾‹õE멯ԛy#{œV1P¼0é‹°n¬u]j¤æˆïâ ª± þ
+Î^Ã;åëCý÷’ÿT—Që§Ìò”Ê[I/¨=ØG6n»õ0æX9ƒqŸåç(Cïîkéí .FŸsH/Â&V©|ï7¡*¬MÐq5½£Ö'Á¤KpÞî<úèNe—ºõ+Ô¸O¦‚©ª3‹cVu)'F¤jµµ³³Ð W´Þï‡l-¡ÌÚCB£tN!B¯)ÄSë¶]îaÚÿ(ƒ:·ß÷º­‹,ËR;I
+„
+ùÑ_hI]ÇÂw¨­º¡¶¶þUU‚Ãv3È%kêìBCø{€ó–·Á´³@|ndâ#ÕEýžd[f=¿E²X¸§\L2‚_ÒG‘µ¾Räûã|Åì‰äýrœ@»#×þ6û*.«œ¤u^Ÿõ×T´ã!(˜Í˜ä¼*ä]{K n‰õ¦€
+ºb:=E LÄae-·ËeÍ$á“•QR C§ëvÕ¼¦í¬×YeQ3±&´£}ì'‘Ò‹
+p<%xÖ»½3賟d]ÊS†8Þ•ub˜>‚ ,ùò§>%¶ÖÙƒ7Vh-¸ãEH²wu€Qþë:&Ú«pƒ³v¡Œ²(6Ç®z‘)•½¼¾œ³'nýæ®æZø=lø —K3Ñý‰‘©¯÷…¾\Ii“äº|ÂÐ7ð\ƒŒX”/Ìs9&Y7;ódü_Óè±D
+¥/qŠPÿö‡áY•I§3oê© T }x¶•`©þnÈVËû)"›Ø·Œß`Dʼ—[sÛ7¯Ðï-\õš±Ó×™ÞÍuÞ½ÄÛ%!¶ðµÔÙ#ÓÜÆÎÆÂÈá~-¦uß±_•Yj¸®>¼ß1 `¦)_5|³ ‰—EíÿŒ–rmM¯3eJçÏåoÊ¿c’„ÚÒGâ:C1œ«B¨¶pºøŸêƒ/$ø³‰
+©S¥ÜÏÜá/dÚ†ëœáО§7õ»ó}¿óªöÆ,ÚÙüÎTÃw-¦ 0Ž¿÷¢J}¬
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2027 0 obj
+4133
+endobj
+2028 0 obj
+911
+endobj
+2029 0 obj
+2690
+endobj
+2030 0 obj
+532
+endobj
+2031 0 obj
+/REFDAA+CMR6
+endobj
+2032 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2031 0 R
+/ItalicAngle 0
+/StemV 83
+/XHeight 431
+/FontBBox [ -20 -250 1193 750 ]
+/Flags 4
+/CharSet (/zero/one/two/three/four/five/six/seven/eight/nine)
+/FontFile 2026 0 R
+>> endobj
+523 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2033 0 R
+/BaseFont 2039 0 R
+/FontDescriptor 2040 0 R
+>> endobj
+2033 0 obj
+[ 664 885 826 737 708 796 767 826 767 826 767 620 590 590 885 885 295 325 531 531 531 531 531 796 472 531 767 826 531 959 1077 826 295 295 531 885 531 885 826 295 413 413 531 826 295 354 295 531 531 531 531 531 531 531 531 531 531 531 295 295 295 826 502 502 826 796 752 767 811 723 693 834 796 383 545 825 664 973 796 826 723 826 782 590 767 796 796 1091 796 796 649 295 531 295 531 295 295 531 590 472 590 472 325 531 590 295 325 561 295 885 590 531 590 561 414 419 413 590 561 767 561 561 472 531 1063 531 531 531 ]
+endobj
+2034 0 obj <<
+/Length 2035 0 R
+/Length1 2036 0 R
+/Length2 2037 0 R
+/Length3 2038 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /YLKGAA+CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueID 5000791 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+ŒÕWÇåת>©~ºÓ–Ñ¿ÏJmdv‡Aíê
+[û¿4|ܾ.×V–z¶ÛÄ_¢£1. F¥ýf« |Xÿîĸ9^Rw]
+ü×ÛŠ³31S\D¤ËKZÍW`– äP”Š^êÝ3ê ’eÛŽÈ Í8`2?Òl;ˆÈŠ!eXxh
+Dfú@=$»—*I¸BÁ€äÒXÉÔ!ÐWx-b1ƒ £™³ÅòòÝC; p™À}½âhÐÿíQi¼Ð=H²ðX­bØgŒbmÇ£óR,™º–>ù_ŠÑ¸°ÓQ!
+äÂÅZØž¶Ar“]< £˜óîîÃQ–jt8ï?îB,mN3v լǵ+í˜Kú­6ï t‹Ð{äAJc—Q%ÒrúØ?væÿø60¾RmXsŤ+pú‘Ǹiñ:þUësõ‚ƒ‡“¸Ì)káÜÏPýWË\~Ú;
+ó"ëßÖÒÌÐfl"®øîd~åé•ESáËñçŠÛH“füN.ì;ãAðåßO°¯ÄÀ¥ž <· \r¯l˜5_ÐÂc™©m@vÆw.¾âIâKGAæPCŠ6žr¢´|ê:’Ó±méëõE£åÚÀÕ7¾9Ìx¥fùÜbä§#O€Ó@G>ŽšÑ7sˆæ,š‘+Ë úé{È Ë'%)äWÁ¦c&Üj`W©rÅuxN¨eMÞÿ+ÔMa¯x0ÜÑ¡Ò•Ë=u®óÜ«“wÛ{ö¾p¡A¤ÀÕ8Ð)ÂÔ¤lJI
+&C4Oë+›9§Vyà|N[ù8§_©À†]%ùb“°5NUŸÖ/µDŒT$ õærÝ7DéNl»GÄ´f¨Zuâ#ZÕ1ü÷ñæõ(ø;¹k¸‰eÝ¢KŒç)Çù±(¹ÒÝRšåé\ Ìr=Çj@òÂ^ŽR¤[î`À4)Á¨N.ÔZ?ª_½ø.[VîOgË’u5/ÄÀIáJ¶ô­ A3Vh>WZê2¡ Ñ"KÀµ“ ¡Å>ñŠ ÁŽÁ”
+«³¼¯e2h‚,gµ:W/Xà®ND,ŒázÂÆð]KLˆ·Í×PæH£žªâöeHÍdÿsó/Ÿ\ŸmÁ&ì>‹¬Ê“S [ƒ#îÍ'‡ðÓÎÁG®“„ùK®åwîöÄEØè¡Dk@¾“‡¶dnÆÏz†®ÒµôïÖ5TRèwë»Lœï»~~!^þ²×–ê3±ÿ³+Œ<-`úÌK–qJêÂ9•ÅZÚrû×7jJ¼Wƒ</ˆÅy‹ä fà »öª¸¡‡ÀZy›¨¶W¸œò›{›Ì6ÛæcÆœ3¬7¡jÇGV€…¹ÑÖú´¬]0áÑXœ F¾…K×äo˜Rc‘?Úˬ$ÿ‰OD↓!í5ËñPŒküšFJŸÐPöJú‹Œn”žŠ™òýë
+_”þ}´¥Kú±dm䄈xM=­ˆö´M¬7`$¡Æ^éP ¿©º®Ëi&«rA¿¯’E¿¸š ,ÜweÜ<VW–ºœ’j“@ÝpöÞÕ¿16}§À Ü·_~úº[Hê¤cIP
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2035 0 obj
+4323
+endobj
+2036 0 obj
+925
+endobj
+2037 0 obj
+2866
+endobj
+2038 0 obj
+532
+endobj
+2039 0 obj
+/YLKGAA+CMR8
+endobj
+2040 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2039 0 R
+/ItalicAngle 0
+/StemV 76
+/XHeight 431
+/FontBBox [ -36 -250 1070 750 ]
+/Flags 4
+/CharSet (/zero/one/two/three/four/five/six/seven/eight/nine/A)
+/FontFile 2034 0 R
+>> endobj
+512 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2041 0 R
+/BaseFont 2047 0 R
+/FontDescriptor 2048 0 R
+>> endobj
+2041 0 obj
+[ 615 833 763 694 742 831 780 583 667 612 772 640 566 518 444 406 438 497 469 354 576 583 603 494 438 570 517 571 437 540 596 626 651 622 466 591 828 517 363 654 1000 1000 1000 1000 278 278 500 500 500 500 500 500 500 500 500 500 500 500 278 278 778 500 778 500 531 750 759 715 828 738 643 786 831 440 555 849 681 970 803 763 642 791 759 613 584 683 583 944 828 581 683 389 389 389 1000 1000 417 529 429 433 520 466 490 477 576 345 412 521 298 878 600 485 503 446 451 469 361 572 485 716 572 490 465 322 384 636 500 278 ]
+endobj
+2042 0 obj <<
+/Length 2043 0 R
+/Length1 2044 0 R
+/Length2 2045 0 R
+/Length3 2046 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /SGMUNA+CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /alpha put
+dup 12 /beta put
+dup 22 /mu put
+dup 23 /nu put
+dup 34 /epsilon put
+dup 58 /period put
+dup 59 /comma put
+dup 60 /less put
+dup 61 /slash put
+dup 62 /greater put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 78 /N put
+dup 80 /P put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 102 /f put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 110 /n put
+dup 112 /p put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 126 /vector put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueID 5087385 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÕ™=ü 0)xfáÍ
+1›kÙXž9JS:6ÔV ™
+é:ùm— ,MZ+²¸Ç’\Ex
+: áØã9pEz–~ÿ„öØGu E¸Ì[Ùn窙ÝÉài9ヽ¤u#=X­&>¿¯Â~J~П°ƒUöêtå0°t1Cò¨qs-bØ5±ŸÒÇýð„Õ 4AšÆG˧÷OE1Ü»Ú"®ê?»»@~
+ÌR½Æ ¢”ÌO“ë‹öÔ>›¨XÕO8‘ŠÈ' IVÕ‘ðTnPü¯¦ÛÐ ‘#õìÔ«3³ÛL®3z‰ŽÙ›oH9@ÉuDøˆêðËë JÀsÐf*¨+ ­5èx/…Jöl ÀþñÍÑdc!¹=2~SØŒ è%ú•ªW½qºWå†c…Óú÷ð¬¾ç–È+ÃúžT¡bUìÖp©Uã±b“f†±%ñÝ™i²eµ÷["–?”íêè™PkH¥&õ›j÷OëoÄ;ã§uB‡ÈL·]rÚAÈqÉÚ¶‰’9¯È‹6ciéµSD•Þ×Æ#<ñƒ,1šVÍ ¬‡åµfÛƒ–Óx#û8—zWº¯º×ú1eôÊÃLTˆ¶V‘Ë[IËqr«¶i™È}×ï/¡Ã¦]É÷1¨Ç•èÍ&W5«=Å7¦Ï}þÜCÑŠoo¼/ ÓóÅ–ÆÒˆ„¸6{Ú·T–ÚÚñOò{…Ç‚3ÿ
+·Ì½üHqh¼8ňÛî/Nh–p
+»gyçöáÌ_+8&5´…ãNË°Gd3W­L™ #äjqâÃ
+gïýA/Î{͇kPÅ/ášÂ ÷‹=8QÇ5WPI^‡rö|•9ð/$#ˆd±4å/í“DÀ@Hg‚#E>‡í0ѺìQ€‹KO‡uPîñn{Ó¬ëÂâ–Q— ‚õJ×_Ž¸£(¶N< dÔ¤"g G;Û´ ¶|L‰øô0~‘jÖD ˆ¬³ˆ=¹·¿sÁ}³¼´$~+è/­ÁI}ù^$ˆò^0×OÕ#]:bÍÑäJˆ+Û扼ËñW¿È&÷rˆÇËüV»»¹:Ç–¤ý@ gµ¾¾¡‡àáŠU7¢+6Lw• ß¶xf¥­[‡øïñ}
+‰.—+áö{›OÐÚVÌš
+n{?Iÿ ž` …Î*fõÙ%¥hü6hQNºÁfD]Õ~%Þ©ù~Ì=j_2«IŽÉ(Mj¸'ßhªÛØÁqÔ£›ä.ö éý¯iðw2QY¡µ+ËZ1ùœþø~Öèu,W/Ð ©LáM/W¶rFTˆÌEzȧ(Rj¸ˆûô ýÁJ¢ùu IëðøSzö6·±³Ê1¡§xR²÷ ¢×‹d‘cN?U¯cŒç*rܸÛ4¼Ñ˹Ӡ3Mœªb÷2×I\Pô&¤íL£{WÑ÷{σ¨òpcÍž1(Íåh•±_\G1ü¿²5j¹wª ²qŽ·.CžŒñ6ð½W¹ÊÃq³ß9³*€„´4
+Œ"cˆé¥fžËsÿS>î-Ôñ]÷ÿ£ònOÚ:žÑ¾Ù¶Ýýú›:qkƒ”ÑY£Ç÷JDä¬Ý–ÖMø pÈ'ÆÃÒÓ¨›®55Rt%´÷ìù´eëJ5W‚Ø8s®÷ß·\çâpMj--0ÃSyÊ›øºô¨û)«uµûŶ°yjõ Š>Ž¦?çËm4"£h…<Ë"–wVã—¯—DÆ’‹>ø:éW°•Afsƒa¦”‘HŸRj¾ojÿ}ý%µ¡ñ܇¸#Í 2›N:|¡W…¹ÑZRÉbL«£+Ùö†9Œ{çS4SàŽ†A¢¹|SÖΑPòi6-Îè&¹ÊNèåhùr`ðÒ%¢Žù5lšI¦¾‚Š²¾ŒÆÒà‰¼4­÷ÁNÚ{#&ŒieR lŠ{Õruiû,o fGlê=!Š‡Ø.®¦=¼ W¿x;ðW(e˜óÄ(¶Û÷kO¹Å%chæ”dœä3@â,K s’¡D«2Xfhµ¼ 5M…6þ:Óæf#Ç&<Éâ²ìvö÷?,tÐË5>ämPØô÷Ä7=åD°‘¶ i•”
+š”•¦f)™anðH•]û ±²xŸ€8æÁÌt,œfÛ8ñÅ"èæ.MD‰{ßzT&ܬ¢£~ƒMñ}¬ dê=>ŽÍ(¬v/Âz¥­üQáÜ÷R¸z3‘ðÞù¸0Ø”÷&ø„ú†}°+úéà'ošÓ—]²“Ö¢;Þ(ƒ&q§PŒ»ˆÌ‘Ù!)ù+­Üü”ü–·%Ÿ=¿~+’‰×Šã‘tÊá[ûÁ$}J‹ãDÎè‚Œõ oþnŒÛ¤Ãavý*XA?xˆçGWl¾pPáv¸,D°ÀÞtü¢„"‹vu'gh»¿šŠ6 |÷õ9öÅ”lØ‹‰+9’ÕÐà¯þRA[ã¯ôqW=a͹DD¹¿¾šÏìF™Vø 7V­Ï>5{Oõt×W°oI7‡ ôÃðøÀ·ÈõЭ?Zó›+¾«.;0óÉZŠ'4ñ©†ÙOÔd‘§ôsXP P—’
+‚žñaÈ0½û¸”z¥MªêþZä•uö»
+±O»g
++ûƒÔB>ñÎÞ©mòêûH†¡Ì4–œØ2XáV Ð5y[ÏHO”îÍ=Fˆ šE§Ü©'¾ˆ„&DÂ^±Y¥/åÂ
+@ëwöYÉ ¹â·¾°Èa9ê´Ñ”sÎF`>¥yr÷"¿Ž¢–Õ´åHD®ím›Û•}ðò>./ öeÐêÓ½FkEö%Ûl›í¹¥¶).uu¥ÙžÄõ¹f}š°"N‘¿Èè,°ÁîÐn%wÙ¤½n*T,®˜±–YMq®˜°u?ˆO=Ý”–4f¦ô
+~È]‡«¨Zh®<ý³¾LV$Ð'ÏÕ24õ‹ÏVØ•¶zdW‰ô.`cÓZUõà
+hH¦i 7¡¯ÉfÛb;÷Y¤ü¤±}˜ì@¦UGÂ&)¦MÆr¾±ÔŽE¦vk¶‰>*¹M"¦×榕jü]Ìô´`¯äYOm¢\çýVpb]cæìâ¢ÒC—ƒMé߃o
+~n¡ö÷‘Э+ŒMÙâ#`ÂþomÊžÓLtÚMœ"‰N!¦OgЧŴµEm˜O‚&Üï±
+
+é ©ÿþµ±]P[b²Øë³äìæW±Ê„’ê *Ÿ¾·ÈB{øb^V´ï‹¢jv\”Ó(®`Z*Üê~·¨ª@S‚‰nŠ«½nˆ?_Æ~Ú—çì‘ý&%
+\â@wL%é0÷Û{€_R
+ð }/Ö¶û]*'…ãIò{WQéÁ nWšÎLhdòWÝXºÞ*·áÇg]kVÂÞòƒˆÚɇ¡ºx|PH!-fi\ZêèwÊèeåŠn"Ï,ØZÛ–-·ÔÒÚ —¤Úšf˘‰Ø,z¤YƒxÚ@9Íý…Ä®Êö]˾½´IbœØÍòŠí A˜†;Jðq[mê|$@:>|]ƒU“[¶6_‰ø­1'o/|‚ÔóÓ~[Ôóü~,å^I“ìI;å9Ôï?CÝØ
+ȼäB!±Ž¦tÆÙñFm,ªv<¶¨¢„ýr:?낾ñ´ ±Âh‘6šÐõN7I”À:¬_ð„B@m¨°Ws©¬IÄï`ûWÙ!2â¯bu–o²pJµðóÉ“è OOQ3Å:? 0gqåRt$§V±9§`ÑÆÿmÓÈgcï˜kÚ¹¦¾³™²5M‘7¶«¸wäZKÕ“ ²¦>•×'£Ä\Yq÷±?%o2½ ‘H`M½ Gja1çd2rxÏì6[Á.­_bç®ï½‰óJ‰ý¢Jòš´pq–A-ý.hký ×D[Ê.W£Æ¨>/ÉßRåRäX’ËZho÷Ñ%b¢þrkOcO=?Æ”ãg“5üO;Î]1gs7ôØ¿ÎrövþBJG¯A ¢.MÙÀ u˜ŠÙ½„vð]›g€Â÷ ðLcZ‰ W€Ç_tóöÙ$Y 0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2043 0 obj
+9390
+endobj
+2044 0 obj
+1303
+endobj
+2045 0 obj
+7555
+endobj
+2046 0 obj
+532
+endobj
+2047 0 obj
+/SGMUNA+CMMI10
+endobj
+2048 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2047 0 R
+/ItalicAngle -14
+/StemV 72
+/XHeight 431
+/FontBBox [ -32 -250 1048 750 ]
+/Flags 4
+/CharSet (/alpha/beta/mu/nu/epsilon/period/comma/less/slash/greater/A/B/C/D/N/P/T/a/b/c/d/f/h/i/l/n/p/s/t/u/w/x/y/z/vector)
+/FontFile 2042 0 R
+>> endobj
+510 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2049 0 R
+/BaseFont 2055 0 R
+/FontDescriptor 2056 0 R
+>> endobj
+2049 0 obj
+[ 612 816 762 680 653 734 707 762 707 762 707 571 544 544 816 816 272 299 490 490 490 490 490 734 435 490 707 762 490 884 993 762 272 272 490 816 490 816 762 272 381 381 490 762 272 326 272 490 490 490 490 490 490 490 490 490 490 490 272 272 272 762 462 462 762 734 693 707 748 666 639 768 734 353 503 761 612 897 734 762 666 762 721 544 707 734 734 1006 734 734 598 272 490 272 490 272 272 490 544 435 544 435 299 490 544 272 299 517 272 816 544 490 544 517 381 386 381 544 517 707 517 517 435 490 979 490 490 490 ]
+endobj
+2050 0 obj <<
+/Length 2051 0 R
+/Length1 2052 0 R
+/Length2 2053 0 R
+/Length3 2054 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /TXXFID+CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueID 5000794 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+4•Ü5h¨LÉ#q§‰:4pPý¦ì÷?gÒ |GJS†nœˆæ^i2º‡§6†ê°“‰øM˜ Ęz0í”.²° ¿õ¼Ç ôâvÃ3›1¶ê»°xCj »7}0a¢ ¹‡–¸`~ì¼i”Eê¨fÃŽ
+{Ë Î³òÞ±Ž´è!÷+ýN7œ7_©¯À+—šk·‚S”ǺíJ"à
+JÞ®;UŒTsC×1,‘2çÈÛ€xVV\­è,÷7±ŒeÇgÏ.át ECi#ŒÚ¥¤%¤K¯lä"omõx-òéi*Ln—²[?$h'`°ð†‰ëŒ«RϽ/džN°M<¦Ècj´.°fšÎ ¿`±²U&Z­ áDHu7YÒä‡ïK|/9~1²SÁ²|O(¡BÇW^q%KÃK˜g=æ“kÁ5|z1NjjÔÒ‰7>WücÙ‚.XkÍ/šv[6Ûj¤EŸjÔøëÖ æ€Ý¿;.¹;{€YãÆt2 )œzòèÓ…®Œ
+Rxðy<҂D q”`i“W.Ò’kFÌ%Ù‹
+áã¤M]9å9Ýɤ4Òñ‹b45ÄÆ~j-ˆxiQÆ€§25+jaÝW|œ ë2¨—™Úç1£hþK¥ ÞE¥aeYŸMì™êФ")·ŸtÐÔ$XWXcÄ|þkA•¹“eÉ”L"¼§µ$/mü~(áu¸ëSaô~hf©t"]¸g44:ü³Ç h eV:jå7´±®°ey`X—¾*µõB2bE¥+̘cÇvb½‚¾³úUwìQ4¼nã
+ƒ¯]Šëfý¼@ÿ¥<Ó—ÙP”šÞeÿc7•á‰&\§¥B•Æ|³Ü*ôŠš, §nïÛopjD½ýá|bvžÜ&²Ó±[ÀŒ^¡€ô¾ñz¿$jÇò@»i¿Ú’]/[D\?kÖ ÞZNõ%~ÕáXg;>©è£Fh”û¨®KËßyheñÏþz„ ŒÆÝס¦AJoP(kEŠ\ˆÚ‹Í”Ìùº'}jpñMo
+Vyîëê²2 *‘RÆÕªZkµó?$ú›º€6å#ꋹ? 8¢A‰ÍfÅÃxClœ &Ì&ˆÚN ‹¹ÎÕ3hë½µ«´ïã׊cè]t,lM;¾!¯žvIÉŸfð†,<7‘ð?z‘´§N«†‰!dV †m5Ó‹ö@ZQN«å“Ào³ë*: »ºfAVÕK®Á\É|›¸ŽÚñ¾ui”dù
+pJèQVÕ†ªÐ µ:á)”ÕX®¦^]á×i~H1&i¬‘;Ù.}^š¯¼q˜¾À^ßjâü&Ô“°OÎéê‹wfôT{Rd†ÿ õ.[¬ye!&<iuÁÑ>äM`öÇ6JÙdï»ý‚n+Iõ™ß`Ó÷dÏ~Í‹ßÍ’íÈ"Û"
+ýUì¹²®Ì§«Ò˜(3?¥F}ÖD#œ<cƒ-YÉ„ÖaÈùƒž@,äÄë ’©fÐë×ÆVdŽNfÎPSmbá(Wº½8Ï^3w=ÿ%†ˆ»ã¼ŠoÁ 9Šè=opeíÖð¡ #BÇz
+u]UÜAý3A-‡“-tÔˆ›Wž·áqaˆ0M0ÒÞbišÊÜ„cYjƒÔMfõ½/” s¡›XáìÛa¥:¦7TQ‡Ò¥l»Ö5ýº­Ü¾dINbj);€ú,}@iSNI^@«Ä Ý‹ùBÉØaÍe•þlŸG¬¤cM¿Ù¸†zu ³
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2051 0 obj
+5446
+endobj
+2052 0 obj
+1028
+endobj
+2053 0 obj
+3886
+endobj
+2054 0 obj
+532
+endobj
+2055 0 obj
+/TXXFID+CMR12
+endobj
+2056 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2055 0 R
+/ItalicAngle 0
+/StemV 65
+/XHeight 431
+/FontBBox [ -34 -251 988 750 ]
+/Flags 4
+/CharSet (/exclam/T/a/b/c/d/e/h/i/k/l/m/n/o/p/r/s/t/u)
+/FontFile 2050 0 R
+>> endobj
+497 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2057 0 R
+/BaseFont 2063 0 R
+/FontDescriptor 2064 0 R
+>> endobj
+2057 0 obj
+[ 778 278 778 500 778 500 778 778 778 778 778 778 778 1000 500 500 778 778 778 778 778 778 778 778 778 778 778 778 1000 1000 778 778 1000 1000 500 500 1000 1000 1000 778 1000 1000 611 611 1000 1000 1000 778 275 1000 667 667 889 889 0 0 556 556 667 500 722 722 778 778 611 798 657 527 771 528 719 595 845 545 678 762 690 1201 820 796 696 817 848 606 545 626 613 988 713 668 725 667 667 667 667 667 611 611 444 444 444 444 500 500 389 389 278 500 500 611 500 278 833 750 833 417 667 667 778 778 444 444 444 611 778 778 778 778 ]
+endobj
+2058 0 obj <<
+/Length 2059 0 R
+/Length1 2060 0 R
+/Length2 2061 0 R
+/Length3 2062 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSY10 001.100
+%%CreationDate: 1997 Aug 23 16:21:30
+% Copyright (C) 1997 Y&Y, Inc. All Rights Reserved.
+% Notice: This font is not in the public domain
+% Notice: Computer Modern fonts were designed by Donald E. Knuth
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.100) readonly def
+/Notice (Copyright (c) 1996 Y&Y, Inc. All Right Reserved. http://www.YandY.com) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/FontName /FVYAAA+CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+dup 2 /multiply put
+dup 6 /plusminus put
+dup 15 /bullet put
+dup 21 /greaterequal put
+dup 25 /approxequal put
+dup 32 /arrowleft put
+dup 33 /arrowright put
+dup 40 /arrowdblleft put
+dup 41 /arrowdblright put
+dup 70 /F put
+dup 106 /bar put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5096651 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+ßJÃÚ{=ã–ýœ%Öû7µ®þPJ÷aŸ ](@¨¿Ú"¾®1¹­òòr,Éæý’ƘŸRp­–T¡Û{4šüèaPÖWç gû8:k’ª2î(m,A‹­ gR,}ÍAVÞ·BºÓl
+¯z•&Pöh€cÅj†¯Bú/Ù3%ð‰¶»WÁ7]—<ÿX½…%¶ ò˜lõ«†{L+î §nzIhÝcÓž=
+ÍãSûà“ ÙvñѵDó½5FŒ¿Cò’ÃŒ$§FöpíÀ\€`y£<õyÝ&pDv‘ƒm);lÿ®>³)Óxƒ)Ýc­gÖbzøYX2÷ØEHÎføÕvæžR0QB 뽎wÊ¡+(ZÞT£…-Ü 'ĆòÛÍP,ôÙÊì6v…”a a®” htÇ;rr²²Nñy'ÃQç
+eUýÂ
+J0пáN‚‘ ¤clÎ!T63ÅgÔ_NŽ_eXà^!£I“¬åžÁ“NY$¹³€ “ïc/8ÍÑÈÈå‰C¦¦ÙáÊ,ï4÷•Gðø˜rœîd×=#Šžñ‰Ÿ•tѼ×ãëÛnK3¿%\š·ËI-þb•ÒovrÕeK%oc±¹Ò‰$î©Ûxž@€¸*>³ž[½ÃGî—gãë@b!Ùå kÿÊ¡1' 38sCÒÒéËsL€
+ˆ³a ܱeœ)éˆs`¯·3™‘qNŠ!§—€OCó—ÚÙ¦@“öEMu¯&”‚XVÆ:˜ºê‹’{Â7ž7¤ge'°ió§Å<ä/ËQ¶K™Åp0Äw àB4Aê­‰æ‡èðë,¯…l%£%kƒ†4àW[0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2059 0 obj
+4385
+endobj
+2060 0 obj
+1161
+endobj
+2061 0 obj
+2692
+endobj
+2062 0 obj
+532
+endobj
+2063 0 obj
+/FVYAAA+CMSY10
+endobj
+2064 0 obj <<
+/Ascent 750
+/CapHeight 683
+/Descent 0
+/FontName 2063 0 R
+/ItalicAngle -14
+/StemV 40
+/XHeight 431
+/FontBBox [ -29 -960 1116 775 ]
+/Flags 4
+/CharSet (/minus/multiply/plusminus/bullet/greaterequal/approxequal/arrowleft/arrowright/arrowdblleft/arrowdblright/F/bar)
+/FontFile 2058 0 R
+>> endobj
+496 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2065 0 R
+/BaseFont 2071 0 R
+/FontDescriptor 2072 0 R
+>> endobj
+2065 0 obj
+[ 627 818 767 692 664 743 716 767 716 767 716 613 562 588 882 894 307 332 511 511 511 511 511 831 460 537 716 716 511 883 985 767 256 307 514 818 769 818 767 307 409 409 511 767 307 358 307 511 511 511 511 511 511 511 511 511 511 511 307 307 307 767 511 511 767 743 704 716 755 678 653 774 743 386 525 769 627 897 743 767 678 767 729 562 716 743 743 999 743 743 613 307 514 307 511 307 307 511 460 460 511 460 307 460 511 307 307 460 256 818 562 511 511 460 422 409 332 537 460 664 464 486 409 511 1022 511 511 511 ]
+endobj
+2066 0 obj <<
+/Length 2067 0 R
+/Length1 2068 0 R
+/Length2 2069 0 R
+/Length3 2070 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /SLLRHK+CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueID 5000828 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÕ™=ü 0)xfáÍ
+1›kÙXž9Hÿ°´ç!.ÉvÖP™ØN 7§§qÃjÒj7!ì6CžìàÉ«T´w.]Ê‚ÐÔ¬Çô/´“ª£¿JÖìá†1]¾œýËèÓè0'Í:ú Ôf¨èÊqdÏU³2úÔ4‚tÔ¡Ë?@Ë^g+‚ Øþ0ùð[ðõµÌ
+K–îT•B/ºU¾é¿ÙFM˜zÄÒ7Âú† .UÎ{7‚£KÂ.=ãUÙ¯ñžI ŽC¸^ì訹…ƒ$ÒO7Ûù—-tæìG„rzÀ œJ:ÓÚ"½ia~
+ÚõT"ò*Ê^MÍMùüч¥f·ûf0EM ÖÆÅ
+z8uÆËøìwió*?ÁÀrºÞÉw”Ôé
+Ä4*RƒäX§&’RôT»dR³žÕM3m ’ŽœÑ«&­ƒë ž.ÇP¢d8;]»F |H!µòÉ%Té ã[-¿Í˜€šŽÉü‘Þž †E|p¬°Vëù$MÀ¥»ÔUá]n1€1RÏP°¿}
+dó¡‚
+í¼.{®µIþQŒ7™Æà‰µÕÖ^N-+C ßú#̲]•\MØ…1
+pk2
+²\t,o)•2TúTÚ®æÔw‡}¼ÒŽšµv°êqý
+±+ò¡/*KÇv½š=†Là¼6®?€•š<iU2À ˜çò \ÖE[ÐKV÷äþQ\Ó½qÚKŒi[ô s*äƒæ"- rÊ*]ÎÅÉ7j—/ñ1‡°[ ñ,Úç7˜Î5›(”µD¤%õÙ/ V©
+_zgÐ1é»mDV>´ñðÏnºmÙgºp?ûÝôúI|T'áÓÙh×b;þWV2w„eþ_Ñ—#–¶—°[¢XÌÿY@FHúIE#ÝÏN p¶ùÖIŒŽhÞÛÑæ§õp[
++N AR-áö‰oú¼wT”{xüjÚ{”“éUõBÂÈyÃ4€§
+(!Äy k¾Û2x™CC¯üw™°›Û=ì ‰ìi{Íôj€RmÇìÏ`ŒBòsßDúBX¾ÿ¨ý4<s¿r(ñ:&¬APf¬ÈÂr¤ÅKˆ¶„ÃI"Gu²«Lr?Œï”ÁD\ý¨WE¹±]Ÿ¿#Ô7{}GC>è_>5Èåªìu6½ùgZe°hÆæ6㋹wƒ[Ìmæsbõ<­áí‹ èD-­ôx×Ä¢Ÿ•ÑÉ Á0,ªùÑû|Ë6ÜàÁ½¹•5ô2e
+EÖ²uLº Í°µ/&¦ÐøQ•/æã—ÎC)ÿ+‹ÊÛû”¨Ž­½‡.)?b¿È±«÷ÑŒ‡Æ(ø`< ÿî¾—ÑàÎ}“,»YòÛ´®4\4@Ó é+ˆk’Ÿ] ö² Ü¥!_º~”9~ȯx…ÁiÉ)–r1ùÏ ycä*+Ì»¥.2¬0×ÀË]Õ§N×ô@ƒö14a…Ï™s¥nìî
+~Ä"§ö•:ùÿðÎ+fól×Jp¦/iúy
+QE ¨Övƒ;N8½¡Ñ"L$[°9çH`c©òöîŸéB”sÓ•Ó¬Šú·ÏØLó\3ý‘åÚZªEÔxÇ5îk,îÜÉgÞ=öýßf.‡°“_¿áS]yMÖ]Ò* úF>CˆCg<¦’Q2W¥¥ânãûsÃ{Ïçèû!îxᄾòÒÀt*±¹°dðy¥›þ®5YÉ„F£Ño¬JÅaïR,bCÔ…ñdÚ‰À—~´§Uà H;«ßà'‰ÖÊøëVËðÚ‘W9mAg÷—¯É'€65oæx(¶cWO›:ʽ‰gWˆ:Ÿ˜©Q%V¹h„ºä+‡ì^£ƒ¸H†Ü<C¡¬5ã·'LºGV<íÔ‚ZhñDbA£gvÀŠúPÌ=÷Z¹‘š…Ízô+)U>í^QIö÷éW Tk)«Äѯ°eQ ’4°‘™¢ÚßXÚ®ÎY˜¥½Õ|â´ˆ€¦Ú2º^'êvâk½}‡$1èØÙ¯¿¢Xm™/œmÝË€ :Ó‘âfné¬M¿f—:É'Q
+g Óz|eG©²8'‡u°2¡Uý4ךכÐ'SRµ_»“ú¤Ùõ.›™øDp\Ä-M#Ð^ Qíýš:»Å§êDâXMUâ* µðuUwò›î_ëÛ¸
+—rÃ4p“M/¬å¸Tš­X)“ðCÍ ª´5Èž4?]6pÃû9½YZ²8Ï—ë+u5n@ÆEúÀ!±-À´nêôrâI•0Â3~ä©ay1F´hð»µsä8!„Æ ¤Ö ?É»}”zqóº&´ÔÂ*aZBCYU±52?Oxš‰D¹¹Þa«Å‘ÆÌŽ \òã1cW"òÐ
+|Øî+Ïà¢bu·Ýau’wÑ{s~‘ÙàYÔHÐ.ýËÒŽÄ~ª}•ñ^>•ü¥ÕXLÇÕ ö´[NIÓS÷Ø\]¦Œ"Õ½Ã<‡y
+½ÂIŠ%
+/ŒÿšÉ€cgOŠ÷pqƒS…þ-yñJÓCeüîp¹IÎÚPÎeqhÊM¢  \=ZvÓÓ,t'ä÷wÀÀ/ÐH½Äw›LtÝQ\>£‹¦ò)mΆ62ÉRÎÆ^ôìo÷̲~¯ø%(Îl3vrÊF‚c±«ªÇòŒ Ë+øøq]äÌCÔWû1xÐɾ5Nc"‰ÖGà3nöÊF
+œœ5³š]© ª_JyÝú4§Ò\/¬CACXðú{`cÛ…¨k®”µƒØä…ú o3>ºúÃwSÒ´FµÎŒ&S×m=n`doòid³‡¬59®‹ ð#þûçþ•ùêÜ¥’¡QzæÁÚ Qó×ï*×¢5ûr¾œþù²ö^›þ"Ÿ’ ãåËEìÄÝX8%±]j/•6B˜†GË„%Iµ1u@É7ôŠü ›‰#95¦D½{› Ó¶%ø•žjÿëðANü™Í¨shv”)¶²Ø«Aæê†@Š‰Û0å€-‡õ›­­ÙcÐm2Ì,ã&ÒŒ397ý÷äІ1Ü;ˆ¥ªC1ý@^¹5÷ –,ô¾ïS¡Ëº5y¿ÂFÙ¥ Æ»‹^xÜÒÈ¡¦íñ*‹™úx¿±}Õѯ¬¥`rM7¡uN,]t‰%]#î ýÔ'¥â›Â¨4MYè^·t,Æ3¬-ªÑþmã»EØ­p‚!®õ‰'$-¥tðl³MCZ§£a¤¾Š*ÊÖ2œf«ªÍʤš² 4LH8¬ä•|\c L0^‰íï‚çŽÊ® ÜìzäÅ–Ø–í[໾ÒüQËê3VËôï|›_p¥þ¢UhÈ´tÜů=‰ùzv¸ÑªyÓÙÒ«eє݊ºY˜8>.c´…éD×y¸ÅýE`.É‚·ãìí{„úê¦w6QQë¨R`Ê_vÏ\z
+¾Hr2É$ž|^¨kVÕmÇ_çʬö{¾u’UZ«È¡—ÃͺšëÿËd_ëõ˘ƒÖh1Êj=06ZØ û®§3Ñ(N‡NßCgÀZq‘}íÓŽ+Ùþ¡çj-2Ô¾£ŒÜæ+f ÏŽÇ?×fÖ—xñðàÿ¼m,ŒÃ¬ž:¾£Ap*»ë#®\¹ú^Uv‡:vÚ•Ÿ¯QÛH´Œ%‡¯„ý7ѽ(õv2
+ô¾ãS±VþUZÃçÎC•µyi†û¬òQEìŸÂßoYÿÃJÖ›Æ.7Š1ó‘ö‘;1Ù˜$p†»ÃBÿÖ‰ozg*e%Ql?i¢i~­‹ÂÓBÉŒ¤ +7lí†+îõ‚Ý6¨[ps‡ódf(žör5¾É³ß£ G׳›<LCö¡œì´+‰3òtºu Zµ’fî ƒ.—4îâ×}ýí#,×\‰d2˜µêœêl5œ;çÔtñ/V8Àįմ©b<Ã@˜£[mpPDÑÛvváߪ%­¤(ŸéDc†ØBÍäN„ŽûÖ¼~˜«²©}Ѷs8¡ŽÅ¸˧*.–°æ!®}›yáúµ/î'.r#•ÛU.¯oôÖ*ÄDf=(°ÊêÁ„Í`O†’*q#ÊÊ”hyr {I¾ÓUDgŸ¢Óz–sÏ÷>@bÃ8MÝ–i>}m(ã]ò¨–Ø"æÆzÚˆ«*áΣækg4£LedÅA{”í«ÐÛkÚÎÿ¬›¥¼µÓk5Ì\ûu] Bɉ5ÍÛȘÇKŒm®©kßk‹õ2öâRnâ"±ÃÛXÖ™d› X©]9¾™Ðî¯-ˆL›‚VîÂØñœvPåfH®À¹`õc/‘P5ù'g
+îÈ‘¾*+P HoO|Y›Ç[ÊŽ®8³^àݳ<Šß¦’ÉÄw¹,„Ú(ìö<j'ê5oå{Ž~­þÅ*»
+Tûˆ(å+i‚18%1ã,5¯vÅ.äTìïðz‘nþg*„W-²pë×-n‚DþÁ17bW
+…¯Íaº\ìä€Ü혹[[\É4ÓÒM\’ãʇ·³¥¯’U®¯ÉëîkÈáÜûãõØÕ`0>Ð{/µKymW„ëKsý‹vMW `]
+¼IøWµ¥ûÿ/Î×cÀñ
+ø‚â"”©µï’ íYê.©(ú•.³À£®¡gY2â¾7M È–“Èâ`–¾†|Ð=¡ì&»÷E ÐÜJЭ{«N>‘N3Z4‡³{5‚÷µYéKC‚º7O‘¢Át5Ž5Q‘Úx¼ 2{IÊ–»3>B¶{®Á…Ϭ¸Ó|î2ï’ðp-eCº¢ÑÄQ8 -]ü;é‰c¹­ÛР{JèÇÃøöÉí¹D:»p²HÄ}sÔ¦ŠBF:Ÿši…ø°Cbó0\¤_ÖØ£7þv'¹«"¿—˜j§ÏGú?ÉÝN
+öòBÏy
+¾4Àæ2$DÑÙ“6“d"‰5XMñy\ݢݺ'ìíûÞ„I§®€BúQp
+‘sLÛÏ„ «˜|¹Ç[>†/Êm*‹M©
+ÀCY2X.~<ïv"éAÑ{zÖÛÁÿ?bm6‘ Á7‡†­("8îȯl
+k5³TñÖ£TEñm:ר—[ggLÍVý·C‰98gº‚(ªP«Ôiwóñê‰ð£Ný„¸ÇU¤”¥gÉ.-U°Lº¯?9L™
+sSë^±ãÔûïêÚz[B_¿)¹²ë¸¬J§?¦·“Ñ…‘…+áÉ¡/ß]ÁÁZž{¿nœ_0•HaÔÆH)ø)¸V{lÀ/‰×Õåuß‹ÖL’×Ù—„Iíл'!V¾0wä»`EþÉ¿+´¿©)Ös0} «’8…Ÿ=Û(Ü ²“'–=ºÇOGC“*0X“%“òyRm½•g7>ÚÁU|‘AÇOqôq–½ŒC>TI×ÓIj`.Üe­Îð ®´|—f»çñ È3ë”W͵óø±ä:ICÞ¬O]¡"d@¡£t’æwÊQG³ÜRÏwÑŠ<«ô¡ûŠ”apçEm*UŠ'Î(2²4{µ`ƒÆå¡Qæ^|«(òà’íX$´Zñ¬Înßç·0›Ð¸¢cD}»ù×ëÑŒÝÖffò!Ö›„ö®D}ÐYu‰M0Ù¡þª®é´
+Âyý<!¥pRý[]ÝrI®tëêFÖ»Yx:#{‘¸?`SÿðÉ,4{ís¿RXçþ:§mÙæמ ,Îþ&·¶g Ê9$‰Ö†V¦Ê‡*—‹3K1j®UÐ{ †êå5~içC‰yGÆðžÿO9²c°Tê÷fÀ×asÖT{›,xÁ3Ú¦J%‡9äÅEÅߢ¦áš’ ÒÔ.K Ú„ºœ×0è£éÞñZ̸֔[‘°U© Ýc]PÊbŒÅÝÜHz®[Œvè_›É„ð}¤˜XZmU©òô“z€ÜÓΕWÑU‘öÏZ¤’/«U££º#‹W¿æF†C3-K¸‰`Á˜~‰ëft:ëÜk
+h"aÄŠI=ò¥@«.!÷£¡`-ó8þ9@ÈI0šÄÇÂHJ£+ÞÛº\Æ$ÓŒ7ÞMºY[yÚ¢5ŽdëTÈÜ2oóPxžaŸ¤&O8Þ¸È9&.ÉNÕ)‘ìfœf\¼
+eSš„f[C¢q«°
++_ȈÐð;çÏOŽ7WVÛÅBô9û0ïîôzˆ5ºáPPŸ¶¹x8TÐ%mØ;¬,&?¯PF*QQ¦çþ?i¦ð¥õ[u)ý@ü—nõË&´fn•“9…`é¯a-Ì"º^VçôC‚éy¢.Üõs6ݽ?Cõ#a Ñ¨·×QÆýÈPêNˆÃêþf8oue’â§6Qp€Å+Kä‹(ÊŠnÆ€kKXd„ÿðÔQìvE(ú·\LiH­ÿÚøÐöƒñ* üÌC¶`AP "÷Ýü£_ÓÎ|SÁÇ6jðP¿†ÕÎ7”vA/Ž¼ÐÖ¾ÏRÞ1+ÆÌ£ ×ÖO„…½)Aæ”ÿÄŸ¤Tóí—Liq
+åš4f0HÝp¯vosöÖoiP­Gà†$Î Ñ=b©É8íg>Üí× ]åÿSuñHÍ«Öü°üV)C›[_œb¢íp(“l]‚˜yæ1›Å‹ªüŽ2“U¼
+÷S.o'yê-öø“âcÁ×l;…(DÿL‰²T<
+EÀ
+Ȧ»%ŽíðWÌNMã(ùÂä¡éJ7)aPøÎÜã2¢´ݤM½¾Œ«‰iÜH‰ù>ö¥à(¬ &.V6(TûWëNàÆC Ëcïþžäï=QÎÎäðø£
+ägEïÙžÒ
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2067 0 obj
+12906
+endobj
+2068 0 obj
+1442
+endobj
+2069 0 obj
+10932
+endobj
+2070 0 obj
+532
+endobj
+2071 0 obj
+/SLLRHK+CMTI10
+endobj
+2072 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2071 0 R
+/ItalicAngle -14
+/StemV 68
+/XHeight 431
+/FontBBox [ -163 -250 1146 969 ]
+/Flags 4
+/CharSet (/fi/quoteright/hyphen/colon/A/B/C/D/E/F/G/H/I/K/L/N/P/R/S/T/W/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y)
+/FontFile 2066 0 R
+>> endobj
+495 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2073 0 R
+/BaseFont 2079 0 R
+/FontDescriptor 2080 0 R
+>> endobj
+2073 0 obj
+[ 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 ]
+endobj
+2074 0 obj <<
+/Length 2075 0 R
+/Length1 2076 0 R
+/Length2 2077 0 R
+/Length3 2078 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /QXQEGA+CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 49 /one put
+dup 97 /a put
+dup 98 /b put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 112 /p put
+dup 116 /t put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueID 5000833 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+±?S±ºyþ_aŠOg+Àkã%;ËY›ú`AûÕXGSpÖ“©Y%š&™ºn—Ï@C[ŽŠKBcCáEßå(Ôà”µ7ã@$æÍàêšøŠ2` 5Õ±ÛSX/ «zÞ)Ϻ ’Õ©Frßùsó›ýWáaå-¡´3È"aäy™}ö“]*z•÷¢]³Â¶ª2k˜,2ƲXg‡׳Ž
+¬4F¥òÈßÚ5ÙrÎ Z
+ã{1x_‹'ÆK_±Ý?É]=Ôw÷>.zù†Aä¿I¦¹—{à )dŒ§ w„i˜ÎMñG¶µ™´yH‰°i­0Kÿõ^þ¨c¢GŽûÁ¢g¥DkÕm”¼é‡¿à´2oè-±Ç㵯ª@Õ(­ç³P±1æá@Gç8ï8¾hVdž¬Á{Ê“•ý<+ÔÇ‹%‡µVù '£÷]{’¹7C¢õ`64–¹8J&‘Â(‡˜„æHQÁ‘¹idÐýZO{vuQ‰/ 5•ßê»ʫ)jûì£ÄÚü Üf/—>Ë·ÓÅK¥¦
+ γ•-CæÐÔ¿«‹r°]Ï‹ÞÜÂ6˜p–µï¶/?WÞ°qÁýÑÞzo>ÄöڥȲ6F¨Ê¤™ëÛÇJ« #a†zjFuY{ɤïåã-Ù“°i #6•ð½müœ°)½qšoƒT¡ÉŠ9Ï+ó=„ßò Äò­hûì
+7w7ø<OE«&[Ôjž€0S¬#Üø5®oj;~•® j³@vPµ&â.˜¿âTUMu‰oq#nHéÐz„âSé]}ÂÆî~Ï3Þ&3µÐÑEbèþÈý©
+Ä9`lŸÌ…Ùß… ŠŒø•CÌ
+ù;ÚB™ÐgLCïòŸŸS/ñ¨Ôg÷·èxÐU¼^Ðm†–µ–¾†ò¬{ÝÕïÆS]8)¼˜,“¼F摶Ìjïo¯ñZÊÏRöOøY úi¯! $Ü[b(¹g²Šåè+ün}¡nÉÂ’äàÜS³¹wËDgÂn
+SúÐO#±Ô­wçõ·À¡<ÝÇ…õ\ŠI’þ€G7ꑽäÿ¬'0…ÚN—÷qœ³"Fî¨`ˆ%ýH%R”Ú¡Ò&eøà¢6kZÀÔÂñg)ùÉßÒh4kY˜ÚPB‘"UQfœbýþøî«•ÊݘñԆȹ:þZ×¡í“ Ö¾{oØÙT­EHX5&Ó¡_ªƒtºr[°Hâ]VgÚÚ¶LÅ„yË(û„Ž‹Æ+8\7-7otÑ ²uÞcj¸å¤¿Š´GùŒµ°¡¸ä œ ]”uöw5bÊÝ`„0Ó^ì_CëîßI,mœ(îjê~xˆQõíw (°ÁØ=ËwR”Ièwì"°Áäÿ
+0¸%-È%ë“JÏ(ŸãÂO± (Ø©5qôvœ,-V>Æiˆcw‡Så9ç–Cg§7úЙ‚ •¡ š[Ô©GðA
+%ßô6ÐR
+¿x ä®ç¹Æ+)Ð"aQ$ô”ôöÌÌìl´¾ä9qeÚ”åAän«‹ç• KÍ|Y4öQûzŠœÆQcÛƒ^k(…ßûÊ£á³HF¨¹`$TÿìNuxÞ£>ÜùßÖæøJFEº$˜ÂÖ1Â¥ð3z%;‰áß2§µ"&Òo –‰kR¤ïáäÒA_ig‹L®l̨ CQ–‡½ª×0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2075 0 obj
+4782
+endobj
+2076 0 obj
+968
+endobj
+2077 0 obj
+3282
+endobj
+2078 0 obj
+532
+endobj
+2079 0 obj
+/QXQEGA+CMTT12
+endobj
+2080 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName 2079 0 R
+/ItalicAngle 0
+/StemV 65
+/XHeight 431
+/FontBBox [ -1 -234 524 695 ]
+/Flags 4
+/CharSet (/one/a/b/e/f/g/h/i/l/m/o/p/t/x/y)
+/FontFile 2074 0 R
+>> endobj
+394 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2081 0 R
+/BaseFont 2087 0 R
+/FontDescriptor 2088 0 R
+>> endobj
+2081 0 obj
+[ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
+endobj
+2082 0 obj <<
+/Length 2083 0 R
+/Length1 2084 0 R
+/Length2 2085 0 R
+/Length3 2086 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /JWHVAP+CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueID 5000832 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+û;Òà¬Á¡ Kèr^
+ãí…´ŠË""žb3™É=çÙ5sJÚÚzbÁÔJÕ>£[Wåеü H ä2"ÛŽüÕÓùº0O¨y9.à¼Àá¦t³¡ü:=×$E€Çª Æ]t¥þoŒ¿`%
+Ì'EK¿—ÊKœƒ¥fr•‡RíK^yá†`vO^†ðžúŸv…òõ~ÈZwR‡³ iÞNMWçÐ3HS¢p+§T,q!s0Ï(عÆ;U–©´+3çÙ"”J8q3ƒÓdŠJñ`£°Èó7›¤7+åkX©Ö»øvšuGga懨ÀOü|?Ja \´âL‚p¢©|–äj¸ ž5ú Õ¬õÎÐò–hE·…ÎRý5’ÙÊ} Ëd˜߀˜Ø?eu6°¾æ¬sÔjDh*ï/Ó"„qJêrƨý«Wxíë #‹˜1™]¾Õ.²kKy;‰¥ö"%oÚ×ÓÜó(UÛY’Oâý![xµÔéíá;å–oÜÿ_*íAˆ*O˵c¬¨TtEîQ ã®&…Ä+KÔŒ PJ>è–»—¦CÔç¬êy–_Ùò–¥¿5žÔXKåÓà" ÉðÛÙè¨0¾Šá,pö–r0Æáý ÇBZo•¼3ë ¿ijŽ>žrÌ:ÅÔ«vÃÔÊö0…ùð¨ÓààIÄ7vç qŸtÀ@©'*ST‡g¶‚“8Eô.ÞZÚQpì׊Pæ%²äxž^òaé&(-X–%¯O¨ÀfµCmT¹sŸCJzª´Zøפ…4¥k^H… J=o¸áì9vM¹ÓLg'ªÏ!ï¬Txå}á’¥©ô–M ì©F Ä{è'óãçtV ¾2‰A´NX
+¿]>—g?Ò&¥)” ¸RÖ¿¿L#<;ž ‡,Þm‚bÁ6ÀÒ °9Âo¤Q²}|Œ±±&s%,E·< úOä½H 9¶À‡^>\sðgÍÄîÜì=YA¶®‹«Ëp-q–ÎÅ–yÕAÖ¿†F<hT“wõ5µ– «ð¤WG'Yóžì|@~dšõgO\©®ßÞõ™‰‘Ûñ ÔÈXøA¯%_ZG“ÛžÙn|Ÿ$ãë<ü$<èTïÒçÎ#¡:aaàsÕžþ ™ãÓ2:å ($`²*¦ŠŸ
+LÄố€gýfFõÊ·q•éÝg¨qøAX®­ùù‡òåF%О×ö;×Öˆdf½d;nF³ ÐRU«
+)„¦!y予ÛÕ,ÿ¬Ó7=õ†~.Çjdrj•î¢«¾§†SFŒ&{ûæäm›æZ÷öŸ©ïv·Û
+ËùYqó#n9’Ñ>ÑÇ!Üw«èaµÌy´Fã(md-^u_Ò®/Å_!ÖàÐ"¥*ëÅÚþÑz×çä†}]x³ªÇ¸ì‰ç#¹d>mnzA^³ HŠÝJÊøþxGÕ¨ÝZ’O4Èì–~øûçwŒ³ƒÂû#Ê!ë4ufÇСŠüéçÁxӒλì×ÖÅ™`™I6­ú×ÍË¢¢Pµ XÿñÝ¿b³ÙjzQ S P ©Râ"[b@2¥ rgÝžð™þ¼§Ø¾¨Ë ôƒky,ŸW/,ëè
+¼¾Ú÷|ÁÑ;öFaÿUšå#õó4Dµx£à¨eî>%CCÉÙBUG´Hiª P×¢vuðÔƒ+€\êciÉPô-}pË4øû6à°º
+xìp\¼'²ÈpÜ„­%Çÿé<RºrVB=¾LÉ&‡iávÝ2
+ùœ(Þ‹t©ˆ±C(W9²¨Ý4`Lã YôôÍÔÂc"D5uå>ü2lûxSůì‘CÎL6—;âƒc8ìÝê•%a4\ax\BÒç)Ÿ¨>£ ¯Q‡ ?׿‰qŠ<4å×Nó
+pœSZQnëM
+“ŠóZ’w²X¼<Çð6¯b:¥Œ@ðe*ZUzí½Pµ>WÊï™qLu=‚ï êŸÏ-ûÌÐñÏtëxUÜB|ã'Åã1k¯¼6áØÒŸÆ&eø{ÿ?4é ®$R±Øf«òÉ~[G|ŸÌÈ@Qy†Çöpv‹÷¹~P«‹d¸
+6ŒžPpŒL A3nrqþ°×rwy7øim¡DZå–NÚÙ¢
+¶E}ÍäÕ°:›â×WnÄóÃõ§ºk/TT»Q®É$˜Xׯq‚Ô9é€` Þu5oÉ}l!;ëÙv¡Ô=&ûà>$îŽs¹et¹ÃþHqúãª[5A°Ë툖øuŽŽñÀKš¬1]¾Ò½ ñS~~”1wÕ1Q1†ê^0ÅV]YÿþºcŒÓs?ÉÛ2oÁÿ “q£&ˆ µe5l+yxÛY­Èá(•ÉÑÔ;Wý…t#^ˆ­_•vG£1Ð9¸Ìøy±2Né%p­ÛÉ” 'Š3™íUW-Ì–²Ñ³ôò;øÕ°Ñ­:W½LŒý@ÊžìÞçE.ìнÕ狯½éQ¼áhí(¥hëðEÀŠ’“'Þ{±°'oi‰Î¡hƒÿUTÂŽEç
+
+눋H>ØÓciôP¦ mð£ŠãþµYãq=B Yã;{ÐMÚI¾28eà°,±.’:K
+¾ìï'Mhq\w‰1Ä'S¬tk,Oì{Œw†6¶Á&¸= 0ð{lG}SØÿJÖfÝt~4«Ü‚´B¾@¾»Æ;³—‚X¤
+ë6vËn9Àêu¿ÀY”á×ãïDCLTÂùöHæ8T ª”Åa»‰ücG^&nÄZ4M‹[P‰Ð±T¦7L,rEÇ(ËcàÊ“fÂCü&û
+ÁâX?ÇEHÊ”gïC2=øBûL{Ÿíš“×xCw^‘@4m$ yÂ-Ÿƒß*æAÞ3½—³bJígn1²)ÒÛ9t?!جðÀÎ kýW7—€lëŽ;aoÈ´!pYW& …Ø ‰ˆrI:[Ÿ~”pêâß j/³›7ZònÔOP»†…7p/òBµ­^äuñöDz>wÓRK=§,ù9¸J—d^éÈ
+M[½ñåfÖ!J •JÀÖ²ˆégŠö#‚Þu‹ìVí·‘€‚}«\€žF|;È­]ˆM]ñ¬Ž±üuº(•GáQY¥X#K—w4³µ —ðç1(xÞëD­Ñ¸ßx¨ä0¤å!u4¥•sPBÇŽbŸÌŽ.Õ$Q£³´ ÁoŽ\¨6ÝN:‘Ö˜5„-Œ!\z‰9°~kîÈytc|J@­ï¾âÖ“÷Ž‘á>¨Á#‰ sJ/H+fz>uü0¢±¯_mVNÿÔÀ†Q÷í ;Ì9£¿ ý »í4ÇíTv’B<¥ÒZ®×üb Z{"Ñe=˜ 85ûÜ_LÞ5j0¹
+²/»-âË o?˜`c¨QLúÛ¥â®t¬–µöÅP<¾ÈN‹¾§à[*@=pû´ÙÌ; 0;¤W‘Ž™À‹È7\tVÌ!´GÌš6Àh-+íËiÈž;D%œÎKO¶§1xðÓ‡1ïg²#`wé­¾°(|¥e£íãã.ÌHB%yèÖ8bgÉû¾A©%t7¤ã,lqÆY ²z®ÁŸbÌ Ðná°³°ë÷ ø-ű3ÐðÕdÒù÷¾Ä~­v/«j„ù
+úÆ<ûq㥟ŸôøkÛJŒ‘Ã2Ô€gOûEZØb¨ ~­å…>ý‘´|1c,ÜÇ"ƒ´–– ¨¢\ä'¨1[Ë7Œ•Õ¦›3Š#Ée/ÖƒãbcÚñOîóЬñ¿!Ò»Âʨô|5ÅF!žŸiùt]«îZ^”"t@dÈY'_ sÒî¾½^a·g ×7››dúC îÑ<úaU­0K Ê¯_)Óžþä)ý ;÷iÎû¶)5±O,
+ÝÈýjØ=û£¿»&`/²ý`àí—x[Éflb׿i‹OÁÓPü3°¡e¸an,tØ íqqT]¯ ;=QÚæÉú¢~FD¶ör!þ0“wW:­Sd̆ŠÞW˜·¶?ùýæW¬à°Ð…Êø&æ‘çCZJ flˆ¼±nOø©ļD^PDw¼ðà9†â¡yåÛ´"!h”œ¼"ï-iÝà\VÛÉ ìÉ(â8ÃQ¢ÎYüÒ}µŪæ|ò¢Û‹K‹ÂʦûÈ~.|˜E%PÒäË…˜ ïçŠÁ¾#M/e㘀]G›G‘N&‡”[Y^ŒQg öKbÉ»Yºm0ŽŠwtXN«ú°ŠA£]føXü–©8ÞB÷)·‡<ÂM•ŽîY?«Õß £ÿ]vcuÚh=øÊßV'µ}ò‡
+ç’ÒþvÛf”TEÀ2Ê ÝØ{™WÄôÃ2–ýDm0Eû®Bo@?‘d•{ò(Û¿J™ªAšéˆÊÙµ„R³½–ƒÄoLÉ“”Æ$lØ|Úî6¼;²ôJÓÞÌr"ç¼Uš­w½Ò:y—HŸÁÛúýÄÐ2Ýó÷­LäÞòÖ-åÈ‘Ž:éK^ 4þJTúÑ7æc‡›É3ÖªyÐýà†Z%ü€a©üôkñA[°6r¨…2üißÊo“\Q lQ-ê¹>ÛŸ]í-ðÛ£1‰”ݳ
+äuc¥Ùcø0­'Ê]¿ªà°B° ÙÌÈþÓ Š
+Jýÿ¸#-. þõaÉÖ!i“
+÷rØÄÙ .¯&+2×E›³þrŸCÍëeâE3Ùà*ãiÍ$#î›ØêkÐçü)·/6€š ¿Ät1Åûðî^ô5kA!ô€}I…¬´l»7F¹Ê=jõÕl­?ÿæ“lã¦D7CJ“ê IöŒ,‚ƒ†˜ØÍAÑ J,çºÖjJBÔC¬l6Ô¾£TÝ:Oˆ ²$ÉÐu14`|qå\þ§XÑ.ëK¿­iØf
+}¤ü£u{y•a”J¶Ë/§n¶‚³¿ÜIëƤRI1}k>UZB4ØI!ç-¶†àÉq÷š»¤·ŸOše¿üNdæ,Kì–À®Æâï2)«~â
+ ²ÿè ’þR‹˜y{Æ–›g}OëxMÈMJTSÃÄ}Ÿh* ¾.bÛ9 ÿZ¤5B©¨4™ž´ÿ\£…ÔŸ0ü|{¦08¬
+ÏodB­";Ññ~ ULj[뤇4µr—TÏOøQtN:ÕXoX¼ÓÙ¨4#±<Ç ÍÀ^!#òß$ƒgèö«¹‹º <}ªì
+i´7C£¥_Nˆ&©tÎ
+üX”JôuûA0†’ ‡—(WB/ ×Fñ Ì¯%Í`ä*qð)ç®K¦y™5
+'¾ÛÉXÎS
+¿«-Rlv¤ËǸ۶Y1è'6×+ZÆí>î¬er ¸Æ©“ãWþµ¶‘&¢äd—6KíüÎÕ÷o$ËP`æB™n°F¸‹^ØxdGU¬¾fTa¸d É&²½í̱ éHí…þXÝ™bŽµˆ`±fmÕ·«Êlæ1ìP¶6XÒµ5î=&—%`^¾Ã`¢_+“Wí@ªfF6ñD$bf"PîŠjîr”æW6#µßõG¬€ÈÕœÞɸöð½ž?KË4´øP0;I]•×Ú¼žØJ;H¤6 ž?§+¿Ý5{òÌ,8v¶^\ìG&ÎœZ[ååm *Íހؓ
+•Vü[÷
+ÄÐœ¿WÑ$Ù&$’ºäÙË“ÇÌ'vÉ
+‚ míT?}±^È[ø>hîÒ9ÀòõëžÆ”t<¦Î·a#L)é¨8Gƒ±–3V¨™
+U!-õnäÀOBk|É¢Œ…PjÓÏ6¶´Tv^wS‘¡ªÐ=˜òÙ OK:P³éËÙãÀÛÛÖŽ|a‚Ó=Ð'õ›ÕDM/Ç«¤ßQ¿?‡ZpYGžjïW½*DQÿ¦J—å£q <ìAôM`;Îl5Û¸WÎÆ zõç\rkÄ1­µùP²ŠInêÌð$ÏÊXf€‹ ¹`|>±Àå1TçA“Ÿq8øæ¿îtk0=.ˆ]©Ý“-É¿õ¯•Ê÷ªÁ­­5l:²Ê3°°,‰©Ç°®LëFÜt佞×A]hÔ´¢Ÿ”gvv8±nÕ‘µ€>zÒ®É&™5]Ë°iÃúöã  =¹ÎN[%¦Vh¯ïé&ÔÝ/
+
+`©¾ÐÞÓÍ™…5å^¾AÙjW]Ý/©ä%ÿؤ»ç¢
+„Káæ?H¿Ù¥Ç)<—ª”r^Zö̺ûù®ÖùÏÔ”ˆ_ÓÛ1u?iKº0U³†Pö.g‹CàzÌYaIÐPDílR÷àË5ñááH"„ ím9Ï äºPGV ùÎ’ç$0·¦Ø‚©ƒƒß¨¼>‰ ÒRa•XÎÁ°à‘Û|øų®>i›Q нI)hº\)áIž rÄÁñ’—-[Ñ°ñvrlŒ­Ð5T3P~Tƒ0üñ ,r6;$×Òlpç´åFZÂh3ÈÔ{G:_ãS’güGš³ùªÇRS-,j-Nôá\õe‹áò«Ia eÕʦÊ
+0 ‚Ö7'€¿Ó÷’… Ò—áXËÊMMÖÿøà„¿Äí–ZÐâ_•\s6cg¢—çT\wÔXÿæKìÀ§}«X‘”Öò¹ÒNü_Ë\xª•sç¯Ì!P
+Í/ &öI‚d%P’D|uNµº@ê²µîd—„áz¼ ,ѯ
+|¬ûß}mÍì
+³»¹!`.Vžì1Þ/SÉ ÏKzeý¼íX˜¤£<ÌõÞÀßÀ.{•BïdeÁòxAÐûnæ/D6|Ü^fCHÊï»-nÔ®ƒØ§ìPþ—3ü d[£Ò›v8!ie<dÈ+ƒ —§·0®'½êÊ®çüÐÖâF•ãm¯lí†`Lô.Û¬Sã}—µ°9q]xѬó³0¨™ÎHÉ,Ó{!$(uXáVb%ÜzFZ)Y¬ÕõICPIaAèÛ‚UYýdvÛ$ªi¦¿©ü&DÀÐæ‰ôe[ØO…'ÇH¸ŸgîCt6ÎïÀº©åµ
+¡=§zwæØ„§³)ï/ò—•^4ÚÕÆØe@Üä\¶5±tsvº
+ŠêÒˆÄÏ»ÕÃË°eHžŽû;H@<œèa=¾R$̶ LÄ‚½ìÄššÌ">ÓÖ=ÂÎ(nG#B…¨˜í8qóV-Ü ®ûZr#¾²Ë“iÊ&9À
+ü¡u¬Ö•RÏ3ñ"ú¦×+½|ˆïí€Ý
+Ê¡‹„B%üiåBP‚;©Rûڴᮢå8òG,‡·éžÅ9:ˆçj–ÈÊa`Rë
+{%€ùgôÛB–Já»ÈÁt=…Êf[ý|_O¸M«,hµ¾•šÎ#}–ÂOï6P ËÊO–xö'u— gmø{0ñ”hNÏÙÆõµRÂ7c'ÈÄuõ—sÑ«ùI D¼/¶‚>Ò.\gþÞõæˆ`Æ~§zcû¾IŠž^£ünÔÝøt™Ëq1òsQ³–²`……™u¥BЗnZ‚šþñ>R Ú55Kfœnæ·¦b¢oˆËv×Äb™aóê®
+kñgÆ¢¾ñ7'H"Jš°ŒVÑa9MØM§Ç¹ÓN7ßâêà1 tõòžM|}Ž?°äÝWuˆˆ³Æ˵:Í’ƒÎÙ¨Û]%55ìC÷ì÷wy9c÷EÚ5»|ÌϦ&ZvAžÏ¤
+Áóö04u)¿FHm±°W"”×·˜Þáõ¢MêÞµêÕc7ÉL¥(ç¾'v;}(¦âB _ÍÛ(ÒRLÎÉ¿8Õ]NYò'©à\Ó´ŠË ‘ìyûVl*a`Hâu2×LgáþÂÔ_»unhöVóçvDfLÒéå CJ·{÷ªîOõ½Ç±`7¶ây÷ŽJ¶e龎h§yH@·ÂSso?&œm
+EƒBzòÅ$<÷{q®¾–!ÙG©%>üeX&âvŒ”4Ù¬ü;'­Ãíw×dV`HX¾‰8h(¨Ã¯c©é†¿VR.ñ/힎HÈЬ-<3À¤ :ëJy  ®Ï•hV”&Ç+O®¬Æåq«\hžpüš×ëõãFu²×¡ø¢•‘,]Š–÷5êv3à9&
+yÆДR%2õ*Óú•´Æ„²ûtpÑA \jþ’´±4Ÿ*кbë=¸ýÇzÉs!ÝŠj<—tH·Ñ§·î"Å!'í
+õ†ÍW¤,Þƒž$û“k†3ŒJ²eÏ5í
+ÉZƒ_ç£S‹Ëi/"x<,«v¥ÏÐ}Q›W‡¾Îž%3æYøP8Äñœr†ð­Þ¼Ê×B¿×U?lYQ%”‚…‰n—‡Yí@m8b1°†?°ßg
+®o@Õ-C±8¤3)M>Kn›¶™)“¸j['Ù<‚´3{»M\ÈÎìIaÆÉPÚ«n yY>µúû™–îöí ýS¿YwítZ [B\Ê6ÂMÊ~ª–u©ÇŠ)Âéq:\R-;RÍBïlm¿Ùçu&¯ùðÏUsä mk’: ƒõX]u&òh§'·ÍÕ4høøâÈI
+ðÅnõ<T
+?K¬ûïįèYõ¥oß ^-Ö¢5ÐØkåÒÓfÚä\Þ
+™ B³(³Ft÷K›p°ÕŒYÃ_÷ãvŸ¤†a)‚#ÌQÖ3§
+Ÿp&,Q›Ç3jPFÁ…hyÜYð#¼ËüªÏ—on‹kGmíã«lÁ¿7¡q‘ÞŒîKž*Bî”G'nVS>Ž'Q­”lWs 5¸Ùj;}“<Ì‚•Â©û²JÎýZ Çß*òðQ¡±C`´«e«ŒŒ=ç2ó¤ë "&æLôõˆ0ºZJÀëB‘™…)"H!x¦8v‚•PÚáÃ跙ԭ9úñ¥R&Æíw%0qµæE¡WS¸kRXo Âv!ÒŒžðTß:¬ÇNÀdkô­N‘ŠIxé¿…:ÑøôZm½ùgâ®vÍÏ_Ð~f£Oo$ñ©0&}¶>[ñúéAë“7=ëøëáÓ £~Æ—
+¤˜+CN¢ÛЧŠ#/TönچDŽª¥{Æ°¯c;•1ÚKÓù¦ÓnÜ÷àÆwFm`ðedr9˜(ùj}jýQ!r(Ì/)!Ï•C>ÃD_ ï
+¯¡g?^(©wØn£¡H¹ÊGs:$BÀ´KèK¨hÖ h¯E~< ÁˆŸùãò€–èõ»Ê•sÖê “aŸŒi|‡ÞßÎwrAl^[G H”;r8+üQ˦Iž­û~ücRƒö¿`”Å} ö½·5«»G:ÉB×
+]V³åÈåÈÚ‹Rñh w/ÔÛ!¦I2ñ¬lQcxæ\•
+‰% "GŒ¥s†‹We.ðZΓÑs]‹æ˜,­tîUí¡©ÛÑ˗ijGÒË´?cÝgZ2(½¸ŽÁ+CítFÔf•€×²‰jŒ¿ð%­ø†F­}‘ªMà0„]Oô1„‡•Ü\Aõ#÷­«W%îap
+¦Âü´™,DÅúóJ1UÔ1!ºä Ù7ý!¶«£š>©sšª¼r¸ÈÆ®$ ø¡ë… QØ ‚E#ô"gaZ2âs÷Å"d=?¬£¨»—¸í¿_Í6Ëa³;ÕJÍðz1»î›»¦xRSÞ‹MæDÌŒþ"çF»evèÜ3-zRÙ•˜õu®—]ò¬¥™]š2Ê›¨TǃÃä&Ô08N«rucIž¥œ±žT¬©êB…µŒ !a§’¬Hco³áe«¾úŠ XÕKb>µa“/Ú)@"ßË82 . ó‰l¿ï¼ÄgÆ,ö@8:’†tfNÕ¤£ŠçõŽHÑD žŽ %‡qå&P^ƒ¬ë|—¾iÆÀðóƒÒª }Kl3%n;Î.ŒûÓz=Õ(£Î‚vGtvqÓ±Ågó°{ ½L´è®Ïâø‡þ›—%cùÐ!¹Ýa ¦˜=¤AÙœ§,Þn,
+}è:ˆ`L/ªÈ‹9Oò%¿Ðò$&È'RqñQ„vñwÑÅ Àv¤»\::ò¬@#iøHË
+/ø¥¹Ü˜
+è»HB“*×q±«h.$Ï]#ù’$½Á¶)Îæ1Ém @›ÁÏô?VùjëÏÊx»µ£¤¶4ó‰…)î7Û·ú­
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2083 0 obj
+17294
+endobj
+2084 0 obj
+2231
+endobj
+2085 0 obj
+14531
+endobj
+2086 0 obj
+532
+endobj
+2087 0 obj
+/JWHVAP+CMTT10
+endobj
+2088 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName 2087 0 R
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [ -4 -235 731 800 ]
+/Flags 4
+/CharSet (/exclam/quotedbl/numbersign/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde)
+/FontFile 2082 0 R
+>> endobj
+393 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2089 0 R
+/BaseFont 2095 0 R
+/FontDescriptor 2096 0 R
+>> endobj
+2089 0 obj
+[ 625 833 778 694 667 750 722 778 722 778 722 583 556 556 833 833 278 306 500 500 500 500 500 750 444 500 722 778 500 903 1014 778 278 278 500 833 500 833 778 278 389 389 500 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 278 778 472 472 778 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 778 736 556 722 750 750 1028 750 750 611 278 500 278 500 278 278 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 500 1000 500 500 500 ]
+endobj
+2090 0 obj <<
+/Length 2091 0 R
+/Length1 2092 0 R
+/Length2 2093 0 R
+/Length3 2094 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /YRLTXJ+CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /Gamma put
+dup 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 18 /grave put
+dup 25 /germandbls put
+dup 26 /ae put
+dup 33 /exclam put
+dup 34 /quotedblright put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 94 /circumflex put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+dup 127 /dieresis put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueID 5000793 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+"p?”ÿ{u@š]A}¦s
+iãújB)ü~Ob ÄÆ<PéžžµLKÄRr/Ž@ñáBŽy.¯à\ZPÓŒRMüÒMT|¿%ÝocÞ@R§­S¶A¢~ä”x„Î5fI?¡ž
+*† {aU†q0=殨NEvvæ»´*š$¬¼>°Ê{z;þ¨Oí9ÌûmT[²¼Äž^—d«”UlÔð$ïW›h
+Hs(çãùÃ}ˆ²„CE à¼îê
+i×2Ç¡ƒmc\0ÀkíC'sp)åºX0¹èŠ@$Ã2jÒóOGµG9´ˆ%­f™÷ÑêLJìD@¿mª
+vî¬Ë|Î
+7
+L‰³ÒUí/ÇGGS©ƒL@PŸÌEdáõ·Ô‘ÏŸ5ß: :""lØ5ùȸéM-‹á/Êê5p¼ªÿ
+€EÐ>Äc‹ÃfÕèŸV=Íÿ[miGU>L’áfqcÏD t—˜.¯2'§-ì;p[ÌMŸôRÓÓ+¹êS"Ñ÷#bpôøë¯`1Ôi0ò³…ÕzàžéÀ‚C€±D] ~+KX>`·Ÿ¼ìÆoþÝì÷™ø9ûN(V%úåU™¿Ø0H¼?ìÓª~¾'XèPŠl¡ þ+MŽkг‚p(ã¹éIŠ-«Žþhqœ®—.í¹=fKr涄.¯¸¬y<,=l2ž“Ï0êùÃÀ‰¼F¼nd°¶¯ì¿ÛQ6£_ª@ësPNœÑ†¨&Ðÿù- ±ß&D¤r!Û€ÌOp]ìñŠÜ!&|šÊhŽî]–×ëÍDD•_GJÒ
+X¾‘i]AÈZT+Jd ‡€o˜v;ýEKÅÌu¾õ&Àg•Mñ`i˜p»jÂܳ¤Vfʳác[·Ò r{Ó¾—mIc¼„ MOQûÕÍçþoÂTAV»±Œ.­fMË®—2ÕØM(ŠÑ£Ç#ÚÇ{d¤„»ù›² }Hû¯.©þæ„ÃãËÖzóðƒM‡ _ÊQ`ë
+½ÊÇ
+ŠúšçzÚ¯»$Er=Xí*;ëÍl­O²2çۀś%.Ð#÷<¡Kr±9<<<€ÄgGX–s:y1óÂQÍl(öó}GŠ,ŨÉÒâáëìcäÝ×¹^L‹tœ±ÐAeMInó;q¢y#&á×g›ÞÆ;v ö=½gŽr±Ç7åîlŧíJ• ïZNyÕK)ŠB*#<SuÓ?ÇQò
+îë®·ù¬&y¿»†û®Îúê’W·Ûi*)qÓçé8-—ÂEé‚Ò‰‰ˤl¾y±vóx§¨„'#VÛýj~νqh üïgB36(*ð‰Ô­É
+“nü/x„sW¯3øà6W¼¸G‹3•è»-+ća
+ J«NÕÙò9¨ØŸµ6‡Ý$±úÕ=ê—K¥.%€¼$[€oÚ©¨ð]â ñ! ¿™‡cip»d
+¹*ÚqD¯Ò¹®ÂS¤5š I¨má7g5uí¼ªë›"L@pÕ
+ ÎøßÇöŒwˆ¶…ñÅy.l”¾Î©úì‡UP¥žØù(³ò-c˜Ã7Íí.Ž+>%Ôß/ÛŸ›¦Ë?Œ£Tî׉¤˜GÁðKQïó„,]Æ~o;õú¡GM!ŸØM†jŽçG`žiÿ
+Bî ;ÙÔv£ A^¬:õLÈ
+ká6ërÄ@¢‰¦xÕ‚~³LõC!B‘Èru¢Ù}ÒŸ5cK°ŠWJ0äT€ôÌ’ÅË€àEÓ¼²£“ªð8¾i’®;Ÿ}q÷[vr’‹Wˆ4˜!kç6 ¦owc–:Ÿ§²ÙbQ$¥*„ˆ“<·Œ!¨Ðû¡N†’FXÓ‘‹éAß9êxï^-¢ôÒß  ¼»/€J¸DLÿ¾ˆ;ÒR°éexô’Ûy~A·¿‰¡AKŒçÆÜëšò`zJGH×Ò—<©:À¯ðÎŽ4IPMÿ
+ÐùÓ@qÍdÊB‹é
+ò,äÔâüsõíú„š*‰àÒYô/o%ÌKg^¦6\{~›FßrŸU‹2÷Š8 úŸÜ˜˜ÑRûK¢¾©Ð ÑÑkëÆ-~ÿ7äPr®›`ÉÿãË—Öù´–%&5Â>YÀ¥Ÿàk©jý
+}ü|plƒVë6Öç³"TñÎÄê­)é¸kF¡LrÀh˜’°v¥è[÷£üIÖù|ˆ˜6
+P¹è¥»×)Ÿg'ó“wXÑ,†6¯Û†šH£»Jÿ×õ#ñÅW‰R.B¸;ÅÛUf%áÚóÍõH?¯#!ræ­:´y5X÷ýÄ
+åü%³åYÁ •¦>zâ˜n ¨•_ s±†KªÀLÇÈþ³}ž• 9­j¾ncWR·“ŽÎý€íæâ÷?Ã-Y"`Œ%W`nLý†þ¢±¬eÂùü…:ξ±ÓŠ®ˆ/Xô{VÇ“€î;»Ü;TjQТ˜yËm©èÄÔ -hW—д- U¯Åu÷®§÷" 6ÌÞ:Ec¡øïæ²:×Q§›NC¢ Ö< ~
+XP]`ô€Ç÷ç¡M{žóŽÉ͇Õ ­‡Õ^`®Ft’QÂòÙaôŠå ,»j$jrÎAéF=;¿'â†oœšW¦¹Md×J(1÷á&FlÔ¿è‡ÊNå3Þ¾d]–íõ¬NÑ ³·¿L%N/p×´8ÓÑvjòèp8…3šfòQqY5%[Þ£Jâmtø[›å&WC¦y:ÙsËÓÍî”67{Aq§Ç4š!«¼aD!89ã2°ÕÌ?6/•áä©ìBÖ¯’myºÆ°À䯀2pž‹BxrO–»º!þÃKãÍ'£¤wãvByö—š%¶nNœ²ßQ²·æ‡ài3¢·›óBM‹áoIwС.g\üFH¯é’Yªmxž¢ú©vv Îäd,êÀ;
+1nvð»dœ+½¸Ú黫ǖÄöm
+µnkçY&Ý_ 6ªt˜ƒšaD®³fá!s±>›xZ˜?æTØê¿{‚€ÌÚ{6bæùœQê§ê¦ù [0ƒfÚ3—aRb²ò«H²UC`²w¤5LEœ,«å–vdxåãª}ün[êï¯-<!‘û먱lôx>uƒÃ}Ö^ß:(Ï'˜f­Í»¿QžÁH]ƒîw'4Ú`W>ÃâAQ°¬
+ÈL 'sbNÔÈ­ûëXvB@þõš´q¶ÏJÉÞ{+¯è>óV~$
+EοÀ„À†~ç„ï)¡¼X`8\à óÌpó\¹Ã ´nZ5~ ÞŒ1 ì¿Ü\¬¹§ó5G*@„iÖ²+1}V”´¥DcÈÓÌç‘U#Ç9ºf.Û ïÎAjD3LC
+È׊Oi·[½%hR™ÿç¢=¦ƒ+EðYØLCÕû.“˜‰×@—jøÆ%h s&beÞ…$^b”¯¼„ÚEõh¸ Xü ¤Æ7byݬÆ^P±Ÿzã¸åPë]߉¦÷íÁ2|¾7h__ë,Ðõa\ƒ**©­ÎRuâ$ú‡/ ´";ÞƒÎ$Uá…ÈBÝZ/Px繟&ßGG¯]+רØ÷T51ÏðO–âüÄÖs=”0eÀ3ç¯(ýh1 `Ŧ ï´FÎù4ßÔiXƒO?«PQ éÐå´VßÄž8KønNBÚŒ`~:Ì:Ä(—‚YY0‘#U™’¦;Ø«&çÓNÙÿ -¾é©?6P‚šUƒ¼ôeYFúÔgDîj;r-%Þ‘b´ ÔÞ÷Ð+ò£¼Üƒy4Î1>×ð mÙ`6/Ô2D¨ä«b$˜<G1– ýz1ÚÖ¤Ñ} UKõQÐÂp×”{xq§"O)ÇUÊ‹·¯ ÐWδ
+‰
+éFñÀëÔ*·î†¡›_©
+LjNÊíÍæª,«”R0¢.ÆŒ%tíG
+›µø54=½ËyšÁÛ7k’ MôÕMç’P3J·VØ›EÛõˆ"Q¥³l˜gZøÕV®}q&Fg9°|gî;gø9€:ˆ^šï¨e”ø‘–Vù»ó¯—/î¡çN…Úþšý­ •Ê×y*jbÑî.`4+[©AJ2~ºO„¾”ü»5N?O¡Ò~a÷þ{‹¼•.æÒÜn²^Æ;Éœ¬4ÅsŒÅ+|XýÄ’wSÝ@Äß­*ãtw L­á—,ýp#>Z¯)£Žl>Ç´Ë<ñ¼`Y*ãWÎgUš‘·(¡ë¥ ò£-ÀŒÕ‰»od>ŽÌZß i˜ ¯,:Ýõò9ÕÚ€é{û]bÔð:‚Ù3ÅÙD],TN<ˆW_?; $˜û©~*)ñSË‚)›»éçëTgxõ\MM”þfÿN÷·H!§4R'…\³T‘JÎwë@|PpïTج‰Ra¸]™~ËáÌoHœ çòSæ/,·¨BQ]3 ò£I•€àú:ä¼¥««CØminÀ®¹h‚--­·²¯pú!_ú·’nùT0‘ïÀÒz–¿‚Cª‰†gÊSc›-¯­å×¼k¨(Ø[bc$2Àn¤Q¿Øâ^{]v<ÙªM #:ÕdRŽXn'"hÁþ¹6(
+Ü™¨Jà•qÞx¾Ê‰k‡M`RfÙIÐGN“¯]œ¢ì”Rt3yõÊS
+e|`”.A|)h"QŸè>˜¬ëyôz>ü­{É.Àïš ÚÆò’Þ. ÄC„þ¬º~“Âj•)€…¼½™]oFø\lÈœ{’yt¥Žï1¾µ5º¼½¸¶D˸S‹0KÇ‹æQÖF˜;ðç´…oŽA«:9N#5à–Æ™¨¸×YSòªý. ÄûÔ8 JÓðB+²‘ÄÅûÍÆ~Qì87ªö—‰ÄÌâGº¦ð«FªÇ±5‰öS!L\…nOz¦ý±žzto"0ó½ŸjÍÓÓ2e<bòQXÕšSY°‰úYó4ñ]Î $ÉIÃd,)bÇÝ[çÙ Pxõ¸>Ó¾¡•þÒUÎÖmíljI2›zI>YƒÞÁ|ȉ–­=¹FÒÊ')Æõ¥Ås—zF·SZ²¶",ºŠô¢¤„X»µ£<hþ•¦)^k«:\§bFâ©Lh$—·ŠLçõ sÖË´Þ‚œÃ]œCm>êìÌÁÃzÊòá$;šRÕŸÆ>î`¢ž¡Q½<‚rs´´…òSXc,‚Ø”Ós=?a¨üúL?ÿ¡ìrÕc[,'ª;Û¾ØeCÒzŒuV%skxrXÊ”¿µRðIwr¤EßD…È?1£Ä¯K ÎH“½Ì\Êy1Å(ù`?¾ ˜A¸ìL—ŽÈ|;Ã|ë¶ÖÙ&SPs]A—ÑøsçÌJõ:«Ä¹gêt ’i¸Ÿ{53}c:;¸ACe‘“ÝŠ†‘—SVYˆp"!‡ÇÊ€i›®ìLmm_uûDk|¿`m-à0´Gdò5»×J9MÆäoŽ±Î pŽ·«àókw:<î·˜YþÊ2”<Êô_d¤°,SIL0~\rñ^®Ó${kSMy1¼%>O0¯<ñÚ(|«Ô— )êI=ÎJ¾m³¯¡Ú©PW„µvàðô)³«(4ƒ02¿iÍpŽ@×´Q–KhnÌ«®¸ê¿†ä._g
+ÕY0ªÔ'†?©ï†Õz±/ó¾0ž#Ž^žÖü‚ÜÕ}ŽõTãd‘åKªxÞ2‰n6y- KæWÜêR B}3ü<ºÞººã*ïù’È<Hÿý8JÝIðíÝÄnR ¨£3Õ¹5¯ñ\;Pfµ.ä-y˜¤3lº­R¹òh­ 1¤þÛ¯ŒÉ¨9#2/å\±‡-žÁk†0·Ò
+~†ÕÏ»#µÈ0CaãÉŒ=Þ?˜…ú‰ã­c÷å”äf¥j'ËL7%FãVrÝ[D²™êHdû?b.Ô»A­ÁJ!Wƒ‡¥|wO&q³CÆòÍ^La¹À½ª VœšxÇ-vÑ´Ó»»—ÂÛTgŽúîEUŸËðÎQ8¤ù•= Ýr†XcÀˆÓ¤)•ö²)uL¶ëÚEtÊ…P  n«±öß‘hAo|ßç@%5£½N©€Üþ„÷ª–|ÍÉð8„òÍÔõê€4åa3v|D¡Ç"{¯è÷ìøäF‹y ±v@A—–nç¡’‘$Ö9…P£‡ˆJom÷²–T‡°£¼(/1±’h9»±ÙµßŠõ×çæƒäÌB£ÝóùÞˆQ#M(8ÕXH3ž!1ºôØïg6 OÇÞM;"Í»áEð4Û.NŠ¸È‰Ùj'L¿-TÁþ$btÉ`Yj ÊnæÑãÝœdn¶âaÝ£Û
+sê¹Â3ÌòùÖ³SR€qý!
+Æf ã^H•’û}ª6Xß<)îW.k|ÈÃoÊ•U=êÞ4˜E§½ëô…R l]êSøV®ê@¨ƒë%¦U
+sTŠtÚ>Õ ýåRY`¦¤îkF‡…éÃÓ+Š[ÐËÝ^ÅCB‚¾ƒŒqéù4Ÿ[þô¤–%t$©'6oŒSF„Ì3·'òó»•ÍÌ·`^‚ø²Cß`ï§rMˆÛÌ*rP±eo΃é kŒK$µ¡RÁ^ÂÂ<€ÉŸJX£
+ZœˆüÕËó:Û\Ë!üÌïØVÏðˆá Ÿ‚YâDñ4j¢YÐÍú©SM"BzK=.6Óƒ
+Ë"’Ìà­óxÏb´âK8}ÝPtlq —ãÙÁÿCÂW–|ì¨E½î’ DÎÞsò„"–žüIÂòßhÒಓ“¬óI&&5°¬'ä´vò€“¶übKЇ†áÑE™-jÙœ “ò™cÓ5׸š+,1)°Ó<’'_¢C„EðR?>ô×CIJÌm‰'µÙ9º7ÌÏš‰ÙÛ$R5œQuû™q—ìžœhËxáxõTÝèŸ(V¥G·âúªÚþíö˜r‡Ø»Á±Øõ·T‡œÎ‰ø1ÿÞ}–[5ZR9×ùAÕœ±‡ÿÀðÃeX)ŸÉ/+÷9Ûa«.º9-ÕWµ¸v¨êñ« *iƒ›zbÈ _
+ ÕÀÖ| h©“Ágb|@íU°Êbb^ø˜*€’ÿâá±;´qlj›ûŸzÌíë(oG©-*ü85O³
+QþSuÍ=Ë•(v×’5ió™×ùl˜ÿÜÇ ›˜´'´*ƒÉRÚQl˜\þ3QBIÚkèñî
+ ô–¡ô`[tLdÏx겯¥ö9øEn\¾}—4UÎâ¾ÓOOäÅàbG³0r]ïÙÅHEvYw9C
+à×ÇÌ P¸
+9 È#Âf]› ¾ ®0âäÜŒ<pÆžÕõêKmsD¿hFeéÚ£{Yõ\çpêoÞO/?ÕÑB öD5Üv«‰éû4 ¥Jã|ùtu8påDÏ-i•Ô›fŽÊåKKÖ¤ÕÝ÷4 KÛ];ßÄFëá$ Óºt맨À¦O¼WÄ6Wï:Ê;+›´`G}¡Œ[4;ß ^nñskyÍù»$«&ÇÇOáïÐwýÝ
+M·<ö$¡‰\!?ÙL-ÉÆe Fùp?| Æ´qع£gxFàQž‚$ñ÷70Õ)ÛZöš)sƒ1ŒîÉ8l”QÍ>Ý:Ò
+]¡ÖÆNUþÌÕ4ö÷³$ •JŠÖ—÷cð‹¨}
+=<ÒÊРÆœÝ~žHcÙ™Z41´ °H%¢®‰þ?# Ûˆâ@™îîIþ&¸ŽÐ€ó*‰jd¸KIF{Õë÷ÿä›t:S ‹»¾Ô¤n‰ôU÷×ÙgÒ*[´pìs[`¿:,ä5çü
+Äå ®Äè»X=La>0¤?'0šÚƒ•÷iÓí¾NíÀ­6n•Ôbëz¶Çª’$iˆéžÝú×ÄUH€"–ÝÄ8„r@•²®°ˆœÉKÈ£Âb ”#ôrL—f‡õ§2Íã³Éc§Sž A7ëvŸ¤Á؈Î,Ÿ'BWå>]ÍöŽ;|LßMyÔ
+~šv_:‰H1À(k&Äxç¹ö"±Ów³¦·úê,šp[ÑÞƒÝ"Óé2©Ï†à¿úÃlªŸÙ05]-˜…GIÃ)hŒÁÿ╦úÉ×öÛ¡>|H»^ÆvVŽOƒîzU`KíÊ"`ô¡Í›ÞCtÎZ Húç-0·œ€‹¯ Æž#;j×ë¤B9–\ðB N~Àv™:'FÂêÓ{‡cÍn…K `x\™ŸÖ¨ËÍÏÉoÄBÑ]ÐKSh±hƒ‹Âf„Êß=ñåðŽ1WǬ­U6Z›„4è+fâÅïã#RUóÐ]Û§çBhnj ~¦‡vÚv¢Mý¦ìsÕ Íƒ®;Æk^†àyÖRO©ëð
+ZTót„UCÔ†/¨†O‘Ç®
+Þ6[º c”“¤;õÂܧ#\© ¢PÆÕ¨ º‹ø`çÂäjf|ÞoéHT/›k~GâÇoØËÌV/ÛÒrðNhZ|2à`U™3¶¨ä{Ù3ôG>ëÈ]˜ˆtcy+@ªŒïÑf)°ÃYì[!¼ÅÒ ßN4öÀŒëéÙ&m$ &fÃŒEA¶ü•à»Í¢¨¾Ù†Ó°"§Lž,éŘt8‹Ã¥ùÊuÐG²eŽ%ïb©úà 4Žßµ•jÂ'5VíHéSÒÚKLóÇVŠYwp.?éHŠ ”DiFÝ‚Ÿ¼ìhë"dâþZ綤Ž¾¦ Aq°«…@‰âÀÊÄP¬(WYÚÎHãCwÌo›NÓ·
+C5­âb
+uÞOôŸÇ,ÙmæšØ_>BîXãÁáyR}d¿1ŽwJŽ^áÚïöì£Ùš¬ìJæS03 Ud8rï—ÔÀصâ¨êr•* öèûÏù+<_Eå
+Ö6Cê´6B¶Ëi»ÀÊÐÕ"{¿|lêü¿²'O¯" ø¡x‡¾œ†€VÖÔ…v½¢&rßž¬Â'…ÔAÌLIìËötËÿ€ÛìÁùgW“9Çw‘Ÿçš‚óÄOÇ
+-¤‡p~¤`ýÿÚ®õ¬/[Ó^Už—óá§ìŠg›ôÅP+Ò4zKá„cº2]•ÓŒ¿tôÿŽåïËi¾Ž/¬7ëE—˜ùçGÉ–á¾qË\D*²4Ú/@D—›Ì—ëúÌw!">™¥é”z @oåÖVO¿P{`P=Û›þ~žëç¨CèJ ívF³2`Ò#ª1’Ø= º¨k*ÿË]Ü • ‚?GÙ3™®ŠrG«Ú†1æñ¥3ÃPy+EoIÐ-ü¡ ¨K`´mQU ­õƒ'ƒQª¥qáB¬’µ Ý7r¶Šá6mñ%×=ÝÛ±;ìë§Áz=ÒÎèb;¡Ð[+¬¶ÈÇÑ)¬8õrŠ˜
+î.±ËǹêD"TC&.c!&(Ò–ÓÿNÝë“Ë*œ”À­Ò_Ña#oÿÇ^8õïù1 ¦š)‘7p´bNqGü‘ɺ¨×É_Qû ô„Ñ:¤1ˆóU£š¿#…‡ÏŽ qÂJtKZ™D×SÀìï\–[ÎoeP ™Ç &~õKo¶šæÍ–ÒýÉ
+íuGbâ8½#ä q½Å¡NMþESK½£(øÿÕz‡¹ð`ô©vÞ›ø\ðwÄWBøhhp0Í*[ë
+=øËH.ÛÙ˃¾Ê\ y·dè<»Vc¼ãîDu€T‹¿`žd̓,¡DÎMð8:fhRü“æ†3 ä"6IU"^˜ tawvB"xÚµú3ŠÏïIÜEêäEb3vOÊHïk{"bH¾¬V´U§{éJsÓrE ïU_îÊÓœùï ]c= _*^úˆAø¯¥:9ÂyMË
+Øù¸‹?DíÌÊSoÈé­*ž;rMˆÒsŒ‚ w™¨í¿ÁåšLëð~ çþ›ˆ®°‚ÇŠ
+HM¥q\UVÌg}RÆö(ÕI…µØȆ¼¢¶XÂlË—->Àäܵƒ.&„=Œn Ù ö^è:M{ÔÔ:1´i‹^Ú²{  o:[Hª£âÅñÇB-)Ñš†FYAUh”¿J ?qãK3+‡÷x†Cíð]sQ]`Tâp9N` ;Ç<ëp¤¡,"|=ù5í¥EY=·çåü å.èqèÛ:ë«8T¶Î?!¢¥›"aGú\ ½ß!ó2k.®ºà[;¸µk,œ¯”‹úC\™´]h&ôòäV3¬¾#ïá÷·‹µPg(oÁ¸ì 9“j¬F™Ñ è2QìÌ&Ž€R¹e_MøÅVEhÃuu±˜ÃÒì$iïw4DP TШë;¯
+ˆSöï{‚Eؤ,I°ˆE£´(¨@µ{¨©cr9=$]ùQiÞÆ!Œáì=uA 7}q<k+ ƒvš¹Aã^­æì=Éž`ó_dßYü«žV¹å7; ëj|À:èŸ\@ ¾òSÓ‘‰ûÕ}¢óñøsV«†€S¢“ÌV!écsÖàà1@§‹FŽ]Rbmjœ¼uýÝA¼ÊË\ú;’L Lø€ª~>‚ë-G>VBGµ²|–|7¥ˆ:ÔOQfQ~âpžïšMØ0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2091 0 obj
+19646
+endobj
+2092 0 obj
+2288
+endobj
+2093 0 obj
+16826
+endobj
+2094 0 obj
+532
+endobj
+2095 0 obj
+/YRLTXJ+CMR10
+endobj
+2096 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2095 0 R
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [ -251 -250 1009 969 ]
+/Flags 4
+/CharSet (/Gamma/ff/fi/fl/ffi/grave/germandbls/ae/exclam/quotedblright/percent/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/dieresis)
+/FontFile 2090 0 R
+>> endobj
+391 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2097 0 R
+/BaseFont 2103 0 R
+/FontDescriptor 2104 0 R
+>> endobj
+2097 0 obj
+[ 692 958 894 806 767 900 831 894 831 894 831 671 639 639 958 958 319 351 575 575 575 575 575 869 511 597 831 894 575 1042 1169 894 319 350 603 958 575 958 894 319 447 447 575 894 319 383 319 575 575 575 575 575 575 575 575 575 575 575 319 319 350 894 543 543 894 869 818 831 882 756 724 904 900 436 594 901 692 1092 900 864 786 864 862 639 800 885 869 1189 869 869 703 319 603 319 575 319 319 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 607 607 511 575 1150 575 575 575 ]
+endobj
+2098 0 obj <<
+/Length 2099 0 R
+/Length1 2100 0 R
+/Length2 2101 0 R
+/Length3 2102 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /DUKMHY+CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 88 /X put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueID 5000768 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+ìišu¸'
+³N(ºÆè-ÛCå :Éß’w .BÀ÷½ÆÙ béw0$[ŽŽ‰¹"P˜œU£~NY®*ž6¶4Ÿ¢À›±õôC>NïÇ^?˜0ë^~o¾&f¬Z9Œ-ò(*ÏŸÊVV9
+ƒ|J™ì7@ØsÏï.$‹DÊF“§‚YMÐi+M¿ÄÍ즒ÄDý¾÷¼SW[ò'1ç÷qy4­qZÃ;]6y·„É@FæÍ<
+ØÑöV&±N3ÏÚn²‚]ÄDúb a[Àsÿ½üÊKõ kÔƒý†9ùèÐ$[F=e ñ,&Ȩî)uv–Ãñ1DØêVIj­a©Iç#«µ…™“ò
+5Ík~ ­…QÎäa’MÃjFJ¡±L3úû†.0ÆlÅVemÙ;Œ Ynžâ±ª´y÷ú£Ry­´h¦$¾&Õ'¿õíàgYŽ‹x¤¼û Qi-°¾»“ o —´7âŇka¥c¢g92ÂX3ú£]²*Þ#5ÓkîÉÕ°àÌQa?a°¸»éYÇtVSQj)ng„Èùàk‰(Fº3㊮FÕÝH~Q¸G Zxš8=÷9IB“rü•Ó{
+±µëÊ”°†Ÿ´”
+Ž"L#ý¨á$²æ‹ôÓÿWbÒá8¶´y¦$; 7í*XÊL,q¦—è±]8
+"Q¸SIJö†œb •û“yþÔ¶Åÿ!Õ k8 PÔáD—Œ³Ýµ%ÕC¢
+×Csãùíç§÷@ÀÂJ;¬s„.m¨PñüQDbÃ-6x~[`VãV`*Ú*²¯–¬ âõJ’ýI¤®¦ÝS"ïŸ%Ê<ùu
+ùKGQlÓ‹w±ÑÓ
+&Š[Äœ‹$•kçwjÜÖßÍðÝ‹TÊXT1’½¿1¿€(ŒuÜ¡uõ\yøöþ¨“å¿áÚ[¹^_Š#W•€ ¨ïô–HûuÍðrF(÷!p%Þ³‹9%{ þus©†
+<ŠD Ÿ¿Uràp¹ÇÜ”LÐHùÐd}¡²÷Òò¿{¿®{g¡mÀëö‹fbYâ˜NjÁG9ÖÜê¹²€„Cñ šÍ±rÞnî¿v¥=Ônÿ¾@ç>8A=9VqË«[™Kå.Ò
+·ØÇꓘŸu„õgÁJï÷ÿv ßåjW}NÅØZ
+Ã.! ì…1~àNå*Ô?’漎K‡1ºw‹‘
+–*À-³&Ÿ5[0<Ù.µML©Ì€ÇÿšYÝ’›D× iÕc©Á1úµÂX¸Ã;Ùl¢"ÝÇáÉ{Á®6QŽrsõwI¢·£Ïéö1™¤n›¬íp ¹´ÖvöXЋ4Ûptr©“N°0j6yA´%šÃ#b>Ù
+Ð]Íþ±®­¯ ˆ»˜<íI×…\©í6óÒJVˆå+4+¢›UØ© >Ò¦
+z? íÜOp¬ÚP‡;fŒœšˆHJSwè~LÉsòÏ2x^ŽJÙ«Òñ1X;yŠêZi¸#ôÖÌ)æÕ<Ö³Ä
+-,ꋲÛ‚ñä)æsŸë—Ÿ7¥}QØïftþ²>Š¥-N
+n–$Úæê (’óÐ%W-ú1=6_¸Ë©pŽáûz© SÌpÁ¯ÏNœE|$"
+Æ å”GÿLÝŸ®X VÿèÈ¡o©”þsCOó©—®Øbí¨ã¿p¿JÊ:{¡ÔáÃ|)#Ó…g>5¬xeã‰ÏzJËfŸælèUfÛy{N¡ˆà1x{<C0PÖþÐÑÔq&Ç"GA¥Þ—ÎÞ}ö°v/bL¨¤d/̯Ϛ xA“Zòïýâ-»KÄ@Ô÷›—lð„€ˆfd“!·œ{‚3cÀM™óÞñNîd¼4(V¹%w˜Cò©âT¸X|¾Mž·ç¯Õ«$/Ú}“$÷.ƒ7òÝ}„ŒQÓ7€W­Ûç€Ð@+ V
+øÂòÂK+z®¨ŸÑwsÙÎòV‹M¶ywS¢Uæ ZtãKb0µzZ7•™ºUŽŒÇtrÐGwáîA´ç$"Hr`”Lso T§Â[§™p«Ô²@²†Ë¿Í. À-ö´ ~$ô>²»‡Ä~Šø+ââdÆ>z]{²{¤@-R@JÖv])õ„)³x?ÊCDJ79—0Û9},Oð¿ýê·(ãe@¥xYã£ÅMkíwøñiµová;2ôã5‡;Ý7%HÅÎí­BîïLø´Zí&æ$ŒZM´‡âùðüÕ,!€oTÑ^4í¢v¦ä×%çqÅ\¤ÄfD×æn¶tîésÒü.}èû®Þz¡Ý­¼µRgÙLºá[2>>‘í©ú;½Ñ LèiÄaÌäm%£ÿ#  t1½keÖð™ ¾5‘ ¹­ðÊb3¦Vo‡ºÙŒZ0‹¸&¦hçº5ÒQå7mU¢|zG5QëÖv†Y#K£U14;!Á¸¾…l‹~FYd‰<tj¨àÏÆsZÞðþ­(ó¦µÔ%”†>)'}j¿õM©¢ )¨]tËŶW¬à·Ãh^žk)üä¸,Ýf"cମ&ˆÍ,$9ƒVñ:N¤ßBá`yÑæºsçúS}}=ðŽ?PÒÃéÛ‹Ÿ†ãøÁ¤ü«Uw
+ñT©Y4Bw_gé”
+(‡7vŒ‡I¯þ SçÞÁµ`¯Ï*¹ƽ½3G•]@!g_H¾Úæ)f‘¦{<\¤û¡¹+Un¨D÷yñFH¡gd
+zíªËUÝoLæM7Núñ¨bs md«“L‚D(  ® ÄqʾG¡v–vâ{yÌsKÙS6gë‚äiµì“þ
+ðJ§'Î »äAh
+<CO7¥_͉Ø CY…'|òd³L Rªƒ:a
+6æŽ
+y¤¹XK¾‰±mɬ7.¦cuÕ¾öŠ*7IPu•½i`Í7Ï<^8Anx èáôÏË_Ƀd{¾¾‹‘Á¥Íé[ªr ÈàZ4ÒbWÑÕŽ’ÎiA‘ÙÁÓôÃãø:ú=¦lŠ†ÓL†³ý’Ž‚ß;—ݼÿØ9!Ù‡ì€ÙF¦ÁBg:ðëÇPc„sÌ5ÍÀt‰DÙ^ëÝ¥ˆ¢à,g>„®'˜ü†>ú•’½ˆ>Hbº™éhÇl<Š,õ±Ý¤Ù ä%á(>DYužÆº=„ÿ­³wa}’Õ2Ú|]·§ÎÓ/£öÐ00ˆ¸<2åx:ƒ×.½*\w²„«=6M ¥›PVhT‡vjcÛ’nþ~°¯Î&ŒÁÑ%†Ž“BUo@wÆC‰by*t Ê5¬öÚ»Wá¾Y¡:z»¾¨ˆÃòWË Õô<Ô(ÐëFö°ÀÆYv¯ 8ð¾ÙUôvüg4_Ê­ xþŽì°pX)²tÕrè:zw—SÏ^.r9úH
+ⳟfOJÐÑvìÍö’)ê{;¤ŽÃ{ö6|ÃÄG';I¦4!›eȯ‚–"ܘlÁ1Vâ{R™¦05@Öÿ§èÒ!?ÆY‚~c–|èq 7²[³IsEáä<=äþå>Ø–'¡ª‹2‘ÝÔÇ}ª´šM›ˆê‹GÿºS@'Ÿ[¼Û$/Ì2Pá-œÏªtë`kÌès7`j W…KÃ
+aúøl æ/q,nÍb$Pøl!™Ë²ÞhŠõíWdâR/yzÝv•Ã>³o·egQBýæÆÂùsÜ+Fφg)Bxžßy>ž6× à×Øžsp|
+‰‘ºÕÁNÏ3ZCÓVy'm$bl/–;ì!ÈfATº)í&üà‰…JhÚ+ú.á}J}ðÝ÷§û­‚w­îu´Îe–r¯Ž_ bdW¶?„hŠÚãˆÿdQü“Ë|¯¢Oׄmb¾o²ušÄÍØŒ“ù(o˜ó˜Í
+6ðœ3¨zÍ^°nÄÞ…ÍÚ³Õî(‡c¨@¨¿öÀ¥—ëî ²ýÎþÁ8Ò—CJï–‘)_¿¡@‘‡È(Ø ¨žðVê`cÀjØ©8‰TœÿMÝ÷Å/93†šÜäÆ}<°²ýÇ›Â
+æ5¯Bäë
+ËX÷8ÎüHTzï%ÞWÊ .»}oãÇD–ÿª
+å(eñ»­"ô£8Š¨ð,\©è‡ëàÍÂûZy[Aj“6ØŒåÏ…fDoç¹æˆyË’É7i†ÑpmàEØZA®JŠ½&ÓiòϪe€_1¢3‰ç3!(ë7§­Â±_S)î­ÚëKâ`5n4ŒŽ^g¡JqÊ´§šg™ãœ×¨,';.%§E}E»dS/hy&sÌBˆ8È¢A즖žNÌ“e71ò;Ó°&héë¸ÒPw^Íf³.ªæ‡÷Ï
+ú¾ƒ9¡:¡t€IsÌ¡Ö¯¨³,rÝ\>àzÇŽ·œ.@‚² íé|¶:H±ñì+Puo?öÄ#²`¯÷S21Š…QŸ€OVÕ¬U=ëýÞ*6ŽÀ‚ךָ;Qjè®I’¸Oü“ÍÌœŸy!Œ§æŸb91aéúåÊ,3ÛmÉ žûË}Õü(Ù.4™ÔÕmaF¡\¨E TkÞHß³IžÆ|•/—’«-;Âi)WÆ#|¢ uˆÃœw¡Ü¿¿ Ì´P¯³$Ù]ŽÉ4ƒ ­gN‡ý«]Uò¿$‰¡b6õ¥Ì˜4ŸL\|°±,*×íÊ8j7+ 4eນº`÷ßë¥[‘I—Þ*]G™ £PWIAEŒ ©qsþ$8tÍÒ²@›ÝZpl@§‘àKcÞ’Èì3MÏé|Ý‹t1þžûwáä ºÞ»’Ñ£°Ú¬r©³US#â” ;ígàú¾\.ŒdϦ‰Qu°a×o/ý–0BsS_=¨­ñ„G—¥~Áž´O
+ú©<UòÖ•¤5<‰i½ì÷‚i’º³M+Ú¯ì~ŸÞ)-=•š=¶-õ¥%ëÙyŒ=“>ϼ ÙT{ê^û
+ËÄ250MbA”G“§à“ à~a]˜à&°9?CEŠìB†+" Z’ÌÛ'Xsº×6ñu¤ªbæ÷(ä ~­—7ù®¹LCÿ‰LÍyÎ=då (FñZÞaSžw\u&}£ÁOÒ¸ö1òóïöVÄ
+Žë|¶iIØmà®™SÜŒålm
+'­
+³r~y¦ýkŽn{s™³¿ÆŒF97|’’ä¯ÙÍòŒ¶m\Á¦8^ˆ÷]¯æy0uªG<â ÙBºhÝBQ½z>ÿÚ¤Ÿ~`S‹ˆžm¬4Az2¦Žžµì µŽl÷µ_Dw?m‰ìç;jA4¼ãÉ l ÁΤÇ|,_
+eÉBm~&y&x솗›?þ(kšs¯p»?_IÕézhJïe™Ñ ¦Îg–· ¶¡Ü ¤ª'Ëe
+²‰KòÖLã†~Ÿ¸Ñ»lxŽÊ󽶶àå›HLn
+.¼r7šÆA"xÊ·¯“Ý׊CÄüXúPIÀ:²l>Ѩü#^ `aÿ=v^$Ÿð1çrK¸pìàu‰ÑO‘|Ãï[+z÷ÅN±i"w³l}“ߨ#i„—Á2¶´Á´H a}¿ä{}2"£
+ø È (~Ë‘ö•RR¢AÝ`›` ïž;‹ ^2’”™¡§Î‰ØØÑfÀ0î’dO@.ªË&0ÖÊ‚ùý¾°S¸ªñ™ƒÿšôO!$éTQCªÖ*¹~ˆ´ÆÃä?Snµºr<ü‘!UÉIQ·€¸ ¢©_VžšoY>ÊÛÖ¾çG®ð¢ž>µå­¸š¾ä²½xÀ”®Ô¢>´wrí^«N·ZìF݉kªxzº`ÿ˯mÊMxs5Êd “¿
+O•)KøÔ­!¬ŒkÏ1‚r4V¤Ý)PÄòÂ00E\ˬƽß°>’ÔÎÉýVÿ…Y
+Žþ„ðh»"'C@Ðç«Âc5¡çñùqi
+iþº6ˆvX\:„›†C»êRÿµÊ¨ãŠ‰MÜ™$ÕW©¤Ùs3,kô…°ËGòRaÓe?à&’Cbî´¡›ð¡„üJ²:êFB%Ñ觵¿oËé Ð&†VL±”8Šµc˜¢ÐTïíD.â fì‹Ù¬H¶7€PÔ¤¢_ º{ ãïY+,1taMèñF™“^Aø‘ó?…`<SxEÛMl§Þ=‘.¤UQé(£P§­êõÔR ˆnVþý‚æaáÝ Õç¢Ëªû 'p*¯_A
+´k:F§ÃÔ B—Ü÷±Ó>«÷Јݼ^ÑlP<µÿa ²9Kš›’C᎔ïûÔ4Õa†IðÇÍ¡¬ò×!÷ðcyRc®0(Ômv èf‰”I¶Þ¼•ÄE;‰L;%->î¼´!—X¦Eä;D`»¦Ÿ;Zá›Ù±—úN! Öc$™7:¡±Åÿ°úÁÌ÷_i‰wÛú¹Î0‘S†g¬‹8Ø0™Ê<í¹gåu£Át‚a92üQÈY•T‹I”
+@íúÅd1 ñÍ!x<fÛ¶¬öÙ»FP ;YãhÏ3=ÍÜáëµK:¤UàGÇæþ"KžûÜÎRh¾Þ/*©#{ú…ü%/õÁK¼¦ä–)‘ì¬M×Ô‰. M8Úe>óÏhÙy±Å }‘ÙP¬XJèIø>ðžìÒp%~² “d4V¡ç–§<!£ß"qÝÈéÈå*NÓëxrŸæ›&ÂLÁ>N/\µÿÝZñxLIjŽtŠÌÍÈdâ‚R>MpÖeÖ›k¢;H›úÍš–`Uú Ì|ö·ë=‡sį u1ûsb…Aä8t’Ç@-š¸À‚î‡õ¸wwB‹U…³- ËyqNЬï£è¶?ÕÄcƒ«†4äÿÍS¬ëzˆ~smd
+fvRiÔ(m÷ÆÖÁôBžÍSç°ÑSÇê­R{›Á†¡N]1€³Â…wÃr5¿ûa¸~B‰R&cž'$y§q¬36E–tïk­ÙD ŽònëDGªâýÅè¡\Aµâ‚Iâ;ÄŸF$¢,¨
+Dí¢ÒG"±…ŽÛû •'ë„Hë û¨Øù0ç‹CîKQŒOÞ ¸1Š™5 ý[›ŸýéìÄZ:ÏéRóÐ#êŒWÁÃüó¯¢ü\zþùÁxp”ô}_‡@êgŸxœ‹N
+ê–g¡‰ŠÍ‘™^´P¼ h¬¥QÌÙèˆE2Ö†Âe%K/@’NGl·´%k¦Þä_P i1[9.v9€¾æ’d{=ÇV'³µn¬£a¯Ãüôà¼ØŠc£`ùXÇð 0oç?–œÜYØó_.6·8º‰õLB›ÑQ$ó&r<ü¦._Yµ!7™ŽõÞ¢ILp€äÇ<lžP"»”g“ù9`ªÖÃûPp_¢ G?ºyÔñök["«uwÃ!Ù Xz=ÎP’¹ñŽ
+#ü,Ãÿ“¢°Àv­¶@äÅzõ¯ÞYÓÊkúsn‹“SÅ ¢K&Ïféˆ$‰ï{6Hgd
+å7#•:ij‰H`80 }²UÛqI,¼Œ.õŸÂÔˆå8i±}6Ä7üU/¤cqŒVƒ½Ø€ùA;2±dÑZã¢r¬pú?÷Ú“ñM´ÄÁ)ûˆØ«k~?Ž—y¯²¶Ñߘ•Ò`õ!žÕq›”WòUú.Ìx¤jp$•TÏϨ>ŸŸìxúêí¾[á».ŒAÑêQüm̘JWêeÊh@±*å–Lä[…/1óÙFüªí{¥à©Þ"ÍÕhQ«ñRÏvÝ=÷™÷§ Îbœœ@ŽÆ]‚^ ÁóÎÝÄèsêäEŽJW‹¶äÞYÈ[“Ó>Â>máÅÛêýXþ.É«ã ·¹@Òf' òÀI»èl$
+¿ ëÌÌÝ_ ^Â~umqîP´»+ŽçAr0BíÒ`¹6Ω|·×]Å°ûÎ)³%ÿãb@pâÊœ*üöfƒ1“ÁTh­”N 9'ɈÑ…/b¸×(UÈÊ®Çá'nïw¹ßUÀ™$Ç}NÕUºAÝŽ"Xâ 'ÔC¾ˆhûrŒlñé=ÝGµÛvbÉ;¶4¯ç;aÞ˜i£Ÿ^¬c â£]2Ú'›úD’àÑÄÉ]nŽ^$}÷’Øv¢,¬tŒEî ž¤¿R¢DFwÏò×h€þhúV‚¿¢ë5ºðcE²o²xGœ‹_Új¸žAjÖz ¼ºV›FÙ
+è t¬ï<ÄðäÎ
+B|Ľ*8×m¯ô¦ð…²)öÞÞe/ÞD±p§=GŽh¾´ Úeù¬Èµ°Ø¿L+—JtâÓ}ÈžèÒtPmA2Õ“¾
+8–ˆL‘‰ŽáÓ”¾Þü@
+´ÁĉóÇçìl ,1ët+ÏøÕjwŽz#él ~Ä PS©ËNØÐaìiææà¿qïÖ
+àÿ ÌÁ˜8x]0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2099 0 obj
+14775
+endobj
+2100 0 obj
+1786
+endobj
+2101 0 obj
+12457
+endobj
+2102 0 obj
+532
+endobj
+2103 0 obj
+/DUKMHY+CMBX10
+endobj
+2104 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName 2103 0 R
+/ItalicAngle 0
+/StemV 114
+/XHeight 444
+/FontBBox [ -301 -250 1164 946 ]
+/Flags 4
+/CharSet (/ff/fi/parenleft/parenright/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/W/X/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash)
+/FontFile 2098 0 R
+>> endobj
+382 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2105 0 R
+/BaseFont 2111 0 R
+/FontDescriptor 2112 0 R
+>> endobj
+2105 0 obj
+[ 683 903 844 756 728 814 786 844 786 844 786 553 553 319 319 524 302 424 553 553 553 553 553 814 494 916 736 824 636 975 1092 844 319 319 553 903 553 903 844 319 436 436 553 844 319 378 319 553 553 553 553 553 553 553 553 553 553 553 319 319 844 844 844 524 844 814 771 786 829 742 713 851 814 406 567 843 683 989 814 844 742 844 800 611 786 814 814 1106 814 814 669 319 553 319 553 319 319 613 580 591 624 558 536 641 613 302 424 636 513 747 613 636 558 636 602 458 591 613 613 836 613 613 502 553 1106 553 553 553 ]
+endobj
+2106 0 obj <<
+/Length 2107 0 R
+/Length1 2108 0 R
+/Length2 2109 0 R
+/Length3 2110 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /AJLCAA+CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 77 /M put
+dup 82 /R put
+dup 97 /a put
+dup 101 /e put
+dup 105 /i put
+dup 110 /n put
+dup 114 /r put
+dup 122 /z put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueID 5000772 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÕ™=ü 0)xfáÍ
+0ëv“7ϱ9 ¥ÀàE(O&k¡{ä‡Ç›”úÆÖHF„ſꇼÌwÔ
+ÑR^•ã
+ߌ
+Â}s$)žé€èPòͶ'–/CÕ¦xÄBCÍéxS½Æ«Eý\ ­'M¯‰’ŸX<ÉÌÂKßÆ‹’U«¥òm-Æ|poq•wÖZçF¦ 0@æË$¹Í­‡®8¢ûðä«Ò§@ñçù]ÈÊPËØp-ŽVÐÙ/vÎ R«Û‘ã$8Ò»óæ¤ {
+ˆ®«JMí²$Ï–eKAôCvÚû–MªèYw¦ßú¢„„G{I#ϤËçñBnÛ1±”I+6ô“êœe¼a·d´É¶~C>«þ]çœÚEÄš—vöT:.„hÕj»¯?l²¸ãVGºkÚRYI(‰Í˹CdZ3 Œ YºIc ×Lp ¯sýð²ÏÈå[rÃ7¸7®\ªPý÷*ÅPß® V+
+!&a¾iqVjì·x5Ùøa£~@e!Ðj÷ýá
+6delt¤{+æêz€ù¾¹Á-|ИƒX¤Wð[CÎÊF„5‰Û å `Å(Út¶Ž"Ì•P´wq,¨Ã*cþ”ÆÑ®‰!_F½¡d|ê©ìú\óC%J¢ˆpø9mÿz<’ðáÈ3õ%~aW¤}?+–Ø¡žså'†wËp*S¾ÿ04Cî´’cû¶Òn%=áuú¨d2Kú
+Øü|ú-Š¿ä#L²+V†çÉ)KC¸§¡æÀâÔÌßC9b¦,ãpdˆsýu ]yÚo[¯t”†·–÷:×ÊõT8¼d
+=ã•Í*åX£G„1Ö->þK¹ BÜ¿Úx'\6
+]G¨EKO”ÝFH¾Ôò™¸óßžu;¥)Lî'§‰…•$øõq¦yUØB“§ú%V+:úýŸiÃVº°ßÑväáØ5§ÊË‚5¬‹€hp
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2107 0 obj
+3893
+endobj
+2108 0 obj
+880
+endobj
+2109 0 obj
+2481
+endobj
+2110 0 obj
+532
+endobj
+2111 0 obj
+/AJLCAA+CMCSC10
+endobj
+2112 0 obj <<
+/Ascent 514
+/CapHeight 683
+/Descent -144
+/FontName 2111 0 R
+/ItalicAngle 0
+/StemV 72
+/XHeight 431
+/FontBBox [ 14 -250 1077 750 ]
+/Flags 4
+/CharSet (/B/M/R/a/e/i/n/r/z)
+/FontFile 2106 0 R
+>> endobj
+381 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2113 0 R
+/BaseFont 2119 0 R
+/FontDescriptor 2120 0 R
+>> endobj
+2113 0 obj
+[ 612 816 762 680 653 734 707 762 707 762 707 571 544 544 816 816 272 299 490 490 490 490 490 793 435 490 707 762 490 884 993 762 272 272 490 816 490 816 762 272 381 381 490 762 272 326 272 490 490 490 490 490 490 490 490 490 490 490 272 272 272 762 462 462 762 734 693 707 748 666 639 768 734 353 503 761 612 897 734 762 666 762 721 544 707 734 734 1006 734 734 598 272 490 272 490 272 272 490 544 435 544 435 299 490 544 272 299 517 272 816 544 490 544 517 381 386 381 544 517 707 517 517 435 490 979 490 490 490 ]
+endobj
+2114 0 obj <<
+/Length 2115 0 R
+/Length1 2116 0 R
+/Length2 2117 0 R
+/Length3 2118 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMSL12 1.0
+%%CreationDate: 1991 Aug 20 16:40:41
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CNILPA+CMSL12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 44 /comma put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 77 /M put
+dup 86 /V put
+dup 97 /a put
+dup 101 /e put
+dup 105 /i put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 123 /endash put
+readonly def
+/FontBBox{-56 -251 1102 750}readonly def
+/UniqueID 5000799 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª)s™§„̾…´™;.ëÞ;Ôr·ÏTeò…ji«–íK­/df5à¶A|Ç{S/…ØÇ )¡šSïcë\^ÈŸÆÂm‰çÙäp·+ïÚ#õßv¾¯Lé17¢íŠ©×Öýó~kÍàÙ ˜d#å–
+]Ÿ»L•eVèßËúìGo£oÙ¥È\šõþÙÂÝÒkÜ ™9‹ŸMÖ¨ð[G¯•ï(©ÅaÛܘÄ|õUûÑÎ÷8ï¸ékKaÙÁ¢O_Ⲟøž¤2 Ëã"«’nºÚ¬ýÅxG@˜*Ü–¿ß5†øÁ.onX‹D"mˇÞü3ÍÇ9ÎBóÍ9X¡Úg#£¿àüjÎ8•i`à¢ø!›Ê0µfšnôŽOÃ+¼ÃÊ|ÂÇa]¬ÇqåŸÜº0óI²¾ôìkE]#½îÆi³¿RX…{”+÷$`Œº¨7Ë’¤r¸”!ÔºbHÔô÷ªÚNî´³ÕzL/A·æiš§MŸGC¬h
+¡‹V{½Š+ÌêÁy\ËQˆÇ|['ßñXYAÍ&—1”xžÙµ'‘6¨¹ÐÙ—ž^€ùZ"8Q¼àë¹OÚèó/è‰wMrúáyõ¯98Tû©ssKÊåMÓ=ê0±¼ª’ÙkÛÆ®•ã`:Ú ²¥*Ýù5þê§YQ]ó&ˆÐé[7Î#éôZErv‹«tdØ¡¿{ïíþÄär
+Âе\ö¹{Áà]bɺy;t€œ~:ÆïåÖã^º”„v}hbÎ{¬ A/ÇÎV;¾ˆÇñ0 uèéw.^±¨ $?º/ºÊfWç HôíuLî{rÂÑÆOo%bûvƒ•wÍ
+‰ðå^dJŒiÑà†YÆ´ÉF8Þ˜gî,øIØjœKÔ/ñ2ߧ³›„ÚÝÕwšˆî81ì‡¦Þ œ¤•[ð#µh䬯/ §ersúœbj­Â°ûr…ŒÊ¨¥† òĵdú‰
+8419õ"ì¥M3(ó4¡h£ë£}Ý5žÿž(ó¢Â)ð¢C—•mb3ü L-ýË|$ªÉZÊè]fKC\$o à¡ÿ¯b?;<åþâ0ˆdei†+Ÿ*ä]îcï¨à[rú³²@ï 6}{Ù0ÀâòAèI÷Lm3AéÔ»A¤S-Ì<µ¶g$˜À{ÑÙ8î)+?Sqçb ë!l–§ià±±Îæ”5·sÏ¿+?ñ$ 'Vx_ZÖÅúSoñ³‡(µ,R&䉮H[¿etŒ¤ö²éÈ= àÐÅUgG ižc tfβy¾ÕŠ
+RÇ„ÐkéI½ÝÄxÈ üd«ö#D/4ï¹×ú9•ØÞu6”’ê+‡ß´ñÛ6CfkÚ³¸Ë•È„ž"i*dcˆ§µ[äÑûnüJÝ">I[ Y06Ý°PÑ.×.žË_ ƒŒªsp®×B òW–t@Â÷B˜þ•üJ¾™'yÑO·[ku’úó,dmÚa‚31Ñ¿îbÖ õ®X";pVb…Sy6øÓ¡Ö›:0Ge7Zsoð!E”#6}îµ< ¯¨øã ØíÒ—œ®£G”Š¼Á²ÂQ™6> œ0S%B,1Ÿ¶òåkðY<$ðÉÔÂÀA
+ËëÒ´ç±¾
+@¨,k Êþ…¨d|æ{°uúˆ04èd
+‚ö„ÚÂEü7êÔî$ÓÅ®]OD-!yPl¸ý|Øß‚:Æy=ꢑ"\z¥`ËùeD( ¹×ª=
+VSG1o_le”TEÀôJùíZ}aË5øšž´då•PÒF"˜,šù_uñd³pÑ=Å[ɖÆ\h°ûê é†9óUö$!`i|…ʤ‘Ǹ9³<F³ò5L‡êŒ Áè¹2ÙüEÌŠI}w%M+Ü5e4I{ý†”Þ 9¤Ž/üõ{.üƒOÖ­3ÏÖuÄ2¿¼D%?¨ª¯áUªÐY@üåYƒò¿ Zƒ‡F°Y3G­Ÿ£k)·ú@L§ùwKÄÄ‚&^u&§F¦z4qëߌåtšq–Éóï9F7;µ63?O…¥J½-<HÓô2XÏíø#š÷IþŠæ÷¤]Ë@Yi¤þvŽfÜ©F’²ª:ˆÔêËá_ ”gmAG”S:5ŽBÍ Á¤+PèÞ³^·HÕ@.P»É¸#2Üjâ°ž`)Tã…îciÍø6"~îØW8ÅP,j§°n­7ø–aKO‡½èhíÍQT;Êtª³íl£#©•×ìmxýV¨îµe/—û;Íd†ä=´­Û\k}aÙ9ç×
+Û=ÀC‚\K/ÔqÑË]æý¸jÊØím
+§ÃP‰à+ÔZ6tõE7 ƪQȧݟ^`%:S•~ÈfYŒrÀ!=ÚŽ€ëE^¬z#a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2115 0 obj
+5235
+endobj
+2116 0 obj
+1024
+endobj
+2117 0 obj
+3679
+endobj
+2118 0 obj
+532
+endobj
+2119 0 obj
+/CNILPA+CMSL12
+endobj
+2120 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName 2119 0 R
+/ItalicAngle -9
+/StemV 72
+/XHeight 431
+/FontBBox [ -56 -251 1102 750 ]
+/Flags 4
+/CharSet (/comma/period/zero/one/two/five/eight/M/V/a/e/i/n/o/r/s/endash)
+/FontFile 2114 0 R
+>> endobj
+380 0 obj <<
+/Type /Font
+/Subtype /Type1
+/FirstChar 0
+/LastChar 127
+/Widths 2121 0 R
+/BaseFont 2127 0 R
+/FontDescriptor 2128 0 R
+>> endobj
+2121 0 obj
+[ 676 937 875 787 750 880 812 875 812 875 812 656 625 625 937 937 312 344 562 562 562 562 562 850 500 574 812 875 562 1019 1144 875 312 343 581 937 562 937 875 312 437 437 562 875 312 375 312 562 562 562 562 562 562 562 562 562 562 562 312 312 343 875 531 531 875 850 800 812 862 738 707 884 880 419 581 881 676 1067 880 845 769 845 839 625 782 865 850 1162 850 850 687 312 581 312 562 312 312 547 625 500 625 513 344 562 625 312 344 594 312 937 625 562 625 594 459 444 437 625 594 812 594 594 500 562 1125 562 562 562 ]
+endobj
+2122 0 obj <<
+/Length 2123 0 R
+/Length1 2124 0 R
+/Length2 2125 0 R
+/Length3 2126 0 R
+>>
+stream
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /JKBRSN+CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 13 /fl put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueID 5000769 def
+currentdict end
+currentfile eexec
+ÙÖoc;„j—¶†©~E£Ðª*Bg·N³ÀÓ½ ƒØ‘l¦ÊKq*Þ²Xú«šææwüsŠ¼|QÍFïq˜Õþæv`æšz¹XòšMyåp"÷ƒë»¶Ôôì5OÒÞË©”Y¤ÅðÆë¡P(DTçÜ!
+6=h¤qDVð<ã` EŠkÀ³ªE“NrraÆŒJGø ×~Lò{6ö¶ó¬IŽE6ùà¯U'õãÌy 0„gK>&)o>2\U]$XWŠ‰ç-1f£Å×@³«±'ÏB 1mùW‡= LðÛ%§5t¤Þ.O-]NŽ CTÏ4Û>&wÁ”vN­XÅ…ôžñCþŸßÙ
+ó„¼eô_ðâð…ÔØ¡nõ`À’ÿ7CMúÌQˆÛƒZ¿k¬=ÔmïÏâÃè ‹ia%‡3ÅJ?3°^!ôuŸ§øáx;'UˆiíÓâ _2=Gùf™R¼*SyMm°)³UU²Óš¬5Œo6[
+„[Lý.L–VQ>†3H(ËïîšT(aÅç×ÿœ9RžÏ–©í…­VÙ¥”%yê’÷WrÞÓÛoc=WÀ׃šqóÄ´þž.]h.“šmùY¡É%U³Ôötî­8pH’6ú?,{ÚŠáøZ¥‘eɯ®Kù#ÏïÝnú>5`o•™Í›ÂÏØ–½cFДè¾ õ]&f$5áðrŒqæ8Ÿ”óËùª ¹\EõÖ,<ª"×± Oé¡œ믌'´ÞXp¢H'« °áA”ìWUT\æN>ˆ¼Ì¾CЊÂð퀠#†Ì5—rC¶ÁŸ
+¨W€V1{ÐÓÏóBgÚ$=œII„‚“¶:ïGlžõßÓ•gj¦Í®w¦P)@Û×æ¾ÅúíY$ˆqq½¦§´ ô_%…LÑ&Ö”B#‚rI¿—öA7äX]¯^£{ Q²SA–µ^Ì Ï4äjL†Æœ•˜Ã­‰
+Ãé 2•l%ˆ‰BÁ‡"µËôÒìŽ$Büh„”I÷ßÚ39ðHO3Bi®Üy'ºh¨èV].s6Ý&?ŽZpX4Þçì8Ä%Ü›ÍAo†¨A_FR²Q8%‚ Q}d–M#Â2-òðÍZ.ðv[É‚rN†^(ÏìhÜ¡¹!}@¡ýkéëZÓŸæ)æ²KéHï¦!ÿ–o(䪔Hßr¿«T„…ÌÒTp¼|q¦ž&ˆ1ˆQIäêTýð… \ó£ë\ØÒ¾BÍÉPHY•íƧXoR"«¨|îy_ä,u^k_¦IáŸ
+쎠æ®òxdûbÜ ø]…ÖeDJrn1Ï1:L™®Ò ~º/V nY«èª/¡[¯öÞŽª2âh— [ MÏ"™}¢ 雇÷­ƒ?ðÊ8 U½Û£Œu)?m²t+!έ~~¼]غ˜bf¯ÌÕ$6îͼ¹k˜¨ÇNkT™kdzqnô;ˆ)6µó,ëÄ7@
+,ÔO Og'!) æØ"Õ¯--e81ïèÀþjüaWC“"Úfÿ`ÐKÚ/Ó¨:ˆó ”aY|)ÒZîlÆ—b?¸Õ¨¥…ð2²è¡‡&?$ª ’aÇ­«&«™¥8›Ç³ÝzñŽÛÝà…âßz}»äËBZøï×ÍÀlJ¨ÖXxµxöƒl‡}AyÇ 7‰lÑúˆÊ/ä5œT–É»q¥k/<¾ër²´£ÊuÆå¸Ç™{p|¬¼G1öX¦ÍZß'®BçU °Á³GA-ôÒ¡² òæŠ&U£õw)‘%ÌY_εˆKãžã—ò}Eòš;¼W ÍXåxY1‚=[WÌá`ƒˆ‘kD,bæ:ÅøVqÈ[î¢N¸ 2
+·{²K¬õËw±}ªiÏ;Ý©–ViÄ1/k%ªÙåŒÎݹÚà=¶Ø"ëIÎ\o:œP2ûÁÜVrî+ðóÐ7_Nˆûõþz@•Ðh®Ö>º§G¸ˆeV fÉQI–5†–ø¡ÕŠ“ž:#ùÊû=ä0 È±åE:î™V±@Hly¾© ªØyzNYžŽ”Ÿ¢aw*—)ïkõ/nØÔaH8ñDåÔYZ”*ÎøMR,>+ö6–¶÷^e{7¥Üm5*‡ °>££ªšæ”Õ+³«ã’Ó6Äh»½1 *[¤—ÖÇ„ÉkŽüjéGŒkÙíDt‹PÇê{£¦&£[¢Næ³¼—OΧÑ_ Ù(_ÕîyŒ°C©€$[B_6úö‘h@‚KÙiyÀ«vTgF.ØÎ1F¼UUÝÖ’ÊHðÁ‡ÇGÂ…#Öý¤ui3
+’•Úb€‹ŽÓÎ
+tÈ!ТP8duÐn¥pê儉u aÞÌ›:óÞ…•r~È¢ÝPƒ.l
+²¿ÁOÐý°Z´Ô׸A!êõA’iý{÷O
+zÇjÄg+Ó¤
+‚sgûŽ|¶C4¾åo„pošÁ ½ r ôßoÛz·ëσG¨ó—C¤ÂËóë@Lsu/U ‘„[Êël¿<µ#Ô¯56‘PSU…Óèß,—zÉ\|p%B®ÛPd…Ù‹‰l
+`:Æa ëЊ/´XÀŒž^v×ëg¼²ãÓ(:X½&Qíl¹ÑŽNÜÒÁ߆
+µ³ð"Ó¤v°N~÷Jvc¾†ÿСYS±üõ£¬ -YX»+û
+ûH…籸š;k Á¢=Cžèå¦3[1TY :d¡ÙƒÖcûå2êÆûE÷)ÂåÕŸñÝ7ξ|x„3Þ½ìòÖÕ‘æð»]jz—·Œ-ó©P‹ÕgŽ´‚ZÕ]:…-d× kSå\Ëw$+.ç{pkZ
+@Ì™ÁØäàUÑ<sç¶Õã£CWúô6º/n”¥Ò@p!´i™›'Zɶ( ïne¹Rîì±ã¤ãËŸîvùúÕ¬óáaüÀ‰àa¡¿¿Äão4Ë)¿y ÄÖim•-%Üœ]—dÒÖò­énrÕ‚Â˶£a±ß°p|%âË#ÕB¹©Tëõ@È°g¢-§$ë¿ ˆWX®ÆS…Œ§o’`O£-"Ãhãís¥3ùÆ2ôú„ãͲÕjî‡gø„•î§dhÇp·~Õ‘uÏý\yÒ´– ëpËñ“ìrÀ1­l_£ÜÐá ü&Ú†‡“glùŽ>6Ò0ø¶à´ñ’²ã¾LS ÎAg {kË‚<+”ª(¯CLó79}y ¨Ä™µ&â㣠0 EÀikÆ^ÞáÞFõ*× ëÚÙú÷•35}nÑÇåæN¥ ‰nÃ.%§4f… θZY2"œ×&¥ ˆÇÅÛ.袵pÅ5î×8¿
+Òö–¦Ò²á`H
+DL5®iÌÇb'|øo'¶™”Gùë†ç>_ìýïÔ§Åö¹Áb‘1†¢@ jÜCQõ’ÔÑ´ÿR/Úº_æQ+úªP.„I/VŸqk*ÛTó#ÎÆød_–<é–
+(ócSdzŒmq©hJM|¢Ÿ”•Ö
+®)˦
+0Vmn÷*0í‡ü™@pºŽf³ï3Áéžü÷IèY¨-;&œòËó
+qÀõä Áá«c^ww.ÜA:ÈVB¶€ö/lfŸYÅžp$"è3—™—,=Yyð·Ôµí7<WÒÁÚÇ û<TÿèØYYsk¤"¤±ÝXô­Ù9t:qv'Ñ°ÕRã ÚEó”-:e¿· ÃYW_Ÿ}fbh#±AA&1躊æ4UŠ¸»
+GaUø}‘ÏÅ]ô:ÙãKÕÆ/#{«é… 2¢†Ë„±--1ÀºZÕê8˜X‚šÛò
+lQ4iı M˜Ó+«;+Þ
+“nÇžƒÚÑsO¥bžG‡†å„XÔ7d«¯[?v
+ºƒó¿© {¸3ä­"ÙØP]¸“’Uì¿Z®’³/+³Ä¡>d<#Óg"ê9n­ÓW#íüÁ$òÒÂQâ¡%«Ž°0ÁU•Åú4â«]ߟhcò}Xhø™&dI,~º«þ{%lºy;—¦”?±RÃÈ¡ñóÂ=Kl©0küT æψ°¢èI|Ã_tR6FÖS ˜r¸CWɤ‘ o´Ã¦A'Ѧ ññô¿@)i€ÈžÒ†ê3àŽY ñ\À¿fךæÏæ48c~'g9o‰=H;n Ý˜^«ÅTù6ö'ÇØp³`ïá·¢PñaкHœU¯Q./nÒ·EØd÷$Ãy…D‰3ÔºžÂ²ÑôÓE¶_
+êMŠàÚ½«ºaÐai3]g5ž¹A“$êI:…ܤá…÷Œgãg/»Ém]ŽMŽèèoàû­òŸ~H“ ïÀ‹â™³^o.nQƒ˜nb—-"6HXÇ{áS•tÝ›i4ì£þZpå[ÔRu½Kǧr]2&4°?‹Y?gÆ'Û¶¦(`OTŒMщJ›’‹t#£ ZêÁîà?Ù&ûåïF…ŸïðÄ´}Ûrî/gª©1OÐ6êª32.šÑ¿0"ú…´#’–s‘þedIõókæ$P;ƒ0)îåt÷Gœ51AßPÊ£¨ÚpSÙöu¶ÅzÆý=ì~Ó0>ŠƒYËÿ?ó¥ŽNiuÐоÔ\¾,G͈â?黽Þ¼œv¡ò‹m,øX ï\¾@Ú¶å–Ì}S+ð>ûÍÔœõPvL×YŽ¹çž,"PK¡¡Tb=NÆãc—bÀ°ê'ÖIOt}x„z}‹pL¸€˜%¾üÃi-ªUÄ&UMj¢•³õ•§”±ìå+Ô« 1OïëTH¹á[˜¢—zt¡A‰{èAƒ"LfÖ°DŠêþãCÈUö½iË{š„fn§ÅãÃRõΫõ/Œú?²P« à îX=ÞSÏóÄsè LS(µ¡µQh &Þ”æñÙ˜)Áô=]\§FBÚy¿¡vò;ý_î´EVKMÛ)ŒuVV;rù jþþò­Õs8ûÉxcÒràƒ!Ÿ4-$õŠ/òyÏ¢uvêrjÔ¡Ó<³Í­ÌÅ¢§ˆ,6BNœÃ@D »H)ª’3É<èÞ‡†É~‘U#KNø1ò.¥Ãò:årÇa2ž‚\ÄçN†×£ˆ6fÊM T½¬¢ÉƒÏãÙì©4á€ðA½ªo+ý°áÌ“Ù^0+\·ä+‰ 9¿Õ^˜7? Îâ'Iu¬C•,à`"cÓ®Ã`Þý(ã§H/®T£¼zyÞ¢MgÒ`‰¶ÕL™oKùþ˨X>”ŠÏÖ%¹|V×u dê7‹:[„¡{Q^Z¡jW ByWcxîàÕ±|èÙ@RÓÒÚôøK-h—e”ªyg‹û‡€I4™Ð7 Â4®p*³È8“УèWþ_Ûî˜H¸…Âáѳz‘HCÞËh:Äï¡Ñ±€)n‘®:Çyïߌ:NZµÁ‚ì{ó0Xªƒ;\!(NÝ”d1ËþÞàoÆ1Ú³{Ǩ/èäxGF>÷ÇXÉcu½V·6˜¤q›´ãZ¬¸ÌÂòÊM7íâ×æª[á5%ð)˜Raæ
+ܘ(ÅücZ)_ðOŒ§~Ë›lW^Š½W‘i[2³M8ó9Xéø¬£3¯s@i½§çW÷J®øÿlØ;‘ œ¥Ifz™|X.JÅæáÄ7¶îK%Ô‘Z]BHmÙp|ÜÏð¾!UçÓ&Šs€ZMŒ©„lìŠ#ë1uy­—¬¡4Ù_¶ìÞ@4·å²†çÂcßmMØfw²{-Sà–Ó´î?³½uè[t‡
+7dçÖ"¬h~Á0”*¼Á¨ïÚòd«ÒrL»"®º·WbUÊ•‚AÎyK|H³¤sjHÛþ9±[ówèÓšïÎí \lì>Ä!1‹ÿzÉM7<nÁ N·ˆ
+ ò*Æ`€ƒeÚ© EâP‚XWœSÌ®ùµ )gÙ©Ù^<Oç¯3*c©™ kÚï^Š¯â‚8#‚c†mõÅq!œ´ù»”âdûj÷†ƒ¥ú½‰÷¾–¡+ªYü(È´[²cZ¤Úô©U­š æ;(Þa96ó7R•ôÿ03Q
+ntOÔ¥½_Ž3HU<Õ~Â@ ŒÏ,ÒÃ¥ñ
+¶k»z>Wå»å½”T“˜*° ³,ÙqÃ¥KŠèöh±Þdü2]AžV7þ²‘ÐrXÒª«Ùã6§Ü#Áƒ Lïµr
+¡È»o¡ÉE«‰`Ä“Ãv}—TWsÊž™ÿƒ"¿’"ÜæÒË.í›í,(£[„°úÀÙdo” ¯Ò+]ɇâÝŸÀÞ$Š¹–ŒYœ|!8ÊVì¬ÑÙ°÷&ßË^El„¤`}Pr±üQU/o@O-½´é}§s¸+xÆ;)'<‹]Ü Ys_ŸžÀ£Ôê…”Pu]]¬SYçø^:²â4š†ÂTPœp=ø`d{JF˜ÏìÑËh•Ü®B>½æ–ù¬‚û•äMîf>GÏAjøJiaG‰‘%5XéÄ=;™Ñà…L¦·ig£Gj´MdnÅ–‚Jm›p¶A¢º#j%·£Ëþ³jwÇ
+Z3aû0ë¿/k,©&áNo,6¥óK?->‘'1i‰sT%ÎØŽBñÈñgZåïžÇUá
+¿‹<R YÌì·½jõ?’¤áéÄ™´«[ÁÙ^UH3–Õ$~Ç \:añHfsЗŽW ã@÷ݿҼƒXrÔk·} Kò vh%ŠÙ
+ßÂÑ8Ì°ÇݼÁZL{$€öVi!ZÛ` Ù_¨§í€8`¨s«>Á¤Ô)ÜIÏïÉ¥ì'Á÷E¬©ýÐÿ©öÁr*e¯þõ]zÒ'âø¨ONˆúHuôÕÀE´ÓlŒ.² b|ƒ&8µ´ÐÉÿÏ~GΞ8\–bcû–áX’¡‹ à/››âD—ÝPn7¶Vý^s/ FØûqa –”×Q÷äIùÐÙ‚ÉkòwÍrÎÉ­‹·¥6ÁulèÆ+ –tX­[õåµxÅ© m=+g¡]ÍøÍù ²}‰ˆœ'¬¯Žj“H‘86©J•ÆvwB9‹ÀÃJ*Šmc»É,{—ËîãdÉ? ÆÓË¢ØÌF]5Uñëa¶»t«wÓ¹žÑ•a±|»ˆaçŸ<€K[& ãT?Þ}A!ÜfF[ò}QˆÁ²îUz}!NÝ#/j¦VçôÞF–'û2 oÿŸ‚îWe¥õBd²A! Â{Üf#t_ œ³™€±
+`'/ƒ‹£S¡à{È㌜ʷtEkÍŠ›ž û>1hK™®‹ b’¯V@õÇ5jí+Ý;â[W'ªÓ
+ÍI¾œ^€ R=åëC€4nIä°‹‰à.*r®¤ Xº™d;?ÛªÏÁ“-*ói E´ô¢ý´t6`,Çl›ƒ*esR„Rj\T„†ç "T\þÙ*+%ÞHoEºO\4Bä]­ÊçO\EFÁ°b2ì4´³T˜¡–"ÏmÖ³¤näeGçU ¼ t¡pä•õjµëiHeÜEŽ‰„p¡†^4îM®‰H³ÿý¡
+”RqpçÓ{ éV
+a,ïãŠ#øf 1ïÜeò©ÖE†}5*ïçÇñ’3óÁ?†o¥t‡–M4$ï|B¾ºµý©Œ©æIó¾«ñ
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+endstream
+endobj
+2123 0 obj
+13219
+endobj
+2124 0 obj
+1768
+endobj
+2125 0 obj
+10919
+endobj
+2126 0 obj
+532
+endobj
+2127 0 obj
+/JKBRSN+CMBX12
+endobj
+2128 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName 2127 0 R
+/ItalicAngle 0
+/StemV 109
+/XHeight 444
+/FontBBox [ -53 -251 1139 750 ]
+/Flags 4
+/CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z)
+/FontFile 2122 0 R
+>> endobj
+383 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [373 0 R 387 0 R 440 0 R 492 0 R 500 0 R 507 0 R]
+>> endobj
+524 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [519 0 R 527 0 R 539 0 R 552 0 R 557 0 R 564 0 R]
+>> endobj
+572 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [569 0 R 575 0 R 580 0 R 588 0 R 593 0 R 598 0 R]
+>> endobj
+611 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [607 0 R 614 0 R 621 0 R 630 0 R 636 0 R 643 0 R]
+>> endobj
+653 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [648 0 R 660 0 R 673 0 R 681 0 R 687 0 R 696 0 R]
+>> endobj
+707 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2129 0 R
+/Kids [701 0 R 710 0 R 716 0 R 722 0 R 731 0 R 739 0 R]
+>> endobj
+752 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [749 0 R 755 0 R 765 0 R 773 0 R 782 0 R 791 0 R]
+>> endobj
+806 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [800 0 R 813 0 R 819 0 R 825 0 R 831 0 R 838 0 R]
+>> endobj
+848 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [844 0 R 851 0 R 858 0 R 864 0 R 878 0 R 886 0 R]
+>> endobj
+934 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [931 0 R 937 0 R 944 0 R 951 0 R 957 0 R 964 0 R]
+>> endobj
+976 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [972 0 R 989 0 R 999 0 R 1055 0 R 1062 0 R 1067 0 R]
+>> endobj
+1083 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2130 0 R
+/Kids [1076 0 R 1098 0 R 1103 0 R 1143 0 R 1153 0 R 1165 0 R]
+>> endobj
+1177 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2131 0 R
+/Kids [1174 0 R 1180 0 R 1185 0 R 1190 0 R 1195 0 R 1200 0 R]
+>> endobj
+1211 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2131 0 R
+/Kids [1208 0 R 1214 0 R 1219 0 R 1225 0 R 1230 0 R 1236 0 R]
+>> endobj
+1245 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2131 0 R
+/Kids [1241 0 R 1251 0 R 1257 0 R 1262 0 R 1269 0 R 1279 0 R]
+>> endobj
+1664 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2131 0 R
+/Kids [1660 0 R 1667 0 R 1676 0 R 1684 0 R 1701 0 R 1718 0 R]
+>> endobj
+1748 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2131 0 R
+/Kids [1742 0 R 1757 0 R 1780 0 R 1789 0 R 1798 0 R 1804 0 R]
+>> endobj
+1952 0 obj <<
+/Type /Pages
+/Count 1
+/Parent 2131 0 R
+/Kids [1904 0 R]
+>> endobj
+2129 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2132 0 R
+/Kids [383 0 R 524 0 R 572 0 R 611 0 R 653 0 R 707 0 R]
+>> endobj
+2130 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2132 0 R
+/Kids [752 0 R 806 0 R 848 0 R 934 0 R 976 0 R 1083 0 R]
+>> endobj
+2131 0 obj <<
+/Type /Pages
+/Count 31
+/Parent 2132 0 R
+/Kids [1177 0 R 1211 0 R 1245 0 R 1664 0 R 1748 0 R 1952 0 R]
+>> endobj
+2132 0 obj <<
+/Type /Pages
+/Count 103
+/Kids [2129 0 R 2130 0 R 2131 0 R]
+>> endobj
+2133 0 obj <<
+/Type /Outlines
+/First 7 0 R
+/Last 371 0 R
+/Count 9
+>> endobj
+371 0 obj <<
+/Title 372 0 R
+/A 370 0 R
+/Parent 2133 0 R
+/Prev 355 0 R
+>> endobj
+367 0 obj <<
+/Title 368 0 R
+/A 366 0 R
+/Parent 355 0 R
+/Prev 363 0 R
+>> endobj
+363 0 obj <<
+/Title 364 0 R
+/A 362 0 R
+/Parent 355 0 R
+/Prev 359 0 R
+/Next 367 0 R
+>> endobj
+359 0 obj <<
+/Title 360 0 R
+/A 358 0 R
+/Parent 355 0 R
+/Next 363 0 R
+>> endobj
+355 0 obj <<
+/Title 356 0 R
+/A 354 0 R
+/Parent 2133 0 R
+/Prev 339 0 R
+/Next 371 0 R
+/First 359 0 R
+/Last 367 0 R
+/Count -3
+>> endobj
+351 0 obj <<
+/Title 352 0 R
+/A 350 0 R
+/Parent 339 0 R
+/Prev 347 0 R
+>> endobj
+347 0 obj <<
+/Title 348 0 R
+/A 346 0 R
+/Parent 339 0 R
+/Prev 343 0 R
+/Next 351 0 R
+>> endobj
+343 0 obj <<
+/Title 344 0 R
+/A 342 0 R
+/Parent 339 0 R
+/Next 347 0 R
+>> endobj
+339 0 obj <<
+/Title 340 0 R
+/A 338 0 R
+/Parent 2133 0 R
+/Prev 315 0 R
+/Next 355 0 R
+/First 343 0 R
+/Last 351 0 R
+/Count -3
+>> endobj
+335 0 obj <<
+/Title 336 0 R
+/A 334 0 R
+/Parent 315 0 R
+/Prev 331 0 R
+>> endobj
+331 0 obj <<
+/Title 332 0 R
+/A 330 0 R
+/Parent 315 0 R
+/Prev 327 0 R
+/Next 335 0 R
+>> endobj
+327 0 obj <<
+/Title 328 0 R
+/A 326 0 R
+/Parent 315 0 R
+/Prev 323 0 R
+/Next 331 0 R
+>> endobj
+323 0 obj <<
+/Title 324 0 R
+/A 322 0 R
+/Parent 315 0 R
+/Prev 319 0 R
+/Next 327 0 R
+>> endobj
+319 0 obj <<
+/Title 320 0 R
+/A 318 0 R
+/Parent 315 0 R
+/Next 323 0 R
+>> endobj
+315 0 obj <<
+/Title 316 0 R
+/A 314 0 R
+/Parent 2133 0 R
+/Prev 103 0 R
+/Next 339 0 R
+/First 319 0 R
+/Last 335 0 R
+/Count -5
+>> endobj
+311 0 obj <<
+/Title 312 0 R
+/A 310 0 R
+/Parent 103 0 R
+/Prev 295 0 R
+>> endobj
+307 0 obj <<
+/Title 308 0 R
+/A 306 0 R
+/Parent 295 0 R
+/Prev 303 0 R
+>> endobj
+303 0 obj <<
+/Title 304 0 R
+/A 302 0 R
+/Parent 295 0 R
+/Prev 299 0 R
+/Next 307 0 R
+>> endobj
+299 0 obj <<
+/Title 300 0 R
+/A 298 0 R
+/Parent 295 0 R
+/Next 303 0 R
+>> endobj
+295 0 obj <<
+/Title 296 0 R
+/A 294 0 R
+/Parent 103 0 R
+/Prev 275 0 R
+/Next 311 0 R
+/First 299 0 R
+/Last 307 0 R
+/Count -3
+>> endobj
+291 0 obj <<
+/Title 292 0 R
+/A 290 0 R
+/Parent 275 0 R
+/Prev 287 0 R
+>> endobj
+287 0 obj <<
+/Title 288 0 R
+/A 286 0 R
+/Parent 275 0 R
+/Prev 283 0 R
+/Next 291 0 R
+>> endobj
+283 0 obj <<
+/Title 284 0 R
+/A 282 0 R
+/Parent 275 0 R
+/Prev 279 0 R
+/Next 287 0 R
+>> endobj
+279 0 obj <<
+/Title 280 0 R
+/A 278 0 R
+/Parent 275 0 R
+/Next 283 0 R
+>> endobj
+275 0 obj <<
+/Title 276 0 R
+/A 274 0 R
+/Parent 103 0 R
+/Prev 259 0 R
+/Next 295 0 R
+/First 279 0 R
+/Last 291 0 R
+/Count -4
+>> endobj
+271 0 obj <<
+/Title 272 0 R
+/A 270 0 R
+/Parent 259 0 R
+/Prev 267 0 R
+>> endobj
+267 0 obj <<
+/Title 268 0 R
+/A 266 0 R
+/Parent 259 0 R
+/Prev 263 0 R
+/Next 271 0 R
+>> endobj
+263 0 obj <<
+/Title 264 0 R
+/A 262 0 R
+/Parent 259 0 R
+/Next 267 0 R
+>> endobj
+259 0 obj <<
+/Title 260 0 R
+/A 258 0 R
+/Parent 103 0 R
+/Prev 243 0 R
+/Next 275 0 R
+/First 263 0 R
+/Last 271 0 R
+/Count -3
+>> endobj
+255 0 obj <<
+/Title 256 0 R
+/A 254 0 R
+/Parent 243 0 R
+/Prev 251 0 R
+>> endobj
+251 0 obj <<
+/Title 252 0 R
+/A 250 0 R
+/Parent 243 0 R
+/Prev 247 0 R
+/Next 255 0 R
+>> endobj
+247 0 obj <<
+/Title 248 0 R
+/A 246 0 R
+/Parent 243 0 R
+/Next 251 0 R
+>> endobj
+243 0 obj <<
+/Title 244 0 R
+/A 242 0 R
+/Parent 103 0 R
+/Prev 239 0 R
+/Next 259 0 R
+/First 247 0 R
+/Last 255 0 R
+/Count -3
+>> endobj
+239 0 obj <<
+/Title 240 0 R
+/A 238 0 R
+/Parent 103 0 R
+/Prev 223 0 R
+/Next 243 0 R
+>> endobj
+235 0 obj <<
+/Title 236 0 R
+/A 234 0 R
+/Parent 223 0 R
+/Prev 231 0 R
+>> endobj
+231 0 obj <<
+/Title 232 0 R
+/A 230 0 R
+/Parent 223 0 R
+/Prev 227 0 R
+/Next 235 0 R
+>> endobj
+227 0 obj <<
+/Title 228 0 R
+/A 226 0 R
+/Parent 223 0 R
+/Next 231 0 R
+>> endobj
+223 0 obj <<
+/Title 224 0 R
+/A 222 0 R
+/Parent 103 0 R
+/Prev 203 0 R
+/Next 239 0 R
+/First 227 0 R
+/Last 235 0 R
+/Count -3
+>> endobj
+219 0 obj <<
+/Title 220 0 R
+/A 218 0 R
+/Parent 203 0 R
+/Prev 215 0 R
+>> endobj
+215 0 obj <<
+/Title 216 0 R
+/A 214 0 R
+/Parent 203 0 R
+/Prev 211 0 R
+/Next 219 0 R
+>> endobj
+211 0 obj <<
+/Title 212 0 R
+/A 210 0 R
+/Parent 203 0 R
+/Prev 207 0 R
+/Next 215 0 R
+>> endobj
+207 0 obj <<
+/Title 208 0 R
+/A 206 0 R
+/Parent 203 0 R
+/Next 211 0 R
+>> endobj
+203 0 obj <<
+/Title 204 0 R
+/A 202 0 R
+/Parent 103 0 R
+/Prev 199 0 R
+/Next 223 0 R
+/First 207 0 R
+/Last 219 0 R
+/Count -4
+>> endobj
+199 0 obj <<
+/Title 200 0 R
+/A 198 0 R
+/Parent 103 0 R
+/Prev 183 0 R
+/Next 203 0 R
+>> endobj
+195 0 obj <<
+/Title 196 0 R
+/A 194 0 R
+/Parent 183 0 R
+/Prev 191 0 R
+>> endobj
+191 0 obj <<
+/Title 192 0 R
+/A 190 0 R
+/Parent 183 0 R
+/Prev 187 0 R
+/Next 195 0 R
+>> endobj
+187 0 obj <<
+/Title 188 0 R
+/A 186 0 R
+/Parent 183 0 R
+/Next 191 0 R
+>> endobj
+183 0 obj <<
+/Title 184 0 R
+/A 182 0 R
+/Parent 103 0 R
+/Prev 163 0 R
+/Next 199 0 R
+/First 187 0 R
+/Last 195 0 R
+/Count -3
+>> endobj
+179 0 obj <<
+/Title 180 0 R
+/A 178 0 R
+/Parent 163 0 R
+/Prev 175 0 R
+>> endobj
+175 0 obj <<
+/Title 176 0 R
+/A 174 0 R
+/Parent 163 0 R
+/Prev 171 0 R
+/Next 179 0 R
+>> endobj
+171 0 obj <<
+/Title 172 0 R
+/A 170 0 R
+/Parent 163 0 R
+/Prev 167 0 R
+/Next 175 0 R
+>> endobj
+167 0 obj <<
+/Title 168 0 R
+/A 166 0 R
+/Parent 163 0 R
+/Next 171 0 R
+>> endobj
+163 0 obj <<
+/Title 164 0 R
+/A 162 0 R
+/Parent 103 0 R
+/Prev 159 0 R
+/Next 183 0 R
+/First 167 0 R
+/Last 179 0 R
+/Count -4
+>> endobj
+159 0 obj <<
+/Title 160 0 R
+/A 158 0 R
+/Parent 103 0 R
+/Prev 155 0 R
+/Next 163 0 R
+>> endobj
+155 0 obj <<
+/Title 156 0 R
+/A 154 0 R
+/Parent 103 0 R
+/Prev 151 0 R
+/Next 159 0 R
+>> endobj
+151 0 obj <<
+/Title 152 0 R
+/A 150 0 R
+/Parent 103 0 R
+/Prev 147 0 R
+/Next 155 0 R
+>> endobj
+147 0 obj <<
+/Title 148 0 R
+/A 146 0 R
+/Parent 103 0 R
+/Prev 143 0 R
+/Next 151 0 R
+>> endobj
+143 0 obj <<
+/Title 144 0 R
+/A 142 0 R
+/Parent 103 0 R
+/Prev 139 0 R
+/Next 147 0 R
+>> endobj
+139 0 obj <<
+/Title 140 0 R
+/A 138 0 R
+/Parent 103 0 R
+/Prev 115 0 R
+/Next 143 0 R
+>> endobj
+135 0 obj <<
+/Title 136 0 R
+/A 134 0 R
+/Parent 115 0 R
+/Prev 131 0 R
+>> endobj
+131 0 obj <<
+/Title 132 0 R
+/A 130 0 R
+/Parent 115 0 R
+/Prev 127 0 R
+/Next 135 0 R
+>> endobj
+127 0 obj <<
+/Title 128 0 R
+/A 126 0 R
+/Parent 115 0 R
+/Prev 123 0 R
+/Next 131 0 R
+>> endobj
+123 0 obj <<
+/Title 124 0 R
+/A 122 0 R
+/Parent 115 0 R
+/Prev 119 0 R
+/Next 127 0 R
+>> endobj
+119 0 obj <<
+/Title 120 0 R
+/A 118 0 R
+/Parent 115 0 R
+/Next 123 0 R
+>> endobj
+115 0 obj <<
+/Title 116 0 R
+/A 114 0 R
+/Parent 103 0 R
+/Prev 111 0 R
+/Next 139 0 R
+/First 119 0 R
+/Last 135 0 R
+/Count -5
+>> endobj
+111 0 obj <<
+/Title 112 0 R
+/A 110 0 R
+/Parent 103 0 R
+/Prev 107 0 R
+/Next 115 0 R
+>> endobj
+107 0 obj <<
+/Title 108 0 R
+/A 106 0 R
+/Parent 103 0 R
+/Next 111 0 R
+>> endobj
+103 0 obj <<
+/Title 104 0 R
+/A 102 0 R
+/Parent 2133 0 R
+/Prev 99 0 R
+/Next 315 0 R
+/First 107 0 R
+/Last 311 0 R
+/Count -20
+>> endobj
+99 0 obj <<
+/Title 100 0 R
+/A 98 0 R
+/Parent 2133 0 R
+/Prev 63 0 R
+/Next 103 0 R
+>> endobj
+95 0 obj <<
+/Title 96 0 R
+/A 94 0 R
+/Parent 63 0 R
+/Prev 91 0 R
+>> endobj
+91 0 obj <<
+/Title 92 0 R
+/A 90 0 R
+/Parent 63 0 R
+/Prev 87 0 R
+/Next 95 0 R
+>> endobj
+87 0 obj <<
+/Title 88 0 R
+/A 86 0 R
+/Parent 63 0 R
+/Prev 83 0 R
+/Next 91 0 R
+>> endobj
+83 0 obj <<
+/Title 84 0 R
+/A 82 0 R
+/Parent 63 0 R
+/Prev 79 0 R
+/Next 87 0 R
+>> endobj
+79 0 obj <<
+/Title 80 0 R
+/A 78 0 R
+/Parent 63 0 R
+/Prev 75 0 R
+/Next 83 0 R
+>> endobj
+75 0 obj <<
+/Title 76 0 R
+/A 74 0 R
+/Parent 63 0 R
+/Prev 71 0 R
+/Next 79 0 R
+>> endobj
+71 0 obj <<
+/Title 72 0 R
+/A 70 0 R
+/Parent 63 0 R
+/Prev 67 0 R
+/Next 75 0 R
+>> endobj
+67 0 obj <<
+/Title 68 0 R
+/A 66 0 R
+/Parent 63 0 R
+/Next 71 0 R
+>> endobj
+63 0 obj <<
+/Title 64 0 R
+/A 62 0 R
+/Parent 2133 0 R
+/Prev 27 0 R
+/Next 99 0 R
+/First 67 0 R
+/Last 95 0 R
+/Count -8
+>> endobj
+59 0 obj <<
+/Title 60 0 R
+/A 58 0 R
+/Parent 27 0 R
+/Prev 39 0 R
+>> endobj
+55 0 obj <<
+/Title 56 0 R
+/A 54 0 R
+/Parent 39 0 R
+/Prev 51 0 R
+>> endobj
+51 0 obj <<
+/Title 52 0 R
+/A 50 0 R
+/Parent 39 0 R
+/Prev 47 0 R
+/Next 55 0 R
+>> endobj
+47 0 obj <<
+/Title 48 0 R
+/A 46 0 R
+/Parent 39 0 R
+/Prev 43 0 R
+/Next 51 0 R
+>> endobj
+43 0 obj <<
+/Title 44 0 R
+/A 42 0 R
+/Parent 39 0 R
+/Next 47 0 R
+>> endobj
+39 0 obj <<
+/Title 40 0 R
+/A 38 0 R
+/Parent 27 0 R
+/Prev 35 0 R
+/Next 59 0 R
+/First 43 0 R
+/Last 55 0 R
+/Count -4
+>> endobj
+35 0 obj <<
+/Title 36 0 R
+/A 34 0 R
+/Parent 27 0 R
+/Prev 31 0 R
+/Next 39 0 R
+>> endobj
+31 0 obj <<
+/Title 32 0 R
+/A 30 0 R
+/Parent 27 0 R
+/Next 35 0 R
+>> endobj
+27 0 obj <<
+/Title 28 0 R
+/A 26 0 R
+/Parent 2133 0 R
+/Prev 7 0 R
+/Next 63 0 R
+/First 31 0 R
+/Last 59 0 R
+/Count -4
+>> endobj
+23 0 obj <<
+/Title 24 0 R
+/A 22 0 R
+/Parent 7 0 R
+/Prev 19 0 R
+>> endobj
+19 0 obj <<
+/Title 20 0 R
+/A 18 0 R
+/Parent 7 0 R
+/Prev 15 0 R
+/Next 23 0 R
+>> endobj
+15 0 obj <<
+/Title 16 0 R
+/A 14 0 R
+/Parent 7 0 R
+/Prev 11 0 R
+/Next 19 0 R
+>> endobj
+11 0 obj <<
+/Title 12 0 R
+/A 10 0 R
+/Parent 7 0 R
+/Next 15 0 R
+>> endobj
+7 0 obj <<
+/Title 8 0 R
+/A 6 0 R
+/Parent 2133 0 R
+/Next 27 0 R
+/First 11 0 R
+/Last 23 0 R
+/Count -4
+>> endobj
+2134 0 obj <<
+/Names [(Doc-Start) 375 0 R (Hfootnote.1) 532 0 R (Hfootnote.10) 788 0 R (Hfootnote.11) 969 0 R (Hfootnote.12) 984 0 R (Hfootnote.13) 996 0 R (Hfootnote.14) 1071 0 R (Hfootnote.15) 1147 0 R (Hfootnote.2) 535 0 R (Hfootnote.3) 536 0 R (Hfootnote.4) 604 0 R (Hfootnote.5) 728 0 R (Hfootnote.6) 736 0 R (Hfootnote.7) 768 0 R (Hfootnote.8) 778 0 R (Hfootnote.9) 779 0 R (Item.1) 513 0 R (Item.10) 627 0 R (Item.11) 654 0 R (Item.12) 655 0 R (Item.13) 656 0 R (Item.14) 657 0 R (Item.15) 668 0 R (Item.16) 669 0 R (Item.17) 670 0 R (Item.18) 684 0 R (Item.19) 690 0 R (Item.2) 514 0 R (Item.20) 691 0 R (Item.21) 692 0 R (Item.22) 693 0 R (Item.23) 744 0 R (Item.24) 745 0 R (Item.25) 746 0 R (Item.26) 769 0 R (Item.27) 770 0 R (Item.28) 807 0 R (Item.29) 808 0 R (Item.3) 515 0 R (Item.30) 809 0 R (Item.31) 810 0 R (Item.32) 1139 0 R (Item.33) 1140 0 R (Item.34) 1146 0 R (Item.35) 1148 0 R (Item.36) 1149 0 R (Item.37) 1150 0 R (Item.38) 1158 0 R (Item.39) 1159 0 R (Item.4) 516 0 R (Item.40) 1160 0 R (Item.41) 1161 0 R (Item.42) 1162 0 R (Item.43) 1168 0 R (Item.44) 1169 0 R (Item.45) 1170 0 R (Item.46) 1171 0 R (Item.47) 1204 0 R (Item.48) 1205 0 R (Item.49) 1246 0 R (Item.5) 530 0 R (Item.50) 1247 0 R (Item.51) 1248 0 R (Item.52) 1774 0 R (Item.53) 1775 0 R (Item.6) 531 0 R (Item.7) 533 0 R (Item.8) 534 0 R (Item.9) 626 0 R (equation.1) 1727 0 R (equation.10) 1736 0 R (equation.11) 1737 0 R (equation.12) 1738 0 R (equation.13) 1739 0 R (equation.14) 1749 0 R (equation.15) 1750 0 R (equation.16) 1751 0 R (equation.17) 1752 0 R (equation.18) 1753 0 R (equation.19) 1754 0 R (equation.2) 1728 0 R (equation.20) 369 0 R (equation.3) 1729 0 R (equation.4) 1730 0 R (equation.5) 1731 0 R (equation.6) 1732 0 R (equation.7) 1733 0 R (equation.8) 1734 0 R (equation.9) 1735 0 R (figure.1) 867 0 R (figure.10) 1714 0 R (figure.11) 1776 0 R (figure.2) 967 0 R (figure.3) 981 0 R (figure.4) 985 0 R (figure.5) 1072 0 R (figure.6) 1090 0 R (figure.7) 1265 0 R (figure.8) 1679 0 R (figure.9) 1696 0 R (page.1) 376 0 R (page.10) 550 0 R (page.100) 1787 0 R (page.101) 1796 0 R (page.102) 1802 0 R (page.103) 1902 0 R (page.11) 555 0 R (page.12) 562 0 R (page.13) 567 0 R (page.14) 573 0 R (page.15) 578 0 R (page.16) 586 0 R (page.17) 591 0 R (page.18) 596 0 R (page.19) 605 0 R (page.2) 385 0 R (page.20) 612 0 R (page.21) 619 0 R (page.22) 628 0 R (page.23) 634 0 R (page.24) 641 0 R (page.25) 646 0 R (page.26) 658 0 R (page.27) 671 0 R (page.28) 679 0 R (page.29) 685 0 R (page.3) 438 0 R (page.30) 694 0 R (page.31) 699 0 R (page.32) 708 0 R (page.33) 714 0 R (page.34) 720 0 R (page.35) 729 0 R (page.36) 737 0 R (page.37) 747 0 R (page.38) 753 0 R (page.39) 763 0 R (page.4) 490 0 R (page.40) 771 0 R (page.41) 780 0 R (page.42) 789 0 R (page.43) 798 0 R (page.44) 811 0 R (page.45) 817 0 R (page.46) 823 0 R (page.47) 829 0 R (page.48) 836 0 R (page.49) 842 0 R (page.5) 498 0 R (page.50) 849 0 R (page.51) 856 0 R (page.52) 862 0 R (page.53) 876 0 R (page.54) 884 0 R (page.55) 929 0 R (page.56) 935 0 R (page.57) 942 0 R (page.58) 949 0 R (page.59) 955 0 R (page.6) 505 0 R (page.60) 962 0 R (page.61) 970 0 R (page.62) 987 0 R (page.63) 997 0 R (page.64) 1053 0 R (page.65) 1060 0 R (page.66) 1065 0 R (page.67) 1074 0 R (page.68) 1096 0 R (page.69) 1101 0 R (page.7) 517 0 R (page.70) 1141 0 R (page.71) 1151 0 R (page.72) 1163 0 R (page.73) 1172 0 R (page.74) 1178 0 R (page.75) 1183 0 R (page.76) 1188 0 R (page.77) 1193 0 R (page.78) 1198 0 R (page.79) 1206 0 R (page.8) 525 0 R (page.80) 1212 0 R (page.81) 1217 0 R (page.82) 1223 0 R (page.83) 1228 0 R (page.84) 1234 0 R (page.85) 1239 0 R (page.86) 1249 0 R (page.87) 1255 0 R (page.88) 1260 0 R (page.89) 1267 0 R (page.9) 537 0 R (page.90) 1277 0 R (page.91) 1658 0 R (page.92) 1665 0 R (page.93) 1674 0 R (page.94) 1682 0 R (page.95) 1699 0 R (page.96) 1716 0 R (page.97) 1740 0 R (page.98) 1755 0 R (page.99) 1778 0 R (section*.1) 384 0 R (section*.2) 1801 0 R (section.1) 5 0 R (section.2) 25 0 R (section.3) 61 0 R (section.4) 97 0 R (section.5) 101 0 R (section.6) 313 0 R (section.7) 337 0 R (section.8) 353 0 R (subsection.1.1) 9 0 R (subsection.1.2) 13 0 R (subsection.1.3) 17 0 R (subsection.1.4) 21 0 R (subsection.2.1) 29 0 R (subsection.2.2) 33 0 R (subsection.2.3) 37 0 R (subsection.2.4) 57 0 R (subsection.3.1) 65 0 R (subsection.3.2) 69 0 R (subsection.3.3) 73 0 R (subsection.3.4) 77 0 R (subsection.3.5) 81 0 R (subsection.3.6) 85 0 R (subsection.3.7) 89 0 R (subsection.3.8) 93 0 R (subsection.5.1) 105 0 R (subsection.5.10) 161 0 R (subsection.5.11) 181 0 R (subsection.5.12) 197 0 R (subsection.5.13) 201 0 R (subsection.5.14) 221 0 R (subsection.5.15) 237 0 R (subsection.5.16) 241 0 R (subsection.5.17) 257 0 R (subsection.5.18) 273 0 R (subsection.5.19) 293 0 R (subsection.5.2) 109 0 R (subsection.5.20) 309 0 R (subsection.5.3) 113 0 R (subsection.5.4) 137 0 R (subsection.5.5) 141 0 R (subsection.5.6) 145 0 R (subsection.5.7) 149 0 R (subsection.5.8) 153 0 R (subsection.5.9) 157 0 R (subsection.6.1) 317 0 R (subsection.6.2) 321 0 R (subsection.6.3) 325 0 R (subsection.6.4) 329 0 R (subsection.6.5) 333 0 R (subsection.7.1) 341 0 R (subsection.7.2) 345 0 R (subsection.7.3) 349 0 R (subsection.8.1) 357 0 R (subsection.8.2) 361 0 R (subsection.8.3) 365 0 R (subsubsection.2.3.1) 41 0 R (subsubsection.2.3.2) 45 0 R (subsubsection.2.3.3) 49 0 R (subsubsection.2.3.4) 53 0 R (subsubsection.5.10.1) 165 0 R (subsubsection.5.10.2) 169 0 R (subsubsection.5.10.3) 173 0 R (subsubsection.5.10.4) 177 0 R (subsubsection.5.11.1) 185 0 R (subsubsection.5.11.2) 189 0 R (subsubsection.5.11.3) 193 0 R (subsubsection.5.13.1) 205 0 R (subsubsection.5.13.2) 209 0 R (subsubsection.5.13.3) 213 0 R (subsubsection.5.13.4) 217 0 R (subsubsection.5.14.1) 225 0 R (subsubsection.5.14.2) 229 0 R (subsubsection.5.14.3) 233 0 R (subsubsection.5.16.1) 245 0 R (subsubsection.5.16.2) 249 0 R (subsubsection.5.16.3) 253 0 R (subsubsection.5.17.1) 261 0 R (subsubsection.5.17.2) 265 0 R (subsubsection.5.17.3) 269 0 R (subsubsection.5.18.1) 277 0 R (subsubsection.5.18.2) 281 0 R (subsubsection.5.18.3) 285 0 R (subsubsection.5.18.4) 289 0 R (subsubsection.5.19.1) 297 0 R (subsubsection.5.19.2) 301 0 R (subsubsection.5.19.3) 305 0 R (subsubsection.5.3.1) 117 0 R (subsubsection.5.3.2) 121 0 R (subsubsection.5.3.3) 125 0 R (subsubsection.5.3.4) 129 0 R (subsubsection.5.3.5) 133 0 R]
+/Limits [(Doc-Start) (subsubsection.5.3.5)]
+>> endobj
+2135 0 obj <<
+/Kids [2134 0 R]
+>> endobj
+2136 0 obj <<
+/Dests 2135 0 R
+>> endobj
+2137 0 obj <<
+/Type /Catalog
+/Pages 2132 0 R
+/Outlines 2133 0 R
+/Names 2136 0 R
+ /PageMode /UseOutlines /URI << /Base () >> /ViewerPreferences << >>
+/OpenAction 374 0 R
+>> endobj
+2138 0 obj <<
+ /Author () /Title () /Subject () /Creator (LaTeX with hyperref package) /Producer (pdfTeX13.d) /Keywords ()
+/Creator (TeX)
+/Producer (pdfTeX-0.13d)
+/CreationDate (D:20050518211800)
+>> endobj
+xref
+0 2139
+0000000000 65535 f
+0000009833 00000 n
+0000011151 00000 n
+0000011238 00000 n
+0000011338 00000 n
+0000036423 00000 n
+0000000009 00000 n
+0000736800 00000 n
+0000000054 00000 n
+0000036478 00000 n
+0000000084 00000 n
+0000736727 00000 n
+0000000135 00000 n
+0000040411 00000 n
+0000000173 00000 n
+0000736641 00000 n
+0000000224 00000 n
+0000043624 00000 n
+0000000265 00000 n
+0000736555 00000 n
+0000000316 00000 n
+0000043679 00000 n
+0000000345 00000 n
+0000736482 00000 n
+0000000396 00000 n
+0000047583 00000 n
+0000000455 00000 n
+0000736357 00000 n
+0000000501 00000 n
+0000047639 00000 n
+0000000535 00000 n
+0000736283 00000 n
+0000000586 00000 n
+0000051770 00000 n
+0000000656 00000 n
+0000736196 00000 n
+0000000707 00000 n
+0000051826 00000 n
+0000000752 00000 n
+0000736072 00000 n
+0000000803 00000 n
+0000051882 00000 n
+0000000835 00000 n
+0000735998 00000 n
+0000000891 00000 n
+0000056928 00000 n
+0000000942 00000 n
+0000735911 00000 n
+0000000998 00000 n
+0000063827 00000 n
+0000001045 00000 n
+0000735824 00000 n
+0000001101 00000 n
+0000063883 00000 n
+0000001142 00000 n
+0000735750 00000 n
+0000001198 00000 n
+0000066022 00000 n
+0000001243 00000 n
+0000735676 00000 n
+0000001294 00000 n
+0000071895 00000 n
+0000001346 00000 n
+0000735550 00000 n
+0000001392 00000 n
+0000071951 00000 n
+0000001429 00000 n
+0000735476 00000 n
+0000001480 00000 n
+0000078788 00000 n
+0000001542 00000 n
+0000735389 00000 n
+0000001593 00000 n
+0000078844 00000 n
+0000001662 00000 n
+0000735302 00000 n
+0000001713 00000 n
+0000086492 00000 n
+0000001761 00000 n
+0000735215 00000 n
+0000001812 00000 n
+0000086548 00000 n
+0000001849 00000 n
+0000735128 00000 n
+0000001900 00000 n
+0000086604 00000 n
+0000001936 00000 n
+0000735041 00000 n
+0000001987 00000 n
+0000097785 00000 n
+0000002035 00000 n
+0000734954 00000 n
+0000002086 00000 n
+0000097955 00000 n
+0000002140 00000 n
+0000734880 00000 n
+0000002191 00000 n
+0000099973 00000 n
+0000002240 00000 n
+0000734789 00000 n
+0000002286 00000 n
+0000103484 00000 n
+0000002326 00000 n
+0000734656 00000 n
+0000002373 00000 n
+0000103541 00000 n
+0000002404 00000 n
+0000734577 00000 n
+0000002456 00000 n
+0000103598 00000 n
+0000002512 00000 n
+0000734484 00000 n
+0000002564 00000 n
+0000112807 00000 n
+0000002650 00000 n
+0000734352 00000 n
+0000002702 00000 n
+0000112864 00000 n
+0000002764 00000 n
+0000734273 00000 n
+0000002821 00000 n
+0000117428 00000 n
+0000002864 00000 n
+0000734180 00000 n
+0000002921 00000 n
+0000124348 00000 n
+0000002995 00000 n
+0000734087 00000 n
+0000003052 00000 n
+0000124404 00000 n
+0000003100 00000 n
+0000733994 00000 n
+0000003157 00000 n
+0000128309 00000 n
+0000003208 00000 n
+0000733915 00000 n
+0000003265 00000 n
+0000132526 00000 n
+0000003326 00000 n
+0000733822 00000 n
+0000003378 00000 n
+0000136185 00000 n
+0000003415 00000 n
+0000733729 00000 n
+0000003467 00000 n
+0000161569 00000 n
+0000003505 00000 n
+0000733636 00000 n
+0000003557 00000 n
+0000164471 00000 n
+0000003601 00000 n
+0000733543 00000 n
+0000003653 00000 n
+0000172965 00000 n
+0000003704 00000 n
+0000733450 00000 n
+0000003756 00000 n
+0000181813 00000 n
+0000003789 00000 n
+0000733357 00000 n
+0000003841 00000 n
+0000185085 00000 n
+0000003901 00000 n
+0000733225 00000 n
+0000003954 00000 n
+0000188026 00000 n
+0000004016 00000 n
+0000733146 00000 n
+0000004074 00000 n
+0000191168 00000 n
+0000004130 00000 n
+0000733053 00000 n
+0000004188 00000 n
+0000201455 00000 n
+0000004236 00000 n
+0000732960 00000 n
+0000004294 00000 n
+0000204786 00000 n
+0000004341 00000 n
+0000732881 00000 n
+0000004399 00000 n
+0000208415 00000 n
+0000004445 00000 n
+0000732749 00000 n
+0000004498 00000 n
+0000208472 00000 n
+0000004541 00000 n
+0000732670 00000 n
+0000004599 00000 n
+0000215510 00000 n
+0000004644 00000 n
+0000732577 00000 n
+0000004702 00000 n
+0000230135 00000 n
+0000004754 00000 n
+0000732498 00000 n
+0000004812 00000 n
+0000234368 00000 n
+0000004886 00000 n
+0000732405 00000 n
+0000004939 00000 n
+0000242120 00000 n
+0000004989 00000 n
+0000732273 00000 n
+0000005042 00000 n
+0000242177 00000 n
+0000005074 00000 n
+0000732194 00000 n
+0000005132 00000 n
+0000245899 00000 n
+0000005171 00000 n
+0000732101 00000 n
+0000005229 00000 n
+0000248903 00000 n
+0000005277 00000 n
+0000732008 00000 n
+0000005335 00000 n
+0000252772 00000 n
+0000005373 00000 n
+0000731929 00000 n
+0000005431 00000 n
+0000257985 00000 n
+0000005490 00000 n
+0000731797 00000 n
+0000005543 00000 n
+0000272724 00000 n
+0000005584 00000 n
+0000731718 00000 n
+0000005642 00000 n
+0000279466 00000 n
+0000005676 00000 n
+0000731625 00000 n
+0000005734 00000 n
+0000288949 00000 n
+0000005768 00000 n
+0000731546 00000 n
+0000005826 00000 n
+0000319015 00000 n
+0000005870 00000 n
+0000731453 00000 n
+0000005923 00000 n
+0000319073 00000 n
+0000005956 00000 n
+0000731321 00000 n
+0000006009 00000 n
+0000319130 00000 n
+0000006057 00000 n
+0000731242 00000 n
+0000006115 00000 n
+0000323310 00000 n
+0000006155 00000 n
+0000731149 00000 n
+0000006213 00000 n
+0000327097 00000 n
+0000006262 00000 n
+0000731070 00000 n
+0000006320 00000 n
+0000334168 00000 n
+0000006357 00000 n
+0000730938 00000 n
+0000006410 00000 n
+0000334225 00000 n
+0000006445 00000 n
+0000730859 00000 n
+0000006503 00000 n
+0000338536 00000 n
+0000006560 00000 n
+0000730766 00000 n
+0000006618 00000 n
+0000342141 00000 n
+0000006662 00000 n
+0000730687 00000 n
+0000006720 00000 n
+0000342199 00000 n
+0000006772 00000 n
+0000730555 00000 n
+0000006825 00000 n
+0000342256 00000 n
+0000006865 00000 n
+0000730476 00000 n
+0000006923 00000 n
+0000345488 00000 n
+0000006958 00000 n
+0000730383 00000 n
+0000007016 00000 n
+0000353414 00000 n
+0000007070 00000 n
+0000730290 00000 n
+0000007128 00000 n
+0000353590 00000 n
+0000007212 00000 n
+0000730211 00000 n
+0000007270 00000 n
+0000357372 00000 n
+0000007297 00000 n
+0000730079 00000 n
+0000007350 00000 n
+0000357430 00000 n
+0000007384 00000 n
+0000730000 00000 n
+0000007442 00000 n
+0000361287 00000 n
+0000007490 00000 n
+0000729907 00000 n
+0000007548 00000 n
+0000361345 00000 n
+0000007590 00000 n
+0000729828 00000 n
+0000007648 00000 n
+0000365078 00000 n
+0000007680 00000 n
+0000729749 00000 n
+0000007733 00000 n
+0000371671 00000 n
+0000007775 00000 n
+0000729616 00000 n
+0000007822 00000 n
+0000371729 00000 n
+0000007859 00000 n
+0000729537 00000 n
+0000007911 00000 n
+0000371787 00000 n
+0000007959 00000 n
+0000729444 00000 n
+0000008011 00000 n
+0000374795 00000 n
+0000008066 00000 n
+0000729351 00000 n
+0000008118 00000 n
+0000382102 00000 n
+0000008157 00000 n
+0000729258 00000 n
+0000008209 00000 n
+0000382160 00000 n
+0000008265 00000 n
+0000729179 00000 n
+0000008317 00000 n
+0000387081 00000 n
+0000008364 00000 n
+0000729046 00000 n
+0000008411 00000 n
+0000387139 00000 n
+0000008455 00000 n
+0000728967 00000 n
+0000008507 00000 n
+0000446351 00000 n
+0000008547 00000 n
+0000728874 00000 n
+0000008599 00000 n
+0000447550 00000 n
+0000008654 00000 n
+0000728795 00000 n
+0000008706 00000 n
+0000454852 00000 n
+0000008759 00000 n
+0000728662 00000 n
+0000008806 00000 n
+0000454910 00000 n
+0000008844 00000 n
+0000728583 00000 n
+0000008896 00000 n
+0000461920 00000 n
+0000008924 00000 n
+0000728490 00000 n
+0000008976 00000 n
+0000484253 00000 n
+0000009025 00000 n
+0000728411 00000 n
+0000009077 00000 n
+0000489454 00000 n
+0000009141 00000 n
+0000728331 00000 n
+0000009190 00000 n
+0000009713 00000 n
+0000009224 00000 n
+0000011520 00000 n
+0000011463 00000 n
+0000011577 00000 n
+0000009276 00000 n
+0000009692 00000 n
+0000711134 00000 n
+0000704732 00000 n
+0000699716 00000 n
+0000725674 00000 n
+0000022085 00000 n
+0000022028 00000 n
+0000022141 00000 n
+0000014267 00000 n
+0000011688 00000 n
+0000014245 00000 n
+0000014759 00000 n
+0000683608 00000 n
+0000014910 00000 n
+0000662456 00000 n
+0000643670 00000 n
+0000015071 00000 n
+0000015232 00000 n
+0000015393 00000 n
+0000015553 00000 n
+0000015705 00000 n
+0000015865 00000 n
+0000016024 00000 n
+0000016185 00000 n
+0000016352 00000 n
+0000016518 00000 n
+0000016685 00000 n
+0000016852 00000 n
+0000017013 00000 n
+0000017165 00000 n
+0000017326 00000 n
+0000017487 00000 n
+0000017648 00000 n
+0000017809 00000 n
+0000017969 00000 n
+0000018130 00000 n
+0000018290 00000 n
+0000018451 00000 n
+0000018603 00000 n
+0000018755 00000 n
+0000018916 00000 n
+0000019077 00000 n
+0000019237 00000 n
+0000019404 00000 n
+0000019571 00000 n
+0000019737 00000 n
+0000019903 00000 n
+0000020070 00000 n
+0000020231 00000 n
+0000020392 00000 n
+0000020553 00000 n
+0000020714 00000 n
+0000020875 00000 n
+0000021036 00000 n
+0000021198 00000 n
+0000021366 00000 n
+0000021534 00000 n
+0000021701 00000 n
+0000021868 00000 n
+0000032772 00000 n
+0000032829 00000 n
+0000024583 00000 n
+0000022252 00000 n
+0000024561 00000 n
+0000025091 00000 n
+0000025259 00000 n
+0000025427 00000 n
+0000025594 00000 n
+0000025756 00000 n
+0000025918 00000 n
+0000026085 00000 n
+0000026253 00000 n
+0000026421 00000 n
+0000026589 00000 n
+0000026749 00000 n
+0000026917 00000 n
+0000027084 00000 n
+0000027252 00000 n
+0000027413 00000 n
+0000027573 00000 n
+0000027741 00000 n
+0000027908 00000 n
+0000028076 00000 n
+0000028238 00000 n
+0000028406 00000 n
+0000028574 00000 n
+0000028741 00000 n
+0000028902 00000 n
+0000029070 00000 n
+0000029238 00000 n
+0000029405 00000 n
+0000029573 00000 n
+0000029735 00000 n
+0000029903 00000 n
+0000030071 00000 n
+0000030239 00000 n
+0000030401 00000 n
+0000030553 00000 n
+0000030714 00000 n
+0000030875 00000 n
+0000031035 00000 n
+0000031195 00000 n
+0000031355 00000 n
+0000031503 00000 n
+0000031664 00000 n
+0000031825 00000 n
+0000031986 00000 n
+0000032138 00000 n
+0000032299 00000 n
+0000032460 00000 n
+0000032620 00000 n
+0000036366 00000 n
+0000036532 00000 n
+0000036246 00000 n
+0000032927 00000 n
+0000036224 00000 n
+0000637756 00000 n
+0000623630 00000 n
+0000618021 00000 n
+0000040354 00000 n
+0000040466 00000 n
+0000039881 00000 n
+0000036682 00000 n
+0000039859 00000 n
+0000040029 00000 n
+0000040192 00000 n
+0000043567 00000 n
+0000043734 00000 n
+0000043271 00000 n
+0000040590 00000 n
+0000043249 00000 n
+0000611430 00000 n
+0000043411 00000 n
+0000600817 00000 n
+0000047694 00000 n
+0000047751 00000 n
+0000047806 00000 n
+0000047863 00000 n
+0000047526 00000 n
+0000047920 00000 n
+0000047225 00000 n
+0000043884 00000 n
+0000047203 00000 n
+0000047365 00000 n
+0000595339 00000 n
+0000725792 00000 n
+0000051713 00000 n
+0000051938 00000 n
+0000051593 00000 n
+0000048096 00000 n
+0000051571 00000 n
+0000056701 00000 n
+0000056757 00000 n
+0000056984 00000 n
+0000056814 00000 n
+0000056871 00000 n
+0000057045 00000 n
+0000057106 00000 n
+0000056644 00000 n
+0000057165 00000 n
+0000055672 00000 n
+0000052114 00000 n
+0000055650 00000 n
+0000055844 00000 n
+0000056006 00000 n
+0000056168 00000 n
+0000056326 00000 n
+0000056485 00000 n
+0000590045 00000 n
+0000576233 00000 n
+0000566627 00000 n
+0000060137 00000 n
+0000060194 00000 n
+0000060017 00000 n
+0000057328 00000 n
+0000059995 00000 n
+0000063770 00000 n
+0000063939 00000 n
+0000063304 00000 n
+0000060318 00000 n
+0000063282 00000 n
+0000063452 00000 n
+0000063609 00000 n
+0000065965 00000 n
+0000066078 00000 n
+0000065845 00000 n
+0000064076 00000 n
+0000065823 00000 n
+0000066930 00000 n
+0000066987 00000 n
+0000066810 00000 n
+0000066176 00000 n
+0000066789 00000 n
+0000725910 00000 n
+0000067842 00000 n
+0000067899 00000 n
+0000067722 00000 n
+0000067072 00000 n
+0000067701 00000 n
+0000071838 00000 n
+0000072007 00000 n
+0000071366 00000 n
+0000067984 00000 n
+0000071344 00000 n
+0000562762 00000 n
+0000071514 00000 n
+0000071676 00000 n
+0000075422 00000 n
+0000075479 00000 n
+0000075302 00000 n
+0000072183 00000 n
+0000075280 00000 n
+0000078731 00000 n
+0000078900 00000 n
+0000078611 00000 n
+0000075590 00000 n
+0000078589 00000 n
+0000082560 00000 n
+0000082617 00000 n
+0000081928 00000 n
+0000079037 00000 n
+0000081906 00000 n
+0000082084 00000 n
+0000082246 00000 n
+0000082403 00000 n
+0000086660 00000 n
+0000086435 00000 n
+0000086720 00000 n
+0000086136 00000 n
+0000082728 00000 n
+0000086114 00000 n
+0000086276 00000 n
+0000726028 00000 n
+0000090052 00000 n
+0000090109 00000 n
+0000089580 00000 n
+0000086883 00000 n
+0000089558 00000 n
+0000089728 00000 n
+0000089890 00000 n
+0000094227 00000 n
+0000094284 00000 n
+0000093753 00000 n
+0000090207 00000 n
+0000093731 00000 n
+0000093901 00000 n
+0000094064 00000 n
+0000097841 00000 n
+0000097898 00000 n
+0000097728 00000 n
+0000098011 00000 n
+0000097420 00000 n
+0000094421 00000 n
+0000097398 00000 n
+0000097560 00000 n
+0000099916 00000 n
+0000100029 00000 n
+0000099443 00000 n
+0000098135 00000 n
+0000099421 00000 n
+0000099591 00000 n
+0000099754 00000 n
+0000103427 00000 n
+0000103655 00000 n
+0000103307 00000 n
+0000100140 00000 n
+0000103285 00000 n
+0000107907 00000 n
+0000107964 00000 n
+0000107440 00000 n
+0000103818 00000 n
+0000107418 00000 n
+0000107588 00000 n
+0000107748 00000 n
+0000726146 00000 n
+0000112921 00000 n
+0000112978 00000 n
+0000113035 00000 n
+0000117201 00000 n
+0000112750 00000 n
+0000113091 00000 n
+0000111762 00000 n
+0000108075 00000 n
+0000111740 00000 n
+0000111934 00000 n
+0000112090 00000 n
+0000112252 00000 n
+0000112414 00000 n
+0000112582 00000 n
+0000117258 00000 n
+0000117314 00000 n
+0000117371 00000 n
+0000117144 00000 n
+0000117485 00000 n
+0000116508 00000 n
+0000113228 00000 n
+0000116486 00000 n
+0000116664 00000 n
+0000116825 00000 n
+0000116988 00000 n
+0000120940 00000 n
+0000120997 00000 n
+0000120820 00000 n
+0000117609 00000 n
+0000120798 00000 n
+0000128025 00000 n
+0000124291 00000 n
+0000124461 00000 n
+0000124171 00000 n
+0000121095 00000 n
+0000124149 00000 n
+0000128082 00000 n
+0000128139 00000 n
+0000128196 00000 n
+0000128252 00000 n
+0000127968 00000 n
+0000128366 00000 n
+0000127848 00000 n
+0000124585 00000 n
+0000127826 00000 n
+0000132469 00000 n
+0000132583 00000 n
+0000132000 00000 n
+0000128490 00000 n
+0000131978 00000 n
+0000132148 00000 n
+0000132308 00000 n
+0000554555 00000 n
+0000726264 00000 n
+0000136128 00000 n
+0000136241 00000 n
+0000136008 00000 n
+0000132720 00000 n
+0000135986 00000 n
+0000542247 00000 n
+0000139592 00000 n
+0000139649 00000 n
+0000139295 00000 n
+0000136365 00000 n
+0000139273 00000 n
+0000139435 00000 n
+0000143990 00000 n
+0000144047 00000 n
+0000143347 00000 n
+0000139760 00000 n
+0000143325 00000 n
+0000143503 00000 n
+0000143665 00000 n
+0000143827 00000 n
+0000148570 00000 n
+0000148513 00000 n
+0000148631 00000 n
+0000148047 00000 n
+0000144158 00000 n
+0000148025 00000 n
+0000148195 00000 n
+0000148354 00000 n
+0000153387 00000 n
+0000153330 00000 n
+0000153448 00000 n
+0000152863 00000 n
+0000148794 00000 n
+0000152841 00000 n
+0000153011 00000 n
+0000153173 00000 n
+0000157722 00000 n
+0000157779 00000 n
+0000157836 00000 n
+0000157665 00000 n
+0000157893 00000 n
+0000157545 00000 n
+0000153637 00000 n
+0000157523 00000 n
+0000726382 00000 n
+0000161512 00000 n
+0000161626 00000 n
+0000160534 00000 n
+0000158017 00000 n
+0000160512 00000 n
+0000160706 00000 n
+0000160869 00000 n
+0000161030 00000 n
+0000161192 00000 n
+0000161355 00000 n
+0000164414 00000 n
+0000164528 00000 n
+0000164294 00000 n
+0000161737 00000 n
+0000164272 00000 n
+0000168739 00000 n
+0000168626 00000 n
+0000168682 00000 n
+0000168569 00000 n
+0000168799 00000 n
+0000168100 00000 n
+0000164652 00000 n
+0000168078 00000 n
+0000168248 00000 n
+0000168410 00000 n
+0000173022 00000 n
+0000173083 00000 n
+0000172908 00000 n
+0000173143 00000 n
+0000172278 00000 n
+0000168936 00000 n
+0000172256 00000 n
+0000172434 00000 n
+0000172592 00000 n
+0000172751 00000 n
+0000177474 00000 n
+0000177417 00000 n
+0000177534 00000 n
+0000176621 00000 n
+0000173319 00000 n
+0000176599 00000 n
+0000176785 00000 n
+0000176942 00000 n
+0000177099 00000 n
+0000177258 00000 n
+0000181756 00000 n
+0000181870 00000 n
+0000181101 00000 n
+0000177697 00000 n
+0000181079 00000 n
+0000181257 00000 n
+0000181420 00000 n
+0000181588 00000 n
+0000726500 00000 n
+0000185142 00000 n
+0000185199 00000 n
+0000185255 00000 n
+0000185312 00000 n
+0000185028 00000 n
+0000185369 00000 n
+0000184726 00000 n
+0000182007 00000 n
+0000184704 00000 n
+0000184866 00000 n
+0000187969 00000 n
+0000188083 00000 n
+0000187666 00000 n
+0000185493 00000 n
+0000187644 00000 n
+0000187806 00000 n
+0000191111 00000 n
+0000191225 00000 n
+0000190809 00000 n
+0000188194 00000 n
+0000190787 00000 n
+0000190949 00000 n
+0000194599 00000 n
+0000194656 00000 n
+0000194126 00000 n
+0000191349 00000 n
+0000194104 00000 n
+0000194274 00000 n
+0000194437 00000 n
+0000197891 00000 n
+0000197948 00000 n
+0000197589 00000 n
+0000194754 00000 n
+0000197567 00000 n
+0000197729 00000 n
+0000201398 00000 n
+0000201512 00000 n
+0000201097 00000 n
+0000198072 00000 n
+0000201075 00000 n
+0000201237 00000 n
+0000726618 00000 n
+0000204729 00000 n
+0000204843 00000 n
+0000204252 00000 n
+0000201649 00000 n
+0000204230 00000 n
+0000204400 00000 n
+0000204562 00000 n
+0000208358 00000 n
+0000208529 00000 n
+0000208055 00000 n
+0000204954 00000 n
+0000208033 00000 n
+0000208195 00000 n
+0000212157 00000 n
+0000212214 00000 n
+0000212037 00000 n
+0000208679 00000 n
+0000212015 00000 n
+0000226934 00000 n
+0000217046 00000 n
+0000218258 00000 n
+0000219470 00000 n
+0000220696 00000 n
+0000221923 00000 n
+0000223153 00000 n
+0000224388 00000 n
+0000225620 00000 n
+0000215453 00000 n
+0000215567 00000 n
+0000215158 00000 n
+0000212338 00000 n
+0000215136 00000 n
+0000534846 00000 n
+0000528442 00000 n
+0000215298 00000 n
+0000226877 00000 n
+0000226996 00000 n
+0000216926 00000 n
+0000215755 00000 n
+0000216904 00000 n
+0000218189 00000 n
+0000217265 00000 n
+0000217285 00000 n
+0000218105 00000 n
+0000218084 00000 n
+0000219401 00000 n
+0000218477 00000 n
+0000218497 00000 n
+0000219317 00000 n
+0000219296 00000 n
+0000220627 00000 n
+0000219689 00000 n
+0000219709 00000 n
+0000220543 00000 n
+0000220522 00000 n
+0000221854 00000 n
+0000220915 00000 n
+0000220935 00000 n
+0000221770 00000 n
+0000221749 00000 n
+0000223084 00000 n
+0000222142 00000 n
+0000222162 00000 n
+0000223000 00000 n
+0000222979 00000 n
+0000224319 00000 n
+0000223372 00000 n
+0000223392 00000 n
+0000224235 00000 n
+0000224214 00000 n
+0000225551 00000 n
+0000224607 00000 n
+0000224627 00000 n
+0000225467 00000 n
+0000225446 00000 n
+0000226808 00000 n
+0000225839 00000 n
+0000225859 00000 n
+0000226724 00000 n
+0000226703 00000 n
+0000230078 00000 n
+0000230192 00000 n
+0000229958 00000 n
+0000227239 00000 n
+0000229936 00000 n
+0000726736 00000 n
+0000234311 00000 n
+0000234425 00000 n
+0000233850 00000 n
+0000230354 00000 n
+0000233828 00000 n
+0000233998 00000 n
+0000234155 00000 n
+0000238244 00000 n
+0000238301 00000 n
+0000237770 00000 n
+0000234600 00000 n
+0000237748 00000 n
+0000237918 00000 n
+0000238081 00000 n
+0000242063 00000 n
+0000242234 00000 n
+0000241761 00000 n
+0000238412 00000 n
+0000241739 00000 n
+0000241901 00000 n
+0000245842 00000 n
+0000245956 00000 n
+0000245371 00000 n
+0000242384 00000 n
+0000245349 00000 n
+0000245519 00000 n
+0000245680 00000 n
+0000248846 00000 n
+0000248960 00000 n
+0000248726 00000 n
+0000246067 00000 n
+0000248704 00000 n
+0000252710 00000 n
+0000251722 00000 n
+0000258042 00000 n
+0000252653 00000 n
+0000252829 00000 n
+0000251582 00000 n
+0000249084 00000 n
+0000251560 00000 n
+0000252498 00000 n
+0000726854 00000 n
+0000252429 00000 n
+0000251931 00000 n
+0000251951 00000 n
+0000252408 00000 n
+0000272600 00000 n
+0000260326 00000 n
+0000262125 00000 n
+0000258103 00000 n
+0000272662 00000 n
+0000263918 00000 n
+0000257928 00000 n
+0000258164 00000 n
+0000257127 00000 n
+0000252981 00000 n
+0000257105 00000 n
+0000257291 00000 n
+0000257451 00000 n
+0000257612 00000 n
+0000257768 00000 n
+0000276756 00000 n
+0000272543 00000 n
+0000272781 00000 n
+0000260184 00000 n
+0000258353 00000 n
+0000260161 00000 n
+0000272386 00000 n
+0000262053 00000 n
+0000260548 00000 n
+0000260569 00000 n
+0000260874 00000 n
+0000260853 00000 n
+0000262031 00000 n
+0000263846 00000 n
+0000262347 00000 n
+0000262368 00000 n
+0000262673 00000 n
+0000262652 00000 n
+0000263824 00000 n
+0000272314 00000 n
+0000264140 00000 n
+0000264161 00000 n
+0000266962 00000 n
+0000266939 00000 n
+0000267401 00000 n
+0000268886 00000 n
+0000269148 00000 n
+0000269429 00000 n
+0000269713 00000 n
+0000269953 00000 n
+0000270236 00000 n
+0000270503 00000 n
+0000270742 00000 n
+0000271018 00000 n
+0000271283 00000 n
+0000271499 00000 n
+0000271734 00000 n
+0000271850 00000 n
+0000271966 00000 n
+0000272082 00000 n
+0000272198 00000 n
+0000269126 00000 n
+0000269407 00000 n
+0000269691 00000 n
+0000269931 00000 n
+0000270214 00000 n
+0000270481 00000 n
+0000270720 00000 n
+0000270996 00000 n
+0000271261 00000 n
+0000271477 00000 n
+0000271712 00000 n
+0000271829 00000 n
+0000271945 00000 n
+0000272061 00000 n
+0000272177 00000 n
+0000272293 00000 n
+0000276697 00000 n
+0000276818 00000 n
+0000276229 00000 n
+0000272988 00000 n
+0000276206 00000 n
+0000276382 00000 n
+0000276541 00000 n
+0000279407 00000 n
+0000279524 00000 n
+0000279284 00000 n
+0000277021 00000 n
+0000279261 00000 n
+0000282256 00000 n
+0000282315 00000 n
+0000281957 00000 n
+0000279636 00000 n
+0000281934 00000 n
+0000282101 00000 n
+0000289007 00000 n
+0000288885 00000 n
+0000285459 00000 n
+0000288826 00000 n
+0000289070 00000 n
+0000285287 00000 n
+0000282427 00000 n
+0000285264 00000 n
+0000288180 00000 n
+0000288348 00000 n
+0000288508 00000 n
+0000288665 00000 n
+0000726975 00000 n
+0000288108 00000 n
+0000285682 00000 n
+0000285703 00000 n
+0000286017 00000 n
+0000285996 00000 n
+0000288085 00000 n
+0000315181 00000 n
+0000294912 00000 n
+0000298401 00000 n
+0000302160 00000 n
+0000306392 00000 n
+0000311246 00000 n
+0000291842 00000 n
+0000291901 00000 n
+0000291718 00000 n
+0000289290 00000 n
+0000291695 00000 n
+0000315122 00000 n
+0000315245 00000 n
+0000294749 00000 n
+0000292013 00000 n
+0000294726 00000 n
+0000314653 00000 n
+0000314810 00000 n
+0000314966 00000 n
+0000298329 00000 n
+0000295130 00000 n
+0000295151 00000 n
+0000295457 00000 n
+0000295436 00000 n
+0000298306 00000 n
+0000302088 00000 n
+0000298619 00000 n
+0000298640 00000 n
+0000298945 00000 n
+0000298924 00000 n
+0000302065 00000 n
+0000306320 00000 n
+0000302378 00000 n
+0000302399 00000 n
+0000302705 00000 n
+0000302684 00000 n
+0000306297 00000 n
+0000311174 00000 n
+0000306610 00000 n
+0000306631 00000 n
+0000306937 00000 n
+0000306916 00000 n
+0000311151 00000 n
+0000314581 00000 n
+0000311464 00000 n
+0000311485 00000 n
+0000311791 00000 n
+0000311770 00000 n
+0000314558 00000 n
+0000319188 00000 n
+0000319247 00000 n
+0000318956 00000 n
+0000319306 00000 n
+0000318832 00000 n
+0000315460 00000 n
+0000318809 00000 n
+0000323075 00000 n
+0000323368 00000 n
+0000323134 00000 n
+0000323193 00000 n
+0000323252 00000 n
+0000323016 00000 n
+0000323430 00000 n
+0000322533 00000 n
+0000319457 00000 n
+0000322510 00000 n
+0000322687 00000 n
+0000322848 00000 n
+0000327155 00000 n
+0000327214 00000 n
+0000327272 00000 n
+0000327331 00000 n
+0000327390 00000 n
+0000327038 00000 n
+0000327449 00000 n
+0000326914 00000 n
+0000323594 00000 n
+0000326891 00000 n
+0000330655 00000 n
+0000330714 00000 n
+0000330773 00000 n
+0000330832 00000 n
+0000330596 00000 n
+0000330891 00000 n
+0000330472 00000 n
+0000327574 00000 n
+0000330449 00000 n
+0000727100 00000 n
+0000334109 00000 n
+0000334283 00000 n
+0000333985 00000 n
+0000330990 00000 n
+0000333962 00000 n
+0000338477 00000 n
+0000338594 00000 n
+0000338353 00000 n
+0000334408 00000 n
+0000338330 00000 n
+0000342082 00000 n
+0000342314 00000 n
+0000341958 00000 n
+0000338706 00000 n
+0000341935 00000 n
+0000345429 00000 n
+0000345546 00000 n
+0000345305 00000 n
+0000342439 00000 n
+0000345282 00000 n
+0000349639 00000 n
+0000349698 00000 n
+0000349331 00000 n
+0000345658 00000 n
+0000349308 00000 n
+0000349476 00000 n
+0000353472 00000 n
+0000353531 00000 n
+0000353355 00000 n
+0000353648 00000 n
+0000353231 00000 n
+0000349810 00000 n
+0000353208 00000 n
+0000727225 00000 n
+0000357313 00000 n
+0000357488 00000 n
+0000357189 00000 n
+0000353747 00000 n
+0000357166 00000 n
+0000361228 00000 n
+0000361403 00000 n
+0000360914 00000 n
+0000357613 00000 n
+0000360891 00000 n
+0000361059 00000 n
+0000365019 00000 n
+0000365136 00000 n
+0000364895 00000 n
+0000361528 00000 n
+0000364872 00000 n
+0000368258 00000 n
+0000368317 00000 n
+0000367950 00000 n
+0000365261 00000 n
+0000367927 00000 n
+0000368095 00000 n
+0000371612 00000 n
+0000371845 00000 n
+0000371488 00000 n
+0000368429 00000 n
+0000371465 00000 n
+0000374736 00000 n
+0000374853 00000 n
+0000374427 00000 n
+0000371983 00000 n
+0000374404 00000 n
+0000374572 00000 n
+0000727350 00000 n
+0000378950 00000 n
+0000379009 00000 n
+0000379068 00000 n
+0000378891 00000 n
+0000379127 00000 n
+0000378583 00000 n
+0000374965 00000 n
+0000378560 00000 n
+0000378728 00000 n
+0000382043 00000 n
+0000382218 00000 n
+0000381919 00000 n
+0000379265 00000 n
+0000381896 00000 n
+0000382840 00000 n
+0000382899 00000 n
+0000382716 00000 n
+0000382343 00000 n
+0000382694 00000 n
+0000437596 00000 n
+0000387955 00000 n
+0000387022 00000 n
+0000387197 00000 n
+0000386382 00000 n
+0000382985 00000 n
+0000386359 00000 n
+0000524347 00000 n
+0000517328 00000 n
+0000386545 00000 n
+0000386702 00000 n
+0000386859 00000 n
+0000437537 00000 n
+0000437660 00000 n
+0000387831 00000 n
+0000387350 00000 n
+0000387809 00000 n
+0000437465 00000 n
+0000388178 00000 n
+0000388199 00000 n
+0000394514 00000 n
+0000394491 00000 n
+0000397790 00000 n
+0000399275 00000 n
+0000399510 00000 n
+0000399713 00000 n
+0000399916 00000 n
+0000400143 00000 n
+0000400379 00000 n
+0000400590 00000 n
+0000400848 00000 n
+0000401065 00000 n
+0000401317 00000 n
+0000401579 00000 n
+0000401849 00000 n
+0000402112 00000 n
+0000402316 00000 n
+0000402573 00000 n
+0000402824 00000 n
+0000403049 00000 n
+0000403272 00000 n
+0000403493 00000 n
+0000403784 00000 n
+0000404071 00000 n
+0000404374 00000 n
+0000404584 00000 n
+0000404894 00000 n
+0000405159 00000 n
+0000405442 00000 n
+0000405674 00000 n
+0000405962 00000 n
+0000406251 00000 n
+0000406575 00000 n
+0000406866 00000 n
+0000407168 00000 n
+0000407443 00000 n
+0000407726 00000 n
+0000407944 00000 n
+0000408171 00000 n
+0000408457 00000 n
+0000408734 00000 n
+0000408976 00000 n
+0000409180 00000 n
+0000409387 00000 n
+0000409627 00000 n
+0000409842 00000 n
+0000410180 00000 n
+0000410397 00000 n
+0000410620 00000 n
+0000410822 00000 n
+0000411091 00000 n
+0000411375 00000 n
+0000411587 00000 n
+0000411849 00000 n
+0000412093 00000 n
+0000412314 00000 n
+0000412555 00000 n
+0000412780 00000 n
+0000413028 00000 n
+0000413271 00000 n
+0000413506 00000 n
+0000413709 00000 n
+0000413950 00000 n
+0000414181 00000 n
+0000414406 00000 n
+0000414615 00000 n
+0000414826 00000 n
+0000415067 00000 n
+0000415325 00000 n
+0000415585 00000 n
+0000415798 00000 n
+0000416061 00000 n
+0000416327 00000 n
+0000416557 00000 n
+0000416791 00000 n
+0000416995 00000 n
+0000417199 00000 n
+0000417446 00000 n
+0000417695 00000 n
+0000417915 00000 n
+0000418166 00000 n
+0000418425 00000 n
+0000418658 00000 n
+0000418861 00000 n
+0000419075 00000 n
+0000419283 00000 n
+0000419504 00000 n
+0000419726 00000 n
+0000419974 00000 n
+0000420258 00000 n
+0000420468 00000 n
+0000420709 00000 n
+0000420955 00000 n
+0000421206 00000 n
+0000421449 00000 n
+0000421672 00000 n
+0000421889 00000 n
+0000422109 00000 n
+0000422360 00000 n
+0000422576 00000 n
+0000422782 00000 n
+0000423020 00000 n
+0000423249 00000 n
+0000423479 00000 n
+0000423699 00000 n
+0000423957 00000 n
+0000424172 00000 n
+0000424380 00000 n
+0000424641 00000 n
+0000424891 00000 n
+0000425139 00000 n
+0000425348 00000 n
+0000425570 00000 n
+0000425812 00000 n
+0000426066 00000 n
+0000426316 00000 n
+0000426539 00000 n
+0000426809 00000 n
+0000427053 00000 n
+0000427268 00000 n
+0000427517 00000 n
+0000427721 00000 n
+0000427920 00000 n
+0000428156 00000 n
+0000428403 00000 n
+0000428634 00000 n
+0000428899 00000 n
+0000429107 00000 n
+0000429347 00000 n
+0000429592 00000 n
+0000429834 00000 n
+0000430036 00000 n
+0000430295 00000 n
+0000430517 00000 n
+0000430736 00000 n
+0000430985 00000 n
+0000431201 00000 n
+0000431448 00000 n
+0000431669 00000 n
+0000431785 00000 n
+0000431901 00000 n
+0000432017 00000 n
+0000432133 00000 n
+0000432249 00000 n
+0000432365 00000 n
+0000432480 00000 n
+0000432596 00000 n
+0000432712 00000 n
+0000432828 00000 n
+0000432944 00000 n
+0000433060 00000 n
+0000433176 00000 n
+0000433292 00000 n
+0000433408 00000 n
+0000433524 00000 n
+0000433640 00000 n
+0000433756 00000 n
+0000433872 00000 n
+0000433988 00000 n
+0000434104 00000 n
+0000434220 00000 n
+0000434336 00000 n
+0000434452 00000 n
+0000434567 00000 n
+0000434683 00000 n
+0000434799 00000 n
+0000434915 00000 n
+0000435031 00000 n
+0000435147 00000 n
+0000435263 00000 n
+0000435379 00000 n
+0000435494 00000 n
+0000435610 00000 n
+0000435726 00000 n
+0000435842 00000 n
+0000435958 00000 n
+0000436074 00000 n
+0000436190 00000 n
+0000436306 00000 n
+0000436422 00000 n
+0000436538 00000 n
+0000436654 00000 n
+0000436770 00000 n
+0000436886 00000 n
+0000437002 00000 n
+0000437117 00000 n
+0000437233 00000 n
+0000437349 00000 n
+0000399488 00000 n
+0000399691 00000 n
+0000399894 00000 n
+0000400121 00000 n
+0000400357 00000 n
+0000400568 00000 n
+0000400826 00000 n
+0000401043 00000 n
+0000401295 00000 n
+0000401557 00000 n
+0000401827 00000 n
+0000402090 00000 n
+0000402294 00000 n
+0000402551 00000 n
+0000402802 00000 n
+0000403027 00000 n
+0000403250 00000 n
+0000403471 00000 n
+0000403762 00000 n
+0000404049 00000 n
+0000404352 00000 n
+0000404562 00000 n
+0000404872 00000 n
+0000405137 00000 n
+0000405420 00000 n
+0000405652 00000 n
+0000405940 00000 n
+0000406229 00000 n
+0000406553 00000 n
+0000406844 00000 n
+0000407146 00000 n
+0000407421 00000 n
+0000407704 00000 n
+0000407922 00000 n
+0000408149 00000 n
+0000408435 00000 n
+0000408712 00000 n
+0000408954 00000 n
+0000409158 00000 n
+0000409365 00000 n
+0000409605 00000 n
+0000409820 00000 n
+0000410158 00000 n
+0000410375 00000 n
+0000410598 00000 n
+0000410800 00000 n
+0000411069 00000 n
+0000411353 00000 n
+0000411565 00000 n
+0000411827 00000 n
+0000412071 00000 n
+0000412292 00000 n
+0000412533 00000 n
+0000412758 00000 n
+0000413006 00000 n
+0000413249 00000 n
+0000413484 00000 n
+0000413687 00000 n
+0000413928 00000 n
+0000414159 00000 n
+0000414384 00000 n
+0000414593 00000 n
+0000414804 00000 n
+0000415045 00000 n
+0000415303 00000 n
+0000415563 00000 n
+0000415776 00000 n
+0000416039 00000 n
+0000416305 00000 n
+0000416535 00000 n
+0000416769 00000 n
+0000416973 00000 n
+0000417177 00000 n
+0000417424 00000 n
+0000417673 00000 n
+0000417893 00000 n
+0000418144 00000 n
+0000418403 00000 n
+0000418636 00000 n
+0000418839 00000 n
+0000419053 00000 n
+0000419261 00000 n
+0000419482 00000 n
+0000419704 00000 n
+0000419952 00000 n
+0000420236 00000 n
+0000420446 00000 n
+0000420687 00000 n
+0000420933 00000 n
+0000421184 00000 n
+0000421427 00000 n
+0000421650 00000 n
+0000421867 00000 n
+0000422087 00000 n
+0000422338 00000 n
+0000422554 00000 n
+0000422760 00000 n
+0000422998 00000 n
+0000423227 00000 n
+0000423457 00000 n
+0000423677 00000 n
+0000423935 00000 n
+0000424150 00000 n
+0000424358 00000 n
+0000424619 00000 n
+0000424869 00000 n
+0000425117 00000 n
+0000425326 00000 n
+0000425548 00000 n
+0000425790 00000 n
+0000426044 00000 n
+0000426294 00000 n
+0000426517 00000 n
+0000426787 00000 n
+0000427031 00000 n
+0000427246 00000 n
+0000427495 00000 n
+0000427699 00000 n
+0000427899 00000 n
+0000428134 00000 n
+0000428381 00000 n
+0000428612 00000 n
+0000428877 00000 n
+0000429085 00000 n
+0000429325 00000 n
+0000429570 00000 n
+0000429812 00000 n
+0000430014 00000 n
+0000430273 00000 n
+0000430495 00000 n
+0000430714 00000 n
+0000430963 00000 n
+0000431179 00000 n
+0000431426 00000 n
+0000431647 00000 n
+0000431764 00000 n
+0000431880 00000 n
+0000431996 00000 n
+0000432112 00000 n
+0000432228 00000 n
+0000432344 00000 n
+0000432459 00000 n
+0000432575 00000 n
+0000432691 00000 n
+0000432807 00000 n
+0000432923 00000 n
+0000433039 00000 n
+0000433155 00000 n
+0000433271 00000 n
+0000433387 00000 n
+0000433503 00000 n
+0000433619 00000 n
+0000433735 00000 n
+0000433851 00000 n
+0000433967 00000 n
+0000434083 00000 n
+0000434199 00000 n
+0000434315 00000 n
+0000434431 00000 n
+0000434546 00000 n
+0000434662 00000 n
+0000434778 00000 n
+0000434894 00000 n
+0000435010 00000 n
+0000435126 00000 n
+0000435242 00000 n
+0000435358 00000 n
+0000435473 00000 n
+0000435589 00000 n
+0000435705 00000 n
+0000435821 00000 n
+0000435937 00000 n
+0000436053 00000 n
+0000436169 00000 n
+0000436285 00000 n
+0000436401 00000 n
+0000436517 00000 n
+0000436633 00000 n
+0000436749 00000 n
+0000436865 00000 n
+0000436981 00000 n
+0000437096 00000 n
+0000437212 00000 n
+0000437328 00000 n
+0000437444 00000 n
+0000441681 00000 n
+0000441740 00000 n
+0000441373 00000 n
+0000437776 00000 n
+0000441350 00000 n
+0000441518 00000 n
+0000727475 00000 n
+0000446292 00000 n
+0000446409 00000 n
+0000445475 00000 n
+0000441852 00000 n
+0000445452 00000 n
+0000445647 00000 n
+0000445811 00000 n
+0000445972 00000 n
+0000446129 00000 n
+0000447491 00000 n
+0000447608 00000 n
+0000447367 00000 n
+0000446521 00000 n
+0000447345 00000 n
+0000454788 00000 n
+0000450639 00000 n
+0000452327 00000 n
+0000454729 00000 n
+0000454968 00000 n
+0000450494 00000 n
+0000447720 00000 n
+0000450471 00000 n
+0000454573 00000 n
+0000452255 00000 n
+0000450862 00000 n
+0000450883 00000 n
+0000452232 00000 n
+0000454501 00000 n
+0000452550 00000 n
+0000452571 00000 n
+0000454478 00000 n
+0000461856 00000 n
+0000458113 00000 n
+0000459805 00000 n
+0000461797 00000 n
+0000461978 00000 n
+0000457959 00000 n
+0000455138 00000 n
+0000457936 00000 n
+0000461484 00000 n
+0000461640 00000 n
+0000459733 00000 n
+0000458336 00000 n
+0000458357 00000 n
+0000459710 00000 n
+0000461412 00000 n
+0000460028 00000 n
+0000460049 00000 n
+0000461389 00000 n
+0000467120 00000 n
+0000464431 00000 n
+0000467061 00000 n
+0000467184 00000 n
+0000464286 00000 n
+0000462135 00000 n
+0000464263 00000 n
+0000466903 00000 n
+0000466831 00000 n
+0000464654 00000 n
+0000464675 00000 n
+0000466748 00000 n
+0000466725 00000 n
+0000471561 00000 n
+0000471625 00000 n
+0000471689 00000 n
+0000471753 00000 n
+0000471817 00000 n
+0000471881 00000 n
+0000471945 00000 n
+0000472009 00000 n
+0000472073 00000 n
+0000472136 00000 n
+0000472200 00000 n
+0000472263 00000 n
+0000479351 00000 n
+0000471502 00000 n
+0000472327 00000 n
+0000470863 00000 n
+0000467339 00000 n
+0000470840 00000 n
+0000471026 00000 n
+0000471184 00000 n
+0000471343 00000 n
+0000727600 00000 n
+0000479415 00000 n
+0000479479 00000 n
+0000479543 00000 n
+0000479607 00000 n
+0000479671 00000 n
+0000479735 00000 n
+0000479292 00000 n
+0000479799 00000 n
+0000476807 00000 n
+0000472490 00000 n
+0000476784 00000 n
+0000477069 00000 n
+0000477227 00000 n
+0000477386 00000 n
+0000477545 00000 n
+0000477705 00000 n
+0000477864 00000 n
+0000478022 00000 n
+0000478182 00000 n
+0000478341 00000 n
+0000478500 00000 n
+0000478659 00000 n
+0000478817 00000 n
+0000478976 00000 n
+0000479134 00000 n
+0000484311 00000 n
+0000484370 00000 n
+0000489390 00000 n
+0000486979 00000 n
+0000484194 00000 n
+0000484429 00000 n
+0000483387 00000 n
+0000479949 00000 n
+0000483364 00000 n
+0000483559 00000 n
+0000483719 00000 n
+0000483877 00000 n
+0000484036 00000 n
+0000489331 00000 n
+0000489517 00000 n
+0000486855 00000 n
+0000484580 00000 n
+0000486832 00000 n
+0000489259 00000 n
+0000487202 00000 n
+0000487223 00000 n
+0000489236 00000 n
+0000490483 00000 n
+0000490542 00000 n
+0000490359 00000 n
+0000489658 00000 n
+0000490337 00000 n
+0000508315 00000 n
+0000508256 00000 n
+0000508374 00000 n
+0000492490 00000 n
+0000490641 00000 n
+0000492467 00000 n
+0000493481 00000 n
+0000493637 00000 n
+0000493793 00000 n
+0000493948 00000 n
+0000494104 00000 n
+0000494260 00000 n
+0000494416 00000 n
+0000494572 00000 n
+0000494727 00000 n
+0000494883 00000 n
+0000495039 00000 n
+0000495194 00000 n
+0000495350 00000 n
+0000495506 00000 n
+0000495662 00000 n
+0000495818 00000 n
+0000495973 00000 n
+0000496128 00000 n
+0000496284 00000 n
+0000496440 00000 n
+0000496595 00000 n
+0000496750 00000 n
+0000496906 00000 n
+0000497062 00000 n
+0000497217 00000 n
+0000497373 00000 n
+0000497529 00000 n
+0000497684 00000 n
+0000497838 00000 n
+0000497994 00000 n
+0000498150 00000 n
+0000498305 00000 n
+0000498459 00000 n
+0000498614 00000 n
+0000498770 00000 n
+0000498926 00000 n
+0000499082 00000 n
+0000499238 00000 n
+0000499394 00000 n
+0000499549 00000 n
+0000499704 00000 n
+0000499860 00000 n
+0000500016 00000 n
+0000500171 00000 n
+0000500325 00000 n
+0000500481 00000 n
+0000500636 00000 n
+0000500790 00000 n
+0000500946 00000 n
+0000501102 00000 n
+0000501258 00000 n
+0000501414 00000 n
+0000501569 00000 n
+0000501725 00000 n
+0000501880 00000 n
+0000502035 00000 n
+0000502191 00000 n
+0000502347 00000 n
+0000502503 00000 n
+0000502659 00000 n
+0000502814 00000 n
+0000502970 00000 n
+0000503126 00000 n
+0000503281 00000 n
+0000503435 00000 n
+0000503589 00000 n
+0000503745 00000 n
+0000503901 00000 n
+0000504056 00000 n
+0000504212 00000 n
+0000504368 00000 n
+0000504524 00000 n
+0000504679 00000 n
+0000504835 00000 n
+0000504991 00000 n
+0000505147 00000 n
+0000505302 00000 n
+0000505458 00000 n
+0000505614 00000 n
+0000505770 00000 n
+0000505924 00000 n
+0000506080 00000 n
+0000506236 00000 n
+0000506391 00000 n
+0000506547 00000 n
+0000506703 00000 n
+0000506858 00000 n
+0000507014 00000 n
+0000507169 00000 n
+0000507325 00000 n
+0000507481 00000 n
+0000507636 00000 n
+0000507790 00000 n
+0000507946 00000 n
+0000508102 00000 n
+0000517183 00000 n
+0000517242 00000 n
+0000509647 00000 n
+0000508473 00000 n
+0000509624 00000 n
+0000510188 00000 n
+0000510343 00000 n
+0000510499 00000 n
+0000510653 00000 n
+0000510809 00000 n
+0000510965 00000 n
+0000511121 00000 n
+0000511276 00000 n
+0000511432 00000 n
+0000511588 00000 n
+0000511743 00000 n
+0000511897 00000 n
+0000512053 00000 n
+0000512209 00000 n
+0000512364 00000 n
+0000512518 00000 n
+0000512674 00000 n
+0000512830 00000 n
+0000512985 00000 n
+0000513141 00000 n
+0000513297 00000 n
+0000513453 00000 n
+0000513607 00000 n
+0000513762 00000 n
+0000513917 00000 n
+0000514073 00000 n
+0000514226 00000 n
+0000514382 00000 n
+0000514538 00000 n
+0000514693 00000 n
+0000514849 00000 n
+0000515005 00000 n
+0000515161 00000 n
+0000515317 00000 n
+0000515472 00000 n
+0000515628 00000 n
+0000515784 00000 n
+0000515940 00000 n
+0000516094 00000 n
+0000516250 00000 n
+0000516406 00000 n
+0000516561 00000 n
+0000516717 00000 n
+0000516872 00000 n
+0000517028 00000 n
+0000727725 00000 n
+0000517468 00000 n
+0000518002 00000 n
+0000523960 00000 n
+0000523983 00000 n
+0000524006 00000 n
+0000524029 00000 n
+0000524051 00000 n
+0000524084 00000 n
+0000524487 00000 n
+0000525025 00000 n
+0000528107 00000 n
+0000528130 00000 n
+0000528152 00000 n
+0000528175 00000 n
+0000528197 00000 n
+0000528232 00000 n
+0000528581 00000 n
+0000529146 00000 n
+0000534272 00000 n
+0000534295 00000 n
+0000534318 00000 n
+0000534341 00000 n
+0000534363 00000 n
+0000534396 00000 n
+0000534985 00000 n
+0000535527 00000 n
+0000541891 00000 n
+0000541914 00000 n
+0000541937 00000 n
+0000541960 00000 n
+0000541982 00000 n
+0000542014 00000 n
+0000542386 00000 n
+0000542920 00000 n
+0000554048 00000 n
+0000554072 00000 n
+0000554095 00000 n
+0000554118 00000 n
+0000554140 00000 n
+0000554172 00000 n
+0000554694 00000 n
+0000555231 00000 n
+0000562374 00000 n
+0000562397 00000 n
+0000562420 00000 n
+0000562443 00000 n
+0000562465 00000 n
+0000562498 00000 n
+0000562901 00000 n
+0000563447 00000 n
+0000566289 00000 n
+0000566312 00000 n
+0000566334 00000 n
+0000566357 00000 n
+0000566379 00000 n
+0000566411 00000 n
+0000566766 00000 n
+0000567300 00000 n
+0000575768 00000 n
+0000575791 00000 n
+0000575814 00000 n
+0000575837 00000 n
+0000575859 00000 n
+0000575891 00000 n
+0000576372 00000 n
+0000576909 00000 n
+0000589514 00000 n
+0000589538 00000 n
+0000589561 00000 n
+0000589585 00000 n
+0000589607 00000 n
+0000589638 00000 n
+0000590184 00000 n
+0000590729 00000 n
+0000594974 00000 n
+0000594997 00000 n
+0000595019 00000 n
+0000595042 00000 n
+0000595064 00000 n
+0000595095 00000 n
+0000595478 00000 n
+0000596015 00000 n
+0000600450 00000 n
+0000600473 00000 n
+0000600495 00000 n
+0000600518 00000 n
+0000600540 00000 n
+0000600571 00000 n
+0000600956 00000 n
+0000601496 00000 n
+0000610998 00000 n
+0000611021 00000 n
+0000611044 00000 n
+0000611067 00000 n
+0000611089 00000 n
+0000611122 00000 n
+0000611569 00000 n
+0000612104 00000 n
+0000617662 00000 n
+0000617685 00000 n
+0000617708 00000 n
+0000617731 00000 n
+0000617753 00000 n
+0000617785 00000 n
+0000618160 00000 n
+0000618705 00000 n
+0000623202 00000 n
+0000623225 00000 n
+0000623248 00000 n
+0000623271 00000 n
+0000623293 00000 n
+0000623326 00000 n
+0000623769 00000 n
+0000624304 00000 n
+0000637322 00000 n
+0000637346 00000 n
+0000637369 00000 n
+0000637393 00000 n
+0000637415 00000 n
+0000637448 00000 n
+0000637895 00000 n
+0000638429 00000 n
+0000643323 00000 n
+0000643346 00000 n
+0000643368 00000 n
+0000643391 00000 n
+0000643413 00000 n
+0000643446 00000 n
+0000643809 00000 n
+0000644343 00000 n
+0000661749 00000 n
+0000661773 00000 n
+0000661796 00000 n
+0000661820 00000 n
+0000661842 00000 n
+0000661875 00000 n
+0000662595 00000 n
+0000663132 00000 n
+0000682890 00000 n
+0000682914 00000 n
+0000682937 00000 n
+0000682961 00000 n
+0000682983 00000 n
+0000683015 00000 n
+0000683747 00000 n
+0000684286 00000 n
+0000699173 00000 n
+0000699197 00000 n
+0000699220 00000 n
+0000699244 00000 n
+0000699266 00000 n
+0000699299 00000 n
+0000699855 00000 n
+0000700392 00000 n
+0000704397 00000 n
+0000704420 00000 n
+0000704442 00000 n
+0000704465 00000 n
+0000704487 00000 n
+0000704521 00000 n
+0000704871 00000 n
+0000705406 00000 n
+0000710753 00000 n
+0000710776 00000 n
+0000710799 00000 n
+0000710822 00000 n
+0000710844 00000 n
+0000710877 00000 n
+0000711273 00000 n
+0000711812 00000 n
+0000725143 00000 n
+0000725167 00000 n
+0000725190 00000 n
+0000725214 00000 n
+0000725236 00000 n
+0000725269 00000 n
+0000727805 00000 n
+0000727925 00000 n
+0000728046 00000 n
+0000728172 00000 n
+0000728255 00000 n
+0000736910 00000 n
+0000743339 00000 n
+0000743380 00000 n
+0000743420 00000 n
+0000743601 00000 n
+trailer
+<<
+/Size 2139
+/Root 2137 0 R
+/Info 2138 0 R
+>>
+startxref
+743808
+%%EOF
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.tex
new file mode 100644
index 00000000000..271daa7758c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/t1lib_doc.tex
@@ -0,0 +1,98 @@
+%----------------------------------------------------------------------------
+% ----- File: t1lib_doc.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2005-05-18
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library Lincense. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independ from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+\documentclass[11pt,a4paper]{article}
+\usepackage[english]{babel}
+\usepackage{makeidx}
+\topmargin-1cm
+\oddsidemargin0cm
+\textwidth16cm
+\textheight24cm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Added by NGUYEN-DAI Quy and edited by RMz)
+%%
+%% - Adapted to recent TeX developments according to suggestions
+%% of Reinhard Kotucha, a well-known TeX-Guru (2004-11-27, RMz)
+%%
+\ifx\pdfoutput\undefined\chardef\pdfoutput=0 \fi
+\ifcase\pdfoutput
+ \usepackage{graphicx}
+\or
+ \usepackage{graphicx}
+ \usepackage[a4paper,pageanchor,hyperfigures,breaklinks,%
+ colorlinks,citecolor=blue,urlcolor=red,linkcolor=magenta]{hyperref}
+ \pdfcompresslevel=9
+\fi
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{3}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%--- Some definitions
+\def\tonelib{{\mdseries\ttfamily t1lib}}\relax
+\def\libversion{5.1.0}\relax
+\def\libdate{Mai, 18, 2005}\relax
+\def\precorr{\par\vbox\bgroup}\relax
+\def\postcorr{\unskip\vskip-2mm\hrule
+\vbox to 0pt{\kern-17.7pt\parskip0pt\noindent\llap{\fbox{$\mathcal{F}()\Rightarrow$}\kern0pt}\vss}
+\vskip3mm\egroup\noindent}\relax
+\makeindex
+%
+%- hyphenation exceptions:
+\hyphenation{bit-maps bit-map}
+%
+\begin{document}
+\thispagestyle{empty}
+\begin{center}
+\leavevmode
+\vskip2cm
+{\Huge\bfseries T1Lib}\\[5mm]
+
+{\Large\sl Version \libversion\ -- \libdate}\\[2.5cm]
+
+{\LARGE\bf A Library for Generating}\\[5mm]
+{\LARGE\bf Character Bitmaps from}\\[5mm]
+{\LARGE\bf Adobe Type 1 Fonts}\\[2cm]
+{\Large\sc Rainer Menzner}\\[2mm]
+\end{center}
+\newpage
+\tableofcontents
+%-- Introduction
+\input intro.tex
+%-- Getting started
+\input getstart.tex
+%-- Program xglyph
+\input xglyph.tex
+%-- Program type1afm
+\input type1afm.tex
+%-- Using t1lib
+\input ut1lib.tex
+%-- X11-Interface
+\input xinterface.tex
+%-- Internals
+\input internals.tex
+%-- Print an alphabetically sorted function index
+\def\indexname{Function Index\addcontentsline{toc}{section}{\hskip1emFunction Index}}%
+\printindex
+\end{document}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/type1afm.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/type1afm.tex
new file mode 100644
index 00000000000..9b43561d42a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/type1afm.tex
@@ -0,0 +1,53 @@
+%----------------------------------------------------------------------------
+% ----- File: type1afm.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2001-04-01
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library Lincense. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independ from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{The Program {\ttfamily type1afm}}
+\label{type1afm}%
+\verb+type1afm+ is a simple commandline tool (about 150 lines C source
+code) that allows to generate an AFM file from a Type 1 font
+program. It is intended for people who want to use Type 1 font files
+that come without AFM files with \tonelib\ (or other software that
+requires AFM files). The syntax is \\[0.5cm]
+\verb+type1afm [-l] <fontfile1> [<fontfile2> <fontfile3> ...] +\\[0.5cm]
+For each fontfile specified on the commandline, an AFM file with the
+corresponding name is generated in the current directory.
+Most of the work is done in \tonelib-internal functions. See section
+\ref{missingafmfiles} on how AFM information is generated and written
+to files.
+
+It is usually not desireable to leave a logfile wherever the utility
+has been executed. Thus by default no logfile is generated. This
+behaviour can be changed by specifying the optional parameter
+\verb+-l+. This causes a logfile with \verb+T1LOG_DEBUG+ as loglevel
+to be written to the disk. Its name will be \verb+t1lib.log+ (see
+\ref{logfile}).
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/ut1lib.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/ut1lib.tex
new file mode 100644
index 00000000000..b0fd2b42fe0
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/ut1lib.tex
@@ -0,0 +1,4083 @@
+%----------------------------------------------------------------------------
+% ----- File: ut1lib.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2005-05-18
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library License. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the top level
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independ from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{Using \tonelib}
+This section describes in detail how to use \tonelib. I have tried to
+to describe the stuff in the order a new user would learn best and a new user
+would need to use the functions.
+
+
+\subsection{Compiling and Linking \tonelib-Programs}
+\label{compilingprograms}%
+A program that wants to use functions from the library must include
+the appropriate headers at compile time and then be linked with the
+appropriate libraries. Since V. 0.6-beta the X11 interface is separated
+from the \tonelib\ pivotal stuff. This yields advantages for programs that
+don't use the X11 rastering functions on systems where X11 is
+installed.
+The following applies to programs that do not use the X11 rastering
+functions:
+\begin{itemize}
+\item Include the file \verb+t1lib.h+. All definitions and declarations
+ needed at compile time are included in this file.
+\item \verb+libt1.a+ or \verb+libt1.so+ respectively must be linked to the
+ program.
+\end{itemize}
+In contrast, a program that uses the X11 interface must adhere to the
+following scheme:
+\begin{itemize}
+\item \verb+t1lib.h+ and \verb+t1libx.h+ must be included in this
+ order. Furthermore, \verb+t1libx.h+ includes \verb+X11/Xlib.h+ if
+ it is not already included.
+\item The libraries \verb+libt1.a+/\verb+libt1.so+ and
+ \verb+libt1x.a+/\verb+libt1x.so+ must be linked to the executable.
+ The correct order is \verb+-lt1x -lt1+ since the X interface uses
+ functions from the latter. Also, the X11 library must appear in the
+ library list after \verb+-lt1x+.
+\end{itemize}
+The Makefiles for \verb+xglyph+ and \verb+type1afm+ are typical
+examples for both configurations.
+
+
+\subsection{Querying and Setting Fundamental Configuration Parameters of \tonelib}
+\label{queryconfiguration}%
+It might be necessary to know whether \tonelib\ is compiled with or without
+X11 interface. At compile time a programmer can check for the X11 interface by
+stating
+\begin{verbatim}
+#ifdef T1LIB_X11_SUPPORT
+\end{verbatim}
+after including \verb+t1libx.h+. If \verb+T1LIB_X11_SUPPORT+ is not defined,
+the X11 interface is not configured and compiled.
+
+At runtime, a program can check for the X11 interface by a call to
+\precorr
+\begin{verbatim}
+ int T1_QueryX11Support( void)
+\end{verbatim}\index{\verb+T1_QueryX11Support()+}\postcorr
+It returns \verb+1+ if the X11 interface is present and \verb+0+ otherwise.
+
+Notice that querying X11 support at runtime and compile time tends to
+be pretty useless starting with V.~0.6-beta. Any decision can be done
+by examining the existence of the \verb+t1x+-library and the
+\verb+t1libx.h+ header file. The definition and the function described
+above are thus only provided for compatibility with pre-0.6 versions
+of \tonelib.
+
+Some remarks on the general data format of bitmaps and should be given
+here. \tonelib\ internally always generates bitmaps in the way that appears to
+be natural for them: The first pixel corresponds to the least significant bit
+in a byte (or word/longword). Bytes are always arranged in memory the way,
+that the first byte is at the lowest address and the next byte at the
+following address. This convention is called LSBFirst which stands for Least
+Significant Bit/Byte First. It is the natural way of data alignment on
+machines with {\em Little Endian} data representation. In contrast MSBFirst
+stands for Most Significant Bit/Byte First which is the natural kind of data
+representation on Big Endian machines.
+A glyph's scanlines are always aligned in LSBFirst-type, no matter on what
+machine \tonelib\ is running.
+
+What has been said above, strictly does only apply to non antialiased glyphs,
+i.e., real bitmaps. Antialiased glyphs have their gray values coded in the
+representation that is natural for the machine \tonelib\ is running on. For
+example, if \tonelib\ runs on a Big Endian machine, the gray values are in Big
+Endian. The X11 displaying functions automatically handle this correct.
+
+Scanlines of \tonelib-glyphs may be padded to 8, 16 or 32 bit. Padding to
+higher values will consume more memory for the glyphs, but might speed up
+concatenating of bitmaps as described in \ref{generatingbitmaps}. This applies
+to machines with Little Endian representation as, for example, Intel's
+$x$86 series. On these machines 16 or 32 bits can be placed into the
+target bitmap in one step. On machines with Big Endian representation, for
+example, Motorola 680$x$0 series, this is currently not possible. However,
+using a higher padding value could still yield a better performance since the
+application could work on larger units than a byte.
+
+The default padding value in \tonelib\ is 8 bit. The padding value can be
+specified at runtime by means of calling
+\precorr
+\begin{verbatim}
+ int T1_SetBitmapPad( int pad)
+\end{verbatim}\index{\verb+T1_SetBitmapPad()+}\postcorr
+\verb+pad+ must be one of `8', `16' or `32'. The call will only be successful
+if executed before initialization of \tonelib. This a security mechanism which
+prevents from having glyphs with distinct padding values. The return value is
+0 if successful and -1 if \verb+pad+ was invalid or \tonelib\ had already been
+initialized.
+
+There is a further restriction concerning the padding value. Setting it to 32
+is only possible if the machine has an ANSI C integer type of 64 bits. This
+condition is automatically checked by the \verb+configure+ script of \tonelib.
+If such an integer type is not present (or has to be emulated as e.g.\
+\verb+long long+ in \verb+gcc+) there would not result any performance gain.
+If a specified padding value is rejected, \verb+T1_errno+ is set
+appropriately.
+
+An application can query the current padding value by calling
+\precorr
+\begin{verbatim}
+ int T1_GetBitmapPad( void)
+\end{verbatim}\index{\verb+T1_GetBitmapPad()+}\postcorr
+The returned value is the padding value. This function can be called before or
+after initialization of \tonelib.
+
+Another function usually be called near
+initialization is
+\precorr
+\begin{verbatim}
+ int T1_SetDeviceResolutions(float x_res, float y_res)
+\end{verbatim}\index{\verb+T1_SetDeviceResolutions()+}\postcorr
+This function allows setting the resolution of
+your device (screen). The values must be given in dpi. The default
+resolution, 72 dpi, implies that a pixel in device space equals 1
+bp. This function may be called before or after initialization. The
+only restriction is that no size dependent data must be
+available. Changing the resolution when bitmaps are already cached would
+result in inconsistent bitmap-sizes for bitmaps generated before and
+after the call to \verb+T1_SetDeviceResolutions()+.
+The function checks whether initialization has already been done. If
+not, all is OK since no size-dependent data for any font can exist. If
+initialization has been done, it checks for every font whether size
+dependent data exists. If there's any size dependent data for any
+font, \verb+T1_SetDeviceResolutions()+ will return \verb+-1+ without
+having set the new resolution. Otherwise the specified resolution will
+be set and the function will return \verb+0+.
+If you really need to set
+another resolution in the middle of a session, all size-specific data
+should explicitly be removed from memory beforehand. This can be
+achieved using \verb+T1_DeleteAllSizes()+ (see \ref{deletingdata}).
+
+Notice that the device resolution need not be set at all if the default
+resolution of 72 dpi in horizontal and vertical direction is OK. This function
+is primarily intended to be prepared for applications with a device aspect
+ratio different from 1.
+
+\subsection{Initialization of \tonelib\ and Related Things}
+\label{initialization}%
+In this section we should cover the initialization, part of which has already
+been described in \ref{runtimesetup} in some more detail. This gives the user
+the chance to fine-tune the initialization for specific applications.
+
+Prior to be able to do anything useful with \tonelib, the library has to be
+initialized. Generally speaking, the purpose of the initialization is to tell
+\tonelib\ which font files are associated with which font ID's. The existence
+or accessibility of the font files is also assured at this point. Hence, file
+name search paths for Type 1 font files, AFM files and encoding files have
+also to be known at this time.
+
+The configuration file and the font database file play a central r\^ole
+during initialization. While the configuration file contains path
+specifications and a font database specification, the font database file
+specifies the relation between font ID's and font filenames.
+The format of both these files is described in \ref{runtimesetup} and not
+repeated here.
+
+A further purpose of the initialization is to set certain flags that prevent
+other quantities from being modified at a later time. For example, the padding
+value must be unique to all glyphs and consequently it is not allowed to be
+changed after initialization has been performed.
+
+The initialization is started by a call to the function
+\precorr
+\begin{verbatim}
+ void *T1_InitLib( int log)
+\end{verbatim}\index{\verb+T1_InitLib()+}\postcorr
+The parameter \verb+log+ can be interpreted as a mode specification that
+influences certain parts of the initialization. In fact it should consist of
+one or more \verb+#define+s from \verb+t1lib.h+. At minimum, \verb+log+
+should be either \verb+LOGFILE+ or \verb+NO_LOGFILE+. If \verb+LOGFILE+ is
+specified, a log file is written while the application runs, and
+\verb+NO_LOGFILE+ suppresses the generation of a logfile. For information the
+\tonelib-logfile see \ref{logfile}. In addition to this,
+\verb+IGNORE_CONFIGFILE+ and \verb+IGNORE_FONTDATABASE+ can be bitwise OR'ed
+(using ``\verb+|+'') to the \verb+log+-value. The purpose of this is described
+later in this section. A further flag that might find its way into the value
+of \verb+log+ is \verb+T1_AA_CACHING+. A discussion of this topic is given in
+\ref{aacaching}.
+The \verb+T1_NO_AFM+ completely suppresses usage of AFM data, no matter if an
+AFM file could have been found using the current search paths or not. This
+saves time for loading a font and is recommended if an application is known to
+be restricted on functions that do not access AFM data. The consequences of
+using this flag are covered somewhat more detailed in \ref{generatingafminfo}.
+
+
+\subsubsection{Standard Initialization}
+\label{standardinitialization}%
+The term ``standard initialization'' means, that none of the path manipulating
+and font database manipulating actions described later has been
+performed. Also, a standard initialization excludes the use of
+\verb+IGNORE_CONFIGFILE+ and \verb+IGNORE_FONTDATABASE+. If these conditions
+are met, the following happens at initialization time:
+\begin{enumerate}
+\item The padding value, either being the default value or a value specified
+ by the user before, is assigned.
+\item Next, depending on the value of \verb+log+, a logfile is tried to be
+ opened. From this point on, depending on the loglevel and the value of
+ \verb+log+ the actions are logged.
+\item The endianess of the machine \tonelib\ is running on is checked.
+\item A configuration file is searched in the following order:
+ \begin{itemize}
+ \item The process' environment is checked for the entry \verb+T1LIB_CONFIG+
+ and if found, its value is interpreted as the filename of the configuration
+ file (see \ref{runtimesetup}).
+ \item If no file was found, the user's home directory is searched for a file
+ named \verb+.t1librc+. In case it exists, it is used as a
+ \tonelib-configuration file.
+ \item If still no configuration file was found, the global configuration
+ file will be tried to be opened.
+ \item If this also does not succeed, all file search paths are left to be
+ ``.'' and the default font database is \verb+FontDataBase+.
+ \end{itemize}
+ It should be noted that the first match wins when searching the configuration
+ file. Only the first one found is examined.
+\item The font database file(s) are tried to be opened and read. This process
+ is in detail described in \ref{fontdatabase}.
+
+ If after scanning the complete list of font databases, no font definitions
+ have been performed, \verb+T1_InitLib()+ will return with a \verb+NULL+
+ pointer indicating the initialization has failed.
+\item The number of fonts declared in the database is stored. Note that this
+ number of declared fonts must be greater than zero.
+\item A flag is set to indicate \tonelib\ is initialized and the pointer to
+ the top most area of the global data structures is returned to the
+ application. This pointer is guaranteed to be not \verb+NULL+.
+\end{enumerate}
+For some applications, the described initialization scheme appears to be too
+inflexible and overkill. It is well suited for large applications that use
+lots of fonts and where it should be possible to add new fonts without
+modifying the application itself. For small commandline applications like
+\verb+type1afm+ (see \ref{type1afm}), which are designed to read a few font file
+names from the commandline, the overhead in configuration file searching and
+path reading is much too large. Moreover, to insist on a font database file
+might grow to a real disadvantage. In the subsequent paragraphs we should thus
+discuss how we can deviate from the initialization scheme described above.
+
+\subsubsection{Fine Control over Font Databases and File Search Paths}
+\label{manipulatingpaths}%
+First, it is important to mention that it is generally possible to force
+\verb+T1_InitLib()+ to skip steps 4 and / or 5 as described above.
+
+The configuration file is discarded by OR'ing the parameter \verb+log+ of
+\verb+T1_InitLib()+ with \verb+IGNORE_CONFIGFILE+.
+The default paths or the paths explicitly specified by the application before
+are then left untouched during initialization.
+
+Discarding the font database specification from the configuration file is
+achieved by bitwise OR'ing \verb+log+ with \verb+IGNORE_FONTDATABASE+. The
+result after initialization will be an empty database. This is valid in V.\
+0.5 and newer since fonts may be added to the database at runtime.
+
+Using the two flags described above, an installed setup can be ignored and an
+application may have complete control over its search paths. There are a
+number of functions for this purpose and each of these functions allows to
+specify exactly {\em one} path element at a given time. Using special
+characters like white space or path separators in a path element is thus not
+an issue.
+
+The font database may explicitly be specified by the
+application using \precorr
+\begin{verbatim}
+ int T1_SetFontDataBase( char *filename)
+\end{verbatim}\index{\verb+T1_SetFontDataBase()+}\postcorr
+\verb+filename+ is the pointer to a string containing the name of the font
+database file that is to be examined. This function replaces any set of font
+databases setup previously and is thus usually to be called before
+\verb+T1_InitLib()+. A call to this function after initialization will return
+the result -1 and \verb+T1_errno+ will be set to
+\verb+T1ERR_OP_NOT_PERMITTED+. For the special case that the font database is
+still epmty after initialization this function may also be called after
+initialization. But in any case, the database must be empty! For the latter
+cases, fonts specified in the new database file are then immediately inserted
+into the database. In case of success, the number of available fonts is returned.
+
+There is also the function \precorr
+\begin{verbatim}
+ int T1_AddFontDataBase( int mode, char *filename)
+\end{verbatim}\index{\verb+T1_AddFontDataBase()+}\postcorr
+It can be called at any time and \verb+filename+ is the string of the new font
+database's file name. If called before initialization, the parameter
+\verb+mode+ can be either \verb+T1_APPEND_PATH+ or \verb+T1_PREPEND_PATH+ and
+the name of the new font database simply is either appended or prepended to
+the existing list of font databases. Then, the function returns $0$.
+
+If the function is called after initialization, the parameter \verb+mode+ is
+ignored and the new database is appended in any case, because this is the only
+meaningful action. Furthermore, the new database is immediately loaded and the
+function returns a number indicating the number of available fonts
+(which can also be 0). In the case of an error, \verb+T1_AddFontDataBase()+
+returns $-1$.
+
+There is also a pair of functions that act on the list of XLFD font database
+files,
+\precorr
+\begin{verbatim}
+ int T1_SetFontDataBaseXLFD( char *filename)
+\end{verbatim}\index{\verb+T1_SetFontDataBaseXLFD()+}\postcorr
+\precorr
+\begin{verbatim}
+ int T1_AddFontDataBaseXLFD( char *filename)
+\end{verbatim}\index{\verb+T1_AddFontDataBaseXLFD()+}\postcorr
+These functions have exactly the same syntax and semantics as the functions
+just described above. Standard font database files and XLFD font database
+files are handled in separate lists internally, so that setting the XLFD font
+database will not affect explicit standard font database settings. However,
+the default standard font database (\verb+./FontDataBase+) will be cleared
+when at least one XLFD font database is specified. This is because the default
+font database is meant as a fallback, and the fallback case is no longer given
+if a XLFD font database has been specified.
+
+A similar manipulation as just described for font database files, is
+possible for the searchpaths. (Re-)Defining a search
+path is done by calling
+\precorr
+\begin{verbatim}
+ int T1_SetFileSearchPath( int type, char *pathname)
+\end{verbatim}\index{\verb+T1_SetFileSearchPath()+}\postcorr
+before calling \verb+T1_InitLib()+, or respectively, before the database
+contains any fonts. An attempt to set the file searchpaths when the database
+is no longer empty is denied. The reason is that it is not wise to override
+the searchpaths which had been valid previously during the verification of the
+existence of font files. Such paths should thus not be removed. The parameter
+\verb+pathname+ points to the string that contains the pathname that should be
+used as searchpath. The parameter \verb+type+ is any OR'ed combination of
+\verb+T1_PFAB_PATH+, \verb+T1_AFM_PATH+ and \verb+T1_ENC_PATH+. These tell the
+function to set the search paths for Type 1 font files, AFM files and encoding
+files, respectively. In case of an error \verb+-1+ is returned and otherwise
+\verb+0+.
+
+Extending the file searchpaths before {\em and} after initialization
+is possible using
+\precorr
+\begin{verbatim}
+ int T1_AddToFileSearchPath( int pathtype, int mode, char *pathname)
+\end{verbatim}\index{\verb+T1_AddToFileSearchPath()+}\postcorr
+This might be useful to locate font files that were of no interest
+at the time of initialization.
+\verb+pathname+ is the pointer to the string that should be added to the
+searchpaths. Only {\em one} particular path element may be specified in one
+call. What searchpaths are affected is determined by the parameter
+\verb+pathtype+. Again, similar to described above, any
+OR'ed combination of \verb+T1_PFAB_PATH+, \verb+T1_AFM_PATH+ and
+\verb+T1_ENC_PATH+ is valid. There are two ways to extend an existing
+searchpath which are specified by the \verb+mode+ parameter. It must be either
+\verb+T1_APPEND_PATH+ or \verb+T1_PREPEND_PATH+, which causes the new path
+element to be appended or prepended to the existent path respectively.
+Since an existent path specification is not overwritten by
+\verb+T1_AddToFileSearchPath()+, this function may be called at any time
+before or after initialization.
+
+It might also be of interest to query the current file search
+paths and font databases. \tonelib\ provides
+\precorr
+\begin{verbatim}
+ char *T1_GetFileSearchPath( int type)
+\end{verbatim}\index{\verb+T1_GetFileSearchPath()+}\postcorr
+for querying search paths. Again, the parameter \verb+type+ determines what
+search path is returned. Exactly one of \verb+T1_PFAB_PATH+,
+\verb+T1_AFM_PATH+, \verb+T1_ENC_PATH+ and \verb+T1_FDB_PATH+ should be
+specified. If more than one path is specified, the first match wins and only
+one path is returned. The types will be checked in the order
+\verb+T1_PFAB_PATH+, \verb+T1_AFM_PATH+, \verb+T1_ENC_PATH+ and
+\verb+T1_FDB_PATH+. Here, \verb+T1_FDB_PATH+ indicates an interest in the list
+of font databases. The paths are separated using the current path separator.
+
+
+\subsubsection{Adding Fonts to the Database}
+\label{addingfonts}%
+Extending the font database is possible at any time after initialization. In
+addition to using \verb+T1_AddFontDataBase()+ (see above), it is done via a
+call to \precorr
+\begin{verbatim}
+ int T1_AddFont( char *fontfilename)
+\end{verbatim}\index{\verb+T1_AddFont()+}\postcorr
+\verb+fontfilename+ is the pointer to the filename string. The following
+actions take place:
+\begin{itemize}
+\item The font file is searched using the current search path specifications.
+\item If the file has been located, it is checked whether the font database
+ contains enough memory to hose an additional font.
+ If so, the font filename
+ is stored and the function returns \verb+new_ID+, which is the font ID that
+ will be associated with this font in the future.
+\item If there was no free memory for an additional font, the memory is
+ reallocated to a greater size. This involves also resetting the new
+ area. Finally the value \verb+new_ID+ is returned.
+\end{itemize}
+If a negative value is returned the function failed. \verb+-1+ indicates the
+font file could not be located. \verb+-2+ or \verb+-3+ are returned if a
+memory allocation failure occurs.
+
+
+\subsubsection{Summary of Search Path Handling}
+
+Since the exact handling of search path specifications at the several stages
+may appear somewhat confusing we shall summarize the exact rules now:
+\begin{enumerate}
+\item {\bfseries Before Initialization}\\
+ Default paths are not yet setup. Each call of one of the \verb+T1_Set...()+
+ functions described above establishes a completely new respective path. Each
+ call of one of the \verb+T1_Add...()+ functions extends the respective path
+ in the desired manner, or creates a new respective path if previously no
+ path existed.
+\item {\bfseries At the Beginning of the Initialization}\\
+ Each path type for which a path had not already been explicitly created
+ using the\\ \verb+T1_Set...()+ or \verb+T1_Add...()+ functions receives a
+ default value. This is ``\verb+.+'' for the file search paths and
+ \verb+./FontDataBase+ for the font database.
+\item {\bfseries During Initialization}\\
+ Each path element read from the configuration file overwrites an existing
+ respective default path but preserves an existing respective explicitly
+ setup path by appending to the latter. The newly setup search path is used
+ to locate files while scanning the font database file(s).
+\item {\bfseries After Inititialization but before the Database is being
+ filled}\\
+ At this stage, all \verb+T1_Set...()+ and \verb+T1_Add...()+ functions still
+ work as described under~(1). Notice that this phase usually is not
+ accessible when using the standard initialization scheme. It only becomes
+ accessible if no fonts have been added during initialization.
+\item {\bfseries After at least one Font is insterted into the Database}\\
+ Once there are fonts in the database, the paths setup up
+ to now must be preserved in any case. Hence, the \verb+T1_Set...()+ may not
+ be called any longer. The \verb+T1_Add...()+ functions {\em extend} the
+ current set of search paths. In particular, possibly existing default search
+ path elements, then, are not overwritten any longer because they might have
+ been used before to verify the existance of required files.
+\end{enumerate}
+A call to \verb+T1_AddFontDataBase()+ will not only append the specified
+file name to the existing list of databases, but will also immediately
+locate the fonts specified therein and assign additional font IDs.
+
+
+\subsubsection{Bypassing the \tonelib\ File Search Machinery}
+\label{afmfilenames}%
+Usually, \tonelib\ takes care for locating files according to the path
+specifications in the configuration file. There might, however, arise the need
+to explicitly tell \tonelib\ which particular file to use. Forcing \tonelib\ to
+use particular Type 1 font files can be achieved using the function
+\verb+T1_AddFont()+, described just above. If a pathname passed to this
+function is a complete path, \tonelib\ will use this complete path to locate
+the font file, forgetting about its own search path list. A filename path is
+assumed to be complete if
+\begin{itemize}
+\item it starts with the directory separator character, usually
+ ``\verb+/+''. In this case it is an {\em absolute} path specification, meaning
+ that the start point is at the root of the filesystem, or
+\item if it starts with ``\verb+./+'' or ``\verb+../+'' (where it is assumed
+ that ``\verb+/+'' is the directory separator character). Here we have a {\em
+ relative} path specification in which ``\verb+.+'' refers to the current
+ working directory while ``\verb+..+'' refers to the parent directory of the
+ current working directory. Since the notion of the {\em current working
+ directory} is fundamental for every process that has access to a
+ filesystem, a relative path specification also uniquely identifies one
+ particular file in the filesystem.
+\end{itemize}
+If a font file whose complete path had been specified could not be found by
+\tonelib, the paths from the configuration file are searched as a fallback
+mechanism.
+
+What can be done for the Type 1 font files is also possible for AFM files,
+which are needed on a per-font basis. The function
+\precorr
+\begin{verbatim}
+ int T1_SetAfmFileName( int FontID, char *afm_name)
+\end{verbatim}\index{\verb+T1_SetAfmFileName()+}\postcorr
+allows to set the complete path of the AFM file belonging to the font
+identified by \verb+FontID+, overriding the internal
+search mechanism. This function is to be called after initialization but
+before the font \verb+FontID+ is loaded. It returns 0 if all goes right and
+$-1$ otherwise. In the latter case \verb+T1_errno+ will also be set
+appropriately. Notice that \verb+FontID+ must also be valid with respect to
+its upper limit, it is an error condition if the font database has less than
+\verb+FontID+ entries.
+
+There is also the function
+\precorr
+\begin{verbatim}
+ char *T1_GetAfmFileName( int FontID)
+\end{verbatim}\index{\verb+T1_GetAfmFileName()+}\postcorr
+which allows to query the AFM filename of a font. It returns a pointer to the
+filename if it had explicitly been specified or \verb+NULL+
+otherwise. \verb+NULL+ will also be returned if \verb+FontID+ was invalid. In
+this case also \verb+T1_errno+ will be set.
+
+Just for the sake of completeness we should mention that what has been said
+about absolute and relative path specification
+also applies to pathnames for encoding files (see \ref{encoding}).
+
+
+
+
+\subsection{The \tonelib-Logfile}
+\label{logfile}%
+Since version 0.2-beta \tonelib\ supports a runtime logfile.
+It implements an uncomplicated way to keep track of errors,
+warnings, statistics and debug messages without overloading stdout/stderr. As
+seen in \ref{initialization} the user must specify whether or not to use a
+logfile when calling \verb+T1_InitLib()+. Specifying \verb+LOGFILE+ as
+argument leads to using a logfile and \verb+NO_LOGFILE+ suppresses the use of a
+logfile.
+
+The name of this logfile is by default \verb+t1lib.log+. This name is defined
+in \verb+t1misc.h+ and can be changed there as the user likes.
+
+Basically \tonelib\ distinguishes 4 types of runtime messages. Each type is
+associated a ``loglevel'':
+\begin{itemize}
+\item {\sl Errormessages/Level1:}\/ They are considered that important that the user is
+ in any case informed. Example: During initialization the memory allocation for
+ one of the basic data structures of \tonelib\ failed.
+\item {\sl Warningmessages/Level2:}\/ They are considered important but it is not
+ absolutely necessary to inform the user. Example: An AFM file could not be
+ loaded for a given font. This imposes several restrictions on what can be
+ done with that font but it is possible to generate bitmaps.
+\item {\sl Infomessages/Level3:}\/ They do not indicate a problem. Rather, the user
+ is notified about some facts and statistics that might be of
+ interest. Example: After loading a font the consumption of virtual memory is
+ displayed.
+\item {\sl Debugmessages/Level4:}\/ These can be pointers, numerical data
+ etc. Example: Print out the pointers that point to the memory area where the
+ PostScript dictionaries for a font just loaded are located.
+\end{itemize}
+The decision what message to put into the logfile is done by examining the
+value of an integer variable whose values can be \verb+T1LOG_ERROR+ (=1),
+\verb+T1LOG_WARNING+ (=2), \verb+T1LOG_STATISTIC+ (=3) or \verb+T1LOG_DEBUG+
+(=4). All messages whose level is below or equal to this value are put into the
+logfile. The user may set this loglevel by calling
+\precorr
+\begin{verbatim}
+ void T1_SetLogLevel( int level)
+\end{verbatim}\index{\verb+T1_SetLogLevel()+}\postcorr
+The default value is \verb+T1LOG_WARNING+ which means that error and warning
+messages are stored in the logfile.
+
+If the usage of a logfile has been specified, \tonelib\ tries first to open
+it in the current directory. If this fails for some reason \tonelib\ tries
+to create it in the user's home directory. If this fails too, an error message
+is printed to stderr and no logfile is used.
+
+If the application programmer chose not to create a logfile, it would be hardly
+possible for a user to track down possible problems, e.g. in file
+searching. To overcome this disadvantage, the user may set an environment
+variable \verb+T1LIB_LOGMODE+ at runtime. This variable is evaluated by
+\tonelib\ when \verb+T1_InitLib()+ is called. If its value is one of the
+four strings \verb+logDebug+, \verb+logStatistic+ \verb+logWarning+ and
+\verb+logError+, the respective loglevel is set by \tonelib\ and a log file is
+created, even if the programmer chose not to do so. However, if the programmer
+had altered the log level after calling \verb+T1_InitLib()+, this cannot be
+catched by setting the environment variable. A log file is created anyhow so
+that at least error messages will be logged.
+
+The user himself may also put some messages into the logfile. This can be
+achieved using
+\precorr
+\begin{verbatim}
+ void T1_PrintLog( char *func_ident, char *msg_txt, int level, ...)
+\end{verbatim}\index{\verb+T1_PrintLog()+}\postcorr
+where \verb+func_ident+ is a pointer to a string identifying the function that
+generates the message. \verb+msg_txt+ points to the text string to put
+out. The distinction between a function identifier and a message text is only
+formal, indicating the user should identify the function that generates the
+message.
+
+The string \verb+msg_txt+ may contain format character sequences, \verb+%..+ ,
+as known from the \verb+printf+- or \verb+scanf+ standard \verb+C+
+functions. In this case, the ellipses indicate that a variable list of further
+arguments may follow. The \verb+level+ specification works as
+described above: The message is only put out if the internal loglevel is
+equal or greater than \verb+level+.
+
+Here is a typical example of a log file after a (short)
+\verb+xglyph+-session in which the loglevel was set
+\verb+T1LOG_STATISTIC+. Among several informative messages of type S, also two
+messages of type W have been generated. They stem from trying to
+raster the character ``\ss'' which was not in the current encoding.
+\par\noindent
+{%
+\tiny
+\begin{verbatim}
+(S) (Mon Jul 14 18:27:34 1997) T1_InitLib(): Initialization started
+(S) (Mon Jul 14 18:27:34 1997) T1_InitLib(): Initialization succesfully finished
+(S) (Mon Jul 14 18:27:44 1997) T1_LoadFont(): VM for Font 0: 35132 bytes
+(S) (Mon Jul 14 18:27:44 1997) CreateNewFontSize(): New Size 100.000000 created for FontID 0 (antialias=0)
+(S) (Mon Jul 14 18:27:53 1997) CreateNewFontSize(): New Size 100.000000 created for FontID 0 (antialias=1)
+(S) (Mon Jul 14 18:27:53 1997) CreateNewFontSize(): New Size 200.000000 created for FontID 0 (antialias=0)
+(W) (Mon Jul 14 18:27:53 1997) T1_SetChar(): No black pixels found for character 223 from font 0, returning NULL
+(W) (Mon Jul 14 18:27:53 1997) T1_SetStringX(): T1_SetChar() returned NULL-pointer!
+(S) (Mon Jul 14 18:27:55 1997) T1_DeleteSize(): Size 200.000000 deleted for FontID 0 (antialias=0)
+(S) (Mon Jul 14 18:27:55 1997) T1_DeleteSize(): Size 100.000000 deleted for FontID 0 (antialias=0)
+(S) (Mon Jul 14 18:27:55 1997) T1_DeleteSize(): Size 100.000000 deleted for FontID 0 (antialias=1)
+\end{verbatim}
+}
+
+\subsection{Generating Bitmaps}
+\label{generatingbitmaps}%
+At this point, you are able to generate a bitmap.
+As said before, a character- or string-bitmap is given to the user as
+an object of type \verb+GLYPH+. We should briefly explain \verb+GLYPH+
+here. The type is defined by
+\begin{verbatim}
+typedef struct
+{
+ char *bits;
+ struct
+ {
+ int ascent;
+ int descent;
+ int leftSideBearing;
+ int rightSideBearing;
+ int advanceX;
+ int advanceY;
+ } metrics;
+ void *pFontCacheInfo;
+ unsigned long bpp;
+} GLYPH;
+\end{verbatim}
+\verb+bits+ is a pointer to the bitmap data. The
+bitmap is organized in lines, starting with the uppermost line.
+Each bitmap pixel is usually represented by one bit. If the width of
+the
+bitmap is not an integer multiple of 8, the lines are padded with
+zeros, so that each line starts at a byte boundary. Note that the
+bitmap has no margins taken into account. The bitmap occupies the
+minimum area the character needs to be painted.
+
+The bitmap pointer may also be
+the \verb+NULL+-pointer. In this case, the glyph contains no foreground
+pixels. The metrics of the corresponding glyph should be valid,
+though. Typically, this appears for the space character as well as in
+situations where an undefined or unencoded character had been substituted by
+the \verb+.notdef+-character within the rastering functions.
+
+Note that the \verb+pixmap+-entry which has been present in version 0.3-beta,
+has been removed with version 0.4-beta. See the discussion on the X11-interface
+in \ref{x11interface} for an explanation of this.
+
+The struct \verb+metrics+ contains metric information that is needed
+to position the character and to describe the character origin
+with respect to the bitmap. The members in detail:
+\begin{itemize}
+\item \verb+metrics.ascent+: describes how many lines the bitmap
+ ranges above the line $y=0$.
+\item \verb+metrics.descent+: describes how many lines the bitmap
+ ranges below the line $y=0$. Width below $y=0$ counts negative so that the
+ difference \verb+ascent+ $-$ \verb+descent+ is the
+ total height of the bitmap, the number of lines.
+\item \verb+metrics.leftSideBearing+: The amount of spacing between
+ the origin of a character and the x-coordinate of its leftmost
+ painted pixel. One could also name it ``left margin'' of the
+ character.
+\item \verb+metrics.rightSideBearing+: The horizontal difference between
+ the origin of a character and the x-coordinate of its rightmost
+ painted pixel. This definition stands in contrast to some other
+ interpretations of the right side bearing, where it is assumed as the
+ difference between the glyph's width and its right most pixel.
+\item \verb+metrics.advanceX+: The amount of position increment in
+ horizontal direction after this character
+ bitmap (or string bitmap) has been placed. It is almost always
+ larger than the bitmap width because most characters contain a
+ certain amount of margins. Note that this value is not suitable for internal
+ computations of character positions since it contains the horizontal
+ escapement rounded to the pixel grid. Using this value for such computations
+ leads to accumulating positioning errors.
+\item \verb+metrics.advanceY+: The amount of position increment in
+ vertical direction after this character
+ bitmap (or string bitmap) has been placed. Upper direction counts positive.
+\end{itemize}
+As seen, the width of the bitmap is given as the difference between
+\verb+rightSideBearing+ and \verb+leftSideBearing+ and the values
+\verb+metrics.leftSideBearing+, \verb+metrics.descent+,\\
+\verb+metrics.rightSideBearing+ and \verb+metrics.ascent+ effectively describe
+the bounding box of the glyph.
+
+The entry \verb+pFontCacheInfo+ is not currently used but will
+probably later when font caching is really
+implemented. Moreover, there's a certain chance that some other
+entry will be added in future releases.
+
+The member \verb+bpp+ is used to store the depth of the bitmap. For
+true bitmaps, it is always 1. See \ref{antialiasing} for an
+explanation.
+
+There are three basic functions which produce pointer to glyph objects. In
+order to generate the glyph for a single character you would use the
+function
+\precorr
+\begin{verbatim}
+ GLYPH *T1_SetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetChar()+}\postcorr
+As in most other functions, \verb+FontID+ is a valid identification
+number of a font. It can range from 0 to $n-1$, where $n$ is number of
+fonts declared in the font database file.
+
+The second argument \verb+charcode+ determines the character that will
+be rasterized.
+As mentioned earlier, the encoding mechanism is used for
+accessing the output character. This means, if \verb+'A'+ is given as
+the character code, the machine representation of \verb+'A'+ is used
+as an index into the current encoding vector. In this encoding vector,
+the characters' name is looked up. Encoding vectors may be changed by
+the user (see \ref{encoding}).
+
+
+The parameter \verb+size+ is interpreted in Postscript's bigpoint-unit
+(bp). By default,
+1 bp equals one device pixel.
+
+\verb+transform+ specifies the transformation that will be applied to the
+character before rastering. If this pointer is \verb+NULL+, no transformation
+is used. Otherwise it should point to a valid \tonelib-transformation matrix.
+Please refer to \ref{transformations} for information on how to easily create
+\verb+T1_TMATRIX+ matrices.
+Hinting is only performed if the transformation is a pure rotation and if the
+the angle is one of 0, 90, 180 or 270 degrees. Otherwise font level and
+character level hinting information is ignored.
+
+Bitmaps of transformed characters are never saved in
+cache memory since I assume that they are rarely needed. The overhead
+to manage transformed characters in cache would be overkill and would
+significantly increase memory consuming. Anyhow, this would only work
+for some dedicated transformations.
+
+\verb+T1_SetChar()+ in fact does some more things than simply
+rastering the specified character:
+\begin{itemize}
+\item It checks whether the font in question is already loaded. If not,
+ it is loaded.
+\item If the size dependent data structures for the size in question
+ do not exist, it creates them and inserts them in the linked list of
+ size dependent data structures.
+\item It checks if the character is already existent in cache. If so,
+ it returns the data from cache.
+\end{itemize}
+
+Some words concerning memory management: The memory used by
+the \verb+GLYPH+-structure is static in this function. The memory
+required for the bitmap is also allocated by the function itself.
+This means, the user doesn't need to free any memory by
+himself. Every time \verb+T1_SetChar()+ is called, it starts by giving the
+memory needed for the last generated glyph free or respectively
+setting metric values to 0. Thus, do not free the
+returned glyph pointer since later \verb+T1_SetChar()+ will free
+memory that is no more allocated and probably used for some other purpose.
+If you really like to free the memory, set the pointer to \verb+NULL+
+afterwards.
+
+If an error occurs at some point, \verb+T1_SetChar()+ returns a
+NULL-pointer to the user.
+
+Frequently it is advantageous to raster a series of
+characters at once. This has the advantage that internal accuracy may
+be used and the overhead for the user is minimal. For such cases, the
+function
+\precorr
+\begin{verbatim}
+ GLYPH *T1_SetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetString()+}\postcorr
+is provided.
+It can be considered an extended version of \verb+T1_SetChar()+. The
+same as said above applies to the arguments \verb+FontID+,
+\verb+size+ and \verb+transform+. But a few additional arguments are
+needed here.
+
+\verb+string+ is a series of bytes representing the indices into the current
+encoding vector.
+The \verb+len+-parameter is needed because we cannot imply that string
+is always an object like a string in C. For example, the Computer
+Modern Roman fonts contain the uppercase Greek Gamma (\char0) at
+position 0 in their internal encoding. In a string to be typeset the
+value 0 is thus a valid value and deserves no special
+treatment. Hence, we cannot not use the C-function \verb+strlen()+ to
+compute the length of the string. However, since in most usual encodings
+the special value 0 is not encoded (``\verb+.notdef+''), it makes
+sense to switch between
+standard situations and non-standard situations:
+\begin{itemize}
+\item If \verb+string+ is a string conforming with C-semantics,
+ \verb+len+ can be set to 0. Then, the length of the string is
+ internally computed.
+\item If \verb+string+ contains one or more control characters which make
+ processing impossible, the \verb+len+-value must be specified
+ explicitly.
+\end{itemize}
+
+The \verb+spaceoff+ parameter is important for word processing
+purposes. The value specified here is interpreted as an offset to the
+space width used during rastering. It is interpreted in charspace
+units, i.e., $1/1000$ bp. Every time a space character is requested,
+this amount of horizontal escapement is added to the natural
+spacewidth of the current font. Note that the space character itself
+is actually not rastered. All requests to the character with the
+charactername ``\verb+space+'' are caught by \tonelib\ and converted
+to a simple horizontal escapement. For computation of the resulting
+spacewidth, the width of the space-character is taken from the
+AFM data and merged with the specified offset, which may also be
+negative.\footnote{One consequence of this handling is, that---with a
+ little tricking---fonts that do not define a space character
+ themselves may be used for typesetting. This applies to the
+ dc-fonts, which only define a visible space, but no real space (see
+ \ref{fonts}).}
+
+The \verb+modflag+ argument may be used to specify some option to the
+rastering function. It is generally 0 or an OR'ed combination of the following
+names:
+\begin{itemize}
+\item \verb+T1_KERNING+: As the name implies, this argument
+ determines that pairwise kerning information from the AFM file is to be taken
+ into account during string rastering. Not specifying \verb+T1_KERNING+
+ means: ``omit kerning''. It is generally
+ recommended to use kerning information since this improves the optical
+ appearance. However, many lower quality fonts do not have kerning
+ information. With \tonelib\ V.\ 0.4-beta, kerning information is accessible
+ much faster than before because it is based on char codes rather than on
+ characternames.
+\item \verb+T1_RIGHT_TO_LEFT+: Setting this flag will invert the writing
+ direction. In {\em Right-To-Left} mode the escapement in writing direction
+ (left) is inserted before placing the character with the result that the
+ character laps over to the left side. This principle is kept for all
+ characters in the string. Note that metrics of fonts that are intended for
+ {\em Right-To-Left} typesetting have the same meaning as for fonts intended
+ for standard ({\em Left-To-Right}) typesetting.
+\item \verb+T1_UNDERLINE+: The string to be rastered is to be underlined
+ according to the line specifications of the current font.
+\item \verb+T1_OVERLINE+: The string to be rastered is to be over lined.
+\item \verb+T1_OVERSTRIKE+: Same here for overstriking.
+\end{itemize}
+For a description of underlining and such, see \ref{underlining}. Notice also
+that the \verb+modflag+ argument is a replacement of the \verb+kerning+
+argument from pre-0.7 versions of \tonelib.
+
+Concerning glyph-memory considerations, the same applies as said under
+the description of \verb+T1_SetChar()+: Never free a pointer to memory
+which was returned by \verb+T1_SetString()+. Or, alternatively, if freeing
+the pointer cannot be avoided set it to NULL after freeing it.\footnote{For
+ example, {\tt XDestroyImage()} gives the pixel memory for the image
+ data free although it might not have been allocated by any X11-function.}
+
+There are two generic ways how a string-glyph can be produced. The first is to
+take the paths of all characters needed, concatenate them, insert space and
+kerning amounts as needed and raster the resulting whole path. This will yield
+the best results since the average position accuracy of the pixels will be
+optimal. This applies especially for rotated strings. The drawback is, that
+every character must be rastered every time it is needed. There is no way to
+access the bitmap data of a character inside a rastered string separate from
+others. And the caching of string-glyphs at this programming level doesn't
+make any sense. So this principle takes significantly longer than
+concatenating bitmaps from a cache area. However, it is done when the
+specified rotation angle is not equal to $0^\circ$ or when even further
+transformation are to be applied. This condition should limit the total
+number of situations when this happens to an amount we can easily bear.
+
+If the \verb+transform+-argument is \verb+NULL+ we know transformations or
+rotation should not be applied and another approach is used. We are then able
+to construct the resulting bitmap by adjusting already existent bitmaps into
+proper positions. If a character does not already exist in the cache, it is
+generated just the way \verb+T1_SetChar()+ works. The calculation of the
+character-bitmap positions in the output bitmap is done with
+char space-precision. Nonetheless, there may be differences in the output
+compared with output of the above method. These are caused by the fact that
+rounding to pixel accuracy has already been achieved when generating the
+character bitmap. Thus, the output of the above principle should always be
+better since the positions of the black pixels are rounded with respect to the
+whole string, and not with respect to a single character glyph. On the other
+hand, concatenating character glyphs takes significantly less time than
+rastering a complete string. Theoretically, differences of up to two pixels
+horizontal shift may appear in the output of the two principles. You can
+check the effect by running the program \verb+xglyph+. Specify a string of
+enough length and raster it at angle $0^\circ$. Then specify a very small
+angle from 0 different, say, $0.001^\circ$, and raster the string again with
+the new setting. You might find that the representation of the string is a
+little different now.
+
+The third function that creates a glyph object is
+\precorr
+\begin{verbatim}
+ GLYPH* T1_SetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetRect()+}\postcorr
+Calling this function yields a filled rectangle. It is intended for situations
+where a \TeX-style \verb+\vrule+ would be appropriate, or, for equations in
+mathematical typesetting.
+
+First, the argument \verb+FontID+ identifies a valid font. At this time, it is
+not obvious why a valid font is required in order to create a rectangular
+glyph. The reason is, that some of the parameters that are associated to a
+particular font are also relevant for creating rectangles in the context of
+that font. Hence, specifying a font identifier in this case is a means of
+stating ``{\em draw a rectangle that visually fits to the style of the font
+ \verb+FontID+}''. Aside from this, I assume that each application that uses
+\tonelib\ deals with at least {\em one} font so that the \verb+FontID+
+parameter actually does not hurt.
+
+The size of the rectangle is to be specified in charspace units by means of
+the parameters \verb+width+ and \verb+height+, and is moreover subject to
+scaling through the parameter \verb+size+. By definition, the typographical
+fundamental area of a font, known as the {\em em-square}, is just as high and
+as wide as the design size of the font. In charspace units, this rectangle
+exactly maps to a $1000 \times 1000$ grid. Or alternatively spoken, one
+charspace unit is 0.001bp (Big Point). For example, in order to draw an
+em-square for some font at 13 points, the correct parameters are
+\hbox{\verb+size+ $= 13$}, \hbox{\verb+width+ $= 1000$} and
+\hbox{\verb+height+ $= 1000$}. If absolute physical dimensions are desired,
+the scaling explicitly must be calculated by the user. For instance, in order to
+produce a $ 1 \mathrm{cm} \times 1 \mathrm{cm}$ square we find
+\begin{displaymath}
+h = w = 1\mathrm{cm} \frac{72\mathrm{bp}/\mathrm{in} \times
+ 1000\mathrm{cs}/\mathrm{bp}}{2.54\mathrm{cm}/\mathrm{in}}
+\approx 28346\;\mathrm{cs.}
+\end{displaymath}
+Here ``cs'' designates charspace units and \verb+size+ is assumed to be $1$.
+Note that still the device resolution must be properly setup in order to make
+the dimensions appear accurately on the device.
+
+The parameter \verb+transform+ is a pointer to a \tonelib\ transformation
+matrix. If it is \verb+NULL+, the current transformation of the font in
+question is used. Depending on the kind of actual transformation, the
+rectangle might also image as a nonrectangular shape. This happens, if the
+current font is slanted, then the rectangle will be skewed.
+
+Glyphs produced by the rectangle function are never cached because there is
+no means in doing so. With respect to memory management, the same applies as
+for \verb+T1_SetChar()+ and \verb+T1_SetString()+. Since rectangles rarely are
+used to produce normal text flow, the glyphs produced by the rectangle
+function do not cause any escapement.
+
+
+If two glyphs with arbitrary orientation exist,
+\precorr
+\begin{verbatim}
+ GLYPH *T1_ConcatGlyphs( GLYPH *glyph1, GLYPH *glyph2,
+ int x_off, int y_off, int modflag)
+\end{verbatim}\index{\verb+T1_ConcatGlyphs()+}\postcorr
+can be used to concatenate them. First the size of the resulting glyph is
+computed and its metric values are filled. Then, the two glyphs are placed at
+their appropriate positions in the newly created bitmap. In order to be able
+to work, the following conditions must be met:
+\begin{enumerate}
+\item Either glyph must be different from \verb+NULL+.
+\item Both glyphs must have identical \verb+bpp+-values. If antialiased and
+ non-antialiased glyphs are to be concatenated, have a look at
+\item There must be enough memory for the new glyph (naturally).
+\end{enumerate}
+The quantities \verb+x_off+ and \verb+y_off+ describe the $x$- and
+$y$-component of an optional offset to be inserted between the two
+glyphs. This offset is interpreted as device pixels. The \verb+modflag+
+argument is used to specify the direction in which the two glyphs are to be
+concatenated. That is, only the bit \verb+T1_LEFT_TO_RIGHT+ /
+\verb+T1_RIGHT_TO_LEFT+ is respected by this function.
+
+If problems occur, \verb+NULL+ is returned.
+It is generally not recommended to produce large glyphs with this function
+because the char space precision in placing the character bitmaps is lost. For
+example, three times rounding up an advance by 0.3 pixels accumulates to 1
+pixel position error. A similar effect shows up when two rotated and underlined
+glyphs are concatenated with this function. There might be a slight shift in the
+baseline at the point where the two glyphs touch.
+
+A dilemma occurs, if two antialiased bitmaps have distinct background
+colors. Then, it is not clear what the transparent color
+is. \verb+T1_ConcatGlyphs()+ always assumes the {\em current} background color
+to be transparent.
+
+
+There is one more function that generates pointers to glyphs:
+\precorr
+\begin{verbatim}
+ GLYPH *T1_CopyGlyph(GLYPH *glyph)
+\end{verbatim}\index{\verb+T1_CopyGlyph()+}\postcorr
+As mentioned earlier, the user doesn't have the possibility of keeping
+the
+glyphs longer than to the next call of the respective rastering function. If
+someone wants to keep a bitmap some time longer,
+\verb+T1_CopyGlyph()+ may be used
+to copy the glyph to another area which is then completely under user's
+control. This function simply does the following:
+\begin{itemize}
+\item Allocates the memory for the glyph-structure.
+\item If bitmap data is present, it allocates memory for the bitmap data,
+ taking the member \verb+bpp+ into account (see \ref{antialiasing}).
+\item Copies the structure and the bitmap data to the respective locations.
+\item Initializes the pointer \verb+glyph.bits+.
+\end{itemize}
+
+Return value is the pointer to the allocated glyph-structure. If something
+goes wrong, NULL is returned to indicate an error. A glyph pointer,
+returned by a call to this function should be freed by a call to
+\verb+T1_FreeGlyph()+ (see \ref{deletingdata}).
+
+
+\subsection{Loading Fonts Explicitly}
+\label{loading}%
+Usually there is no need for a user to load a font into memory since this is
+done automatically as needed by the rastering functions. But there are two
+situations where it makes sense to explicitly load a font before generating
+any size dependent data:
+\begin{itemize}
+\item A font is to be reencoded immediately after loading (see \ref{encoding}).
+\item A font is to be transformed (see \ref{transformations}).
+\end{itemize}
+These operations require a font being loaded but not having any size specific
+data. Loading a font explicitly is done by the function
+\precorr
+\begin{verbatim}
+ int T1_LoadFont( int FontID)
+\end{verbatim}\index{\verb+T1_LoadFont()+}\postcorr
+Loading a font involves several actions:
+\begin{itemize}
+\item Locating and loading the Type 1 font file.
+\item Locating and loading the font metrics data from AFM file.
+\item Computing and filling the values of the \verb+FONTPRIVATE+ structure as
+ described in section \ref{internals}.
+\item Setting up some tables for fast access of metrics information.
+\end{itemize}
+\verb+T1_LoadFont()+ returns \verb+0+ if successful or \verb+-1+ if the font
+could not be loaded. A failure may be due to \tonelib\ not having been
+initialized or due to problems with file locations and file parsing. If a font
+refuses to load, the logfile should be examined first. Furthermore, in case of
+a failure \verb+T1_errno+ will be set appropriately.
+
+
+\subsection{Functions for Encoding Handling}
+\label{encoding}%
+As mentioned earlier, the encoding mechanism used in the
+PostScript-language allows a font to contain more than 256 different
+characters, although only 256 are accessible at a given time. The
+characters which are accessible are given by the elements of the
+current {\em encoding vector}. In order to maximize flexibility,
+\tonelib\ allows for changing the current encoding vector. This is
+also called ``Reencoding a font''. A new encoding vector is defined
+and made known to the library by creating an encoding-file and loading
+its contents into memory.
+Before describing the functions needed for this, we should
+briefly describe the format of an encoding file.
+
+An encoding file is an ASCII text file. No
+assumptions about filename extensions are made. Here are the rules for
+scanning the file:
+\begin{itemize}
+\item The file contents are completely ignored until a line is encountered
+ that starts with the string \verb+Encoding=+. This string may optionally be
+ immediately followed by a string that is assumed to be the identifier of the
+ {\em encoding scheme} that this file defines. Any further text on this line
+ is ignored.
+\item Now, 256 lines have to follow, each line describing one
+ character's name. The string ranging from the beginning of the line
+ to the first white space character is assumed to be a character
+ name. The remainder of the lines is ignored and may (should) be used
+ for comments, thereby describing the current character code.
+\item All further lines of text are ignored.
+\end{itemize}
+As well known from PostScript, non-existent characters have to be
+named \verb+.notdef+.
+
+Here's an example of such an encoding file:
+\begin{verbatim}
+Sample encoding file for t1lib!
+The first two lines are considered to be comments!
+Encoding=ISOLatin1Encoding
+.notdef /* '000 000 "00 */
+.notdef /* '001 001 "01 */
+.notdef /* '002 002 "02 */
+ . .
+ . .
+ . .
+greater /* '076 062 "3E */
+question /* '077 063 "3F */
+at /* '100 064 "40 */
+A /* '101 065 "41 */
+B /* '102 066 "42 */
+ . .
+ . .
+ . .
+yacute /* '375 253 "FD */
+thorn /* '376 254 "FE */
+ydieresis /* '377 255 "FF */
+\end{verbatim}
+
+Since V.~1.2, \tonelib\ is also able to load encoding files in the format used
+by \verb+dvips+. This makes a large set of existing encoding files available
+to the user. When parsing \verb+dvips+ encoding files, \tonelib\ requires
+PostScript syntax. This means white space may be interspersed freely and
+line comments are defined by the character \%. The mark-characters, \verb+[+
+and\verb+]+, are considered as special tokens and need not be preceded or
+followed by white space. Similarly, the literal escape character \verb+/+
+delimits a preceding token without interspersed white space. When parsing
+\verb+dvips+ encoding files, \tonelib\ tolerates less than 256 character name
+definitions. If characters are missing, they are substituted by \verb+.notdef+
+until the counter reaches $256$. Aside from comments, no PostScript tokens are
+allowed after the encoding definition in a \verb+dvips+ encoding file is
+complete.
+
+With the defining terms above, it turns out that a file which has successfully
+been scanned as a \verb+dvips+ encoding file, cannot specify a valid \tonelib\
+encoding after the PostScript encoding definition is complete (because no
+valid character name can start with \% and because at least a line such as
+\verb+Encoding=+, would have to follow the PostScript encoding). Hence the
+file format are mutually exclusive and it is possible to read both format
+using one function. In a first pass \tonelib\ tries to read the file as a
+\verb+dvips+ encoding file, and if that fails, it assumes to have a \tonelib\
+encoding file.
+
+
+Once such an encoding file of either type has been created, it can be loaded
+into memory. This is done with the function
+\precorr
+\begin{verbatim}
+ char **T1_LoadEncoding( char *filename)
+\end{verbatim}\index{\verb+T1_LoadEncoding()+}\postcorr
+The function will use the search path definitions read from
+the configuration file during initialization (see
+\ref{runtimesetup}, \verb+ENCODING=+). If no
+errors occur, an array of pointers to strings is created and
+initialized. The start address of this pointer array is returned as a
+double pointer to a char. This pointer is intended
+to be used to reencode a font via \verb+T1_ReencodeFont()+. If the encoding
+data structure could not be created, \verb+NULL+ is returned to indicate the
+error.
+
+The memory allocated by \verb+T1_LoadEncoding()+ is organized in two
+continuous blocks. One block is the pointer array of size 257\footnote{This
+ number results from 256 charactername pointers plus one pointer to the
+ encoding scheme identifier.} and the
+other block contains the character name strings plus the encoding scheme
+specification, separated by
+ASCII-zeros.
+This memory can be returned to the system using the function
+\precorr
+\begin{verbatim}
+ int T1_DeleteEncoding( char **Encoding)
+\end{verbatim}\index{\verb+T1_DeleteEncoding()+}\postcorr
+\tonelib\ does not check whether a valid pointer value was passed. So be
+careful to pass the correct pointer. An error in this function should almost
+always be followed by a segmentation violation.
+
+A newly loaded encoding is applied to an existent font by
+calling
+\precorr
+\begin{verbatim}
+ int T1_ReencodeFont( int FontID, char **Encoding)
+\end{verbatim}\index{\verb+T1_ReencodeFont()+}\postcorr
+\verb+FontID+ must be a valid font identification and
+\verb+Encoding+ a pointer returned from a
+successful call to \verb+T1_LoadEncoding()+.
+
+There are two requirements
+in order to reencode a font:
+\begin{enumerate}
+\item The font must already have been loaded into memory.
+\item No size-dependent data exists for this font. If
+ it does, it must be removed explicitly prior to calling
+ \verb+T1_ReencodeFont()+.
+\end{enumerate}
+
+It follows that there are two ways to reencode a font. The first is
+to load a font explicitly and reencode it before any size dependent
+data is created. The second is to use an automatically loaded font
+and delete all of its size dependent data before reencoding it.
+
+The user may also specify the special pointer NULL as the
+\verb+Encoding+-argument. This would reencode the font to its internal
+encoding vector.
+
+In case of success, the function returns 0, otherwise -1 is returned.
+
+Reencoding a font takes a considerable amount of time since the mapping tables
+have to be reorganized. In situations where it is \`a priori foreseeable that the
+font will be reencoded using some standard encoding vector, it makes sense to
+assign that particular encoding vector as the default encoding vector,
+thereby overwriting the internal encoding vector of each font at load time
+before the mapping tables are setup. Setting the default encoding can be
+achieved using
+\precorr
+\begin{verbatim}
+ int T1_SetDefaultEncoding( char **Encoding)
+\end{verbatim}\index{\verb+T1_SetDefaultEncoding()+}\postcorr
+Here \verb+Encoding+ encoding is assumed to be a valid \tonelib\ encoding
+vector, e.g., created by a call to \verb+T1_LoadEncoding+.
+\verb+T1_SetDefaultEncoding()+ has to be called after initialization. It
+returns \verb+0+ if this condition is fulfilled and \verb+-1+
+otherwise. In the latter case \verb+T1_errno+ is set appropriately.
+Notice that the internal encoding of the font is still accessible by
+reencoding the font using \verb+NULL+ as encoding specification (see above).
+Note further that the default encoding vector is only applied to those font
+that have \verb+StandardEncoding+ as internal encoding. This is to prevent
+fonts like ZapfDingbats, Symbol or Sonata\footnote{A musical notation font.}
+from being reencoded automatically at load time because this would be
+surely inappropriate for such fonts.
+
+It is also possible to query the encoding scheme that the font associated with
+\verb+FontID+ uses. This is achieved with the function
+\precorr
+\begin{verbatim}
+ char *T1_GetEncodingScheme( int FontID)
+\end{verbatim}\index{\verb+T1_GetEncodingScheme()+}\postcorr
+The return value is a pointer to a string which describes the encoding scheme
+in question. The are 3 possible cases:
+\begin{itemize}
+\item The font uses Adobe StandardEncoding, which is internally known by the
+ rasterizer. Then, \verb+StandardEncoding+ is returned.
+\item The font defines its own encoding by \hbox{\verb+dup+ $n$ {\em
+ LiteralName} \verb+put+} statements. In this case no particular name is
+ associated with the encoding scheme and \verb+FontSpecific+ is returned.
+\item The encoding is externally loaded by \verb+T1_LoadEncoding()+. Then the
+ encoding scheme entry of this file is returned. If this (optional) entry is
+ not specified in the file, \verb+Unspecified+ is returned.
+\end{itemize}
+Notice that the name of the encoding scheme is also accessible as
+\verb+Encoding[256]+ where \verb+Encoding+ is the pointer returned by a
+successful call to \verb+T1_LoadEncoding()+.
+
+\subsection{Deleting Data}
+\label{deletingdata}%
+In frequently appearing cases, it may be wise to return some memory
+which was explicitly
+or automatically allocated by the library back to the
+system.\footnote{This is especially true, since there is presently no
+ caching algorithm which automatically takes care of this.} For
+this purpose
+some functions are available. To understand how size dependent
+data for a font is organized, see (\ref{internals}).
+
+The memory amount required by the size-dependent data of \verb+size+
+and font \verb+FontID+ is freed by calling the function
+\precorr
+\begin{verbatim}
+ int T1_DeleteSize( int FontID, float size)
+\end{verbatim}\index{\verb+T1_DeleteSize()+}\postcorr
+The data deleted includes the metric
+information for 256 characters, some pointers, associated bitmap data (if
+already existent) as well as the font matrix for that size.
+
+As described in section \ref{internals}, the data structures containing
+size-dependent information of a particular font are organized as a
+linked list. \verb+T1_DeleteSize()+ takes care that a properly linked
+list is left after deleting the data.
+
+If the combination of \verb+size+ and \verb+FontID+ does not exist, -1
+is returned. If the operation was successful, the return value is 0.
+
+For the purpose of removing all size-dependent data for a particular
+font, there is the function
+\precorr
+\begin{verbatim}
+ int T1_DeleteAllSizes( int FontID)
+\end{verbatim}\index{\verb+T1_DeleteAllSizes()+}\postcorr
+It recursively removes all size-dependent data for the font
+\verb+FontID+. This may be appropriate if a user knows some font not
+to be needed any longer. This function is also to be used, if one intends to
+reencode a font for
+which size dependent data has already been generated. In addition,
+ font transformations
+such as {\em slanting} and {\em extending}
+require a font having no size-specific data.
+\verb+T1_DeleteAllSizes()+ recursively calls \verb+T1_DeleteSize()+ to
+do its job.
+It returns the number of sizes removed (including 0 if no sizes were
+existent) or -1 if an error occurred.
+
+It is also possible to remove the entire data associated with a
+particular font from memory using
+\precorr
+\begin{verbatim}
+ int T1_DeleteFont( int FontID)
+\end{verbatim}\index{\verb+T1_DeleteFont()+}\postcorr
+\verb+T1_DeleteFont()+ goes one step beyond the above functions and
+removes all the data associated with the font \verb+FontID+. This
+includes:
+\begin{itemize}
+\item All size dependent data.
+\item All data from the Type 1 font program, held in memory.
+\item All AFM data kept in memory.
+\end{itemize}
+The memory reserved for a font in hierarchy-level 1 is not returned to
+the system since it is simply one element in the array of structures of
+type \verb+FONTPRIVATE+ (see \ref{internals}). But all entries in this
+structure are reset to initial values.
+
+Whether it is useful or not, a font that has been removed using
+\verb+T1_DeleteFont()+ may also be loaded again, explicitly or
+implicitly.
+
+There is a restriction, which has not yet been mentioned: A font may only be
+removed if it is a physical font (to be explained later) to which no logical
+fonts refer or if it is a logical font.\footnote{See \ref{logicalfonts} for
+ explanation of logical fonts.} A reference counter is maintained in each
+physical font to check for this. If the font to be removed is a logical font,
+the \verb+FONTPRIVATE+ area is reset and the reference counter of the
+referenced physical font is decremented. Of course, size dependent data is
+removed in every case.
+
+\verb+T1_DeleteFont()+ returns 0 if the font has been removed correctly or if
+the font was not loaded. $n$ ($>0$) is returned if
+the font was physical and was referenced by $n$ logical fonts. A
+return value -1 indicates an invalid \verb+FontID+.
+
+The function
+\precorr
+\begin{verbatim}
+ int T1_FreeGlyph( GLYPH *glyph)
+\end{verbatim}\index{\verb+T1_FreeGlyph()+}\postcorr
+returns memory allocated by
+\verb+T1_CopyGlyph()+ back to the system. This function should not be
+applied to the pointer to a glyph returned by one of the rastering
+functions. As said earlier, these functions manage the memory areas by
+themselves.
+
+Similarly, the function
+\precorr
+\begin{verbatim}
+ int T1_FreeCompCharData( T1_COMP_CHAR_INFO *cci)
+\end{verbatim}\index{\verb+T1_FreeCompCharData()+}\postcorr
+returns memory associated to the composite caracter data structures, as
+allocated and returned by \verb+T1_GetCompCharData()+ or
+\verb+T1_GetCompCharDataByIndex()+ (see
+Section~\ref{subsec:CompositeCharacters}), to the system. In order to avoid
+memory leaks, each call of the latter two functions should be followed by a
+call to this function.
+
+
+In order to close the library and return all memory to the system,
+\precorr
+\begin{verbatim}
+ int T1_CloseLib( void)
+\end{verbatim}\index{\verb+T1_CloseLib()+}\postcorr
+should be used. If no problems occur, 0 is returned. The value 1 indicates
+problems during freeing data. In this case the logfile should be examined.
+After having freed all data the file search paths, if different from the
+defaults, are restored. Last, the logfile is closed.
+
+
+\subsection{Underlining, Overlining and Overstriking}
+\label{underlining}%
+\tonelib\ supports underlining, overlining and overstriking for the string
+rastering functions. These lines are always drawn on the fly as the bitmaps
+are generated. In writing direction, the lines range from the glyph's origin
+to the glyph's width. The vertical dimensions are set the following way by
+default when a font is loaded:
+\begin{itemize}
+\item {\bf Underlining}: Underline position and thickness are taken from the
+ Fontinfo dictionary of the respective font. The rule is vertically centered
+ with respect to the mathematical line given by the position value.
+\item {\bf Overlining}: The position is computed to be $y=a+|u|$ where $a$
+ corresponds to the typographic ascender and $u$ is the underline position
+ from the Fontinfo dictionary. As above, the rule is vertically centered
+ around this position value. The thickness is set to underline thickness.
+\item {\bf Overstriking}: The position is $y=a/2$ where again $a$ is the
+ typographic ascender of the font and vertical alignment of the rule is done
+ by centering around the computed position. The thickness is set to underline
+ thickness.
+\end{itemize}
+As all information in AFM files, thickness and position specifications are
+interpreted in charspace units.
+
+Notice that the typographic ascender is not determined by the Type 1 font
+program. It has to be guessed by \tonelib. The problem of guessing the
+typographic ascender is discussed in more detail in \ref{writingafmfiles}.
+When loading a font, this typographic ascender is assumed to be the vertical
+coordinate of the upper right corner of the bounding box of the letter ``d''.
+This is not as advanced as the procedure described in \ref{writingafmfiles},
+but it suffices because the underlining positions can later be overwritten by
+the user (see below).
+
+From the mathematical point of view, the line rules are an integral part of
+the rastered path. It follows that line rules may appear sheared if a font has
+been artificially slanted and the size and/or thickness is sufficiently large.
+
+A look into real Type 1 font files shows that even fonts of the same family
+possess incompatible values for underlining. For example, Bitstream Charter
+Roman defines underline thickness to be 61 and its bold variant assigns a
+value of 90. Underlining text consisting of Roman and bold words will not be
+very pleasing using these values. For this reason \tonelib\ provides a way for
+explicitly setting and overwriting the default values for line ruling on a
+per-font level. The functions
+\precorr
+\begin{verbatim}
+ int T1_SetLinePosition( int FontID, int linetype, float value)
+\end{verbatim}\index{\verb+T1_SetLinePosition()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ int T1_SetLineThickness( int FontID, int linetype, float value)
+\end{verbatim}\index{\verb+T1_SetLineThickness()+}\postcorr
+set the respective value for font \verb+FontID+ to \verb+value+.
+The \verb+linetype+ argument is assumed to be an OR'ed combination of
+\verb+T1_UNDERLINE+, \verb+T1_OVERLINE+ and \verb+T1_OVERSTRIKE+. While it
+generally does not make sense to specify identical positions for two or three
+distinct line rule types, it is meaningful to specify identical thickness
+values for two or all rules types. However both functions accept combinations
+of linetype specification.
+It follows that consistent line ruling for several fonts can be achieved by
+setting the line rule parameters of the involved fonts to identical respective
+values.
+
+Currently active line rule parameters can be queried using the functions
+\precorr
+\begin{verbatim}
+ float T1_GetLinePosition( int FontID, int linetype)
+\end{verbatim}\index{\verb+T1_GetLinePosition()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ float T1_GetLineThickness( int FontID, int linetype)
+\end{verbatim}\index{\verb+T1_GetLineThickness()+}\postcorr
+In case more than one line rule type is specified for
+\verb+linetype+ the first matching value is returned,
+since obviously the functions can only return {\em one} value. The order the
+argument is checked is \verb+T1_UNDERLINE+, \verb+T1_OVERLINE+ and
+finally \verb+T1_OVERSTRIKE+.
+
+These functions called with \verb+T1_UNDERLINE+ as line type argument should
+not be confused with the functions \verb+T1_GetUnderlinePosition()+ and
+\verb+T1_GetUnderlineThickness()+ respectively. The latter functions will
+always return the values from the Fontinfo dictionary as opposed to the former
+which will return the currently active values.
+
+Since line ruling is done on the fly, it is possible to change the involved
+parameters in the middle of a session without confusing the cache or removing
+size dependent data.
+
+
+\subsection{Common Information on Fonts and Characters}
+\label{common}%
+This subsection describes some functions making common information
+available. This includes Type 1 and AFM data. Thus, these
+functions partially depend on the existence of AFM data. In order not
+to have to specify this data every time, here are a few conventions:
+\begin{enumerate}
+\item \verb+FontID+ is the valid ID of a declared font.
+\item All functions that require a character index as argument
+ use the currently active encoding vector to determine the
+ character's name
+ belonging to this index and use the character's name to search for the
+ information required.
+\item Some functions do not allow to use the return value for error
+ checking. For this reason every function described in this subsection will
+ set \verb+T1_errno+ appropriately if something goes wrong. See
+ \ref{errorhandling} for the description of the possible values of
+ \verb+T1_errno+.
+\item None of the functions described in this subsection will load a font
+ automatically.
+\end{enumerate}
+
+\subsubsection{Information from FontInfo-Dictionary}
+\label{fontinfodict}%
+\precorr
+\begin{verbatim}
+ char *T1_GetFontName( int FontID)
+\end{verbatim}\index{\verb+T1_GetFontName()+}\postcorr
+This function returns the string object \verb+FontName+ from the
+fontinfo-dictionary of the specified font or a NULL pointer if the font is not
+loaded.
+
+The memory for the returned string is static in this function and should thus
+not be freed by the user. As another consequence, the returned
+string is only constant until the function is called the next time.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetFullName( int FontID)
+\end{verbatim}\index{\verb+T1_GetFullName()+}\postcorr
+This function returns the string object \verb+FullName+ from the
+fontinfo-dictionary of the specified font or a NULL pointer if the font is not
+loaded.
+
+The memory for the returned string is static in this function and should thus
+not be freed by the user. As another consequence, the returned
+string is only constant until the function is called the next time.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetFamilyName( int FontID)
+\end{verbatim}\index{\verb+T1_GetFamilyName()+}\postcorr
+This function returns the string object \verb+FamilyName+ from the
+fontinfo-dictionary of the specified font or a NULL pointer if the font is not
+loaded.
+
+The memory for the returned string is static in this function and should thus
+not be freed by the user. As another consequence, the returned
+string is only constant until the function is called the next time.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetWeight( int FontID)
+\end{verbatim}\index{\verb+T1_GetWeight()+}\postcorr
+It returns the Weight entry from fontinfo dictionary. It is a string
+entry and represents a verbatim classification of the font rather than
+a numerical quantity. In case of an error \verb+NULL+ is returned.
+
+\precorr
+\begin{verbatim}
+ float T1_GetItalicAngle( int FontID)
+\end{verbatim}\index{\verb+T1_GetItalicAngle()+}\postcorr
+The returned value is the italic angle of the font in degrees as a
+float. Notice that the meaning of ItalicAngle is related to the slanting
+of fonts, but not in the sense of \tonelib\ (see
+\ref{transformations}).
+An italic font may be artificially slanted and an artificially slanted
+font in the sense of \tonelib\ may have an italic angle of zero.
+
+\precorr
+\begin{verbatim}
+ int T1_GetIsFixedPitch( int FontID)
+\end{verbatim}\index{\verb+T1_GetIsFixedPitch()+}\postcorr
+This function returns 0 if the font's spacing is proportional and 1 if
+it is fixed.
+
+\precorr
+\begin{verbatim}
+ BBox T1_GetFontBBox( int FontID)
+\end{verbatim}\index{\verb+T1_GetFontBBox()+}\postcorr
+This function returns the bounding box of the font identified by
+\verb+FontID+. It is the bounding box that
+results if all characters of a font are overlayed with their reference point
+falling on the point (0,0). All values are in charspace units. The members
+\verb+lly+ and \verb+urx+ represent the fonts overall descent and ascent,
+respectively.
+
+The font's bounding box is part of the AFM information as well as member in
+the font's private dictionary. It turns out that the information from
+\verb+.afm+- and \verb+.pfa+/\verb+.pfb+-file is not consistent for some
+fonts. \tonelib\ returns the information stored in the font-file itself, since
+I assume it is more consistent to the font's data.
+
+\precorr
+\begin{verbatim}
+ float T1_GetUnderlinePosition( int FontID)
+\end{verbatim}\index{\verb+T1_GetUnderlinePosition()+}\postcorr
+This function returns the underline position of the specified font as given in
+the fontinfo-dictionary. The value is to be interpreted in charspace
+units. If the font is not loaded, 0 is returned since an
+underline position of 0 can be considered impossible for most fonts.
+
+\precorr
+\begin{verbatim}
+ float T1_GetUnderlineThickness( int FontID)
+\end{verbatim}\index{\verb+T1_GetUnderlineThickness()+}\postcorr
+This function returns the thickness of the underlining rule for this font or 0
+if the font is not loaded. 0 is a safe index for an error since a rule of
+height 0 would not be visible anyhow.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetVersion( int FontID)
+\end{verbatim}\index{\verb+T1_GetVersion()+}\postcorr
+The version string from the Type 1 font file is returned. The memory
+where the string is located is managed by the function itself.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetNotice( int FontID)
+\end{verbatim}\index{\verb+T1_GetNotice()+}\postcorr
+The notice string from the Type 1 font file is returned. Again the
+user should not touch the memory where the string is located.
+
+\subsubsection{Metric Information on Glyphs}
+\label{metricinformation}%
+\precorr
+\begin{verbatim}
+ int T1_GetCharWidth( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_GetCharWidth()+}\postcorr
+The character width according to the AFM information is returned in charspace
+units. If no AFM information is available, 0 is returned.
+
+The width of a
+character is the amount of horizontal escapement that the next character is
+shifted to the right with respect to the current position. This information is
+not given in the character's bounding box. Also, the width corresponds to the
+entry \verb+characterWidth+ in the \verb+glyph+-structure, as described in
+\ref{generatingbitmaps}. But since \verb+T1_GetCharWidth()+, returns its
+result in charspace units, the accuracy is much higher than using the value
+of the \verb+glyph+-structure which has only pixel-accuracy.
+
+If there is an extension specified for the font in question, the characters
+width is corrected correspondingly.
+
+\precorr
+\begin{verbatim}
+ BBox T1_GetCharBBox( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_GetCharBBox()+}\postcorr
+The character's bounding box of \verb+char1+ is returned with the elements to
+be interpreted in charspace units. The bounding box of a character is defined
+to be smallest rectangle aligned parallel to the $x$- and $y$-axis of
+the character
+coordinate system which encloses the painted area of the character
+completely. This rectangle is completely specified by specifying its
+lower left and its upper
+right corner. From a programmer's point of view, a characters bounding
+box is defined by the following struct of type \verb+BBox+:
+\begin{verbatim}
+typedef struct
+{
+ int llx; /* lower left x-position */
+ int lly; /* lower left y-position */
+ int urx; /* upper right x-position */
+ int ury; /* upper right y-position */
+} BBox;
+\end{verbatim}
+In case the character is not encoded or no AFM data is available, a box
+containing only zeros is returned.
+
+The bounding box is corrected if an extension value has been applied
+to the font in question.
+
+Since version 0.3-beta, slanted fonts are fully supported, meaning that for
+slanted fonts too a correct bounding box will be returned. This is however
+quite time expensive since the characters' real outline must be considered.
+See the discussion on slanting a font (\ref{transformations}) for an
+explanation of this.
+
+
+\precorr
+\begin{verbatim}
+ int T1_GetStringWidth( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+\end{verbatim}\index{\verb+T1_GetStringWidth()+}\postcorr
+\precorr
+\begin{verbatim}
+ BBox T1_GetStringBBox( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+\end{verbatim}\index{\verb+T1_GetStringBBox()+}\postcorr
+These two functions represent the complement to the above functions on the level
+of strings. All parameters that take influence on the resulting width and
+bounding box must be given in the argument list. Their meaning is identical to
+the meaning they have when calling string rastering functions (see
+\ref{generatingbitmaps}).
+
+
+\precorr
+\begin{verbatim}
+ METRICSINFO T1_GetMetricsInfo( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+\end{verbatim}\index{\verb+T1_GetMetricsInfo()+}\postcorr
+In certain situations bounding box and width of a glyph are required both. In
+these cases it is more convenient to call \verb+T1_GetMetricsInfo()+ which
+returns a structure that contains all information. \verb+METRICSINFO+ is
+defined in \verb+t1lib.h+ as:
+\begin{verbatim}
+typedef struct
+{
+ int width;
+ BBox bbox;
+ int numchars;
+ int *charpos;
+} METRICSINFO;
+\end{verbatim}
+All numbers are to be interpreted in character space units --- they are
+directly taken from AFM data. \verb+width+ is the glyph's width and
+\verb+bbox+ its bounding box which in turn is a struct as defined some
+paragraphs above.
+
+\verb+numchars+ is assigned number of characters in string. If the argument
+\verb+len+ is different from 0, \verb+numchars+ is assigned that value.
+
+\verb+charpos+ is a pointer to an integer array of size \verb+numchars+
+allocated by \verb+T1_GetMetricsInfo()+. During execution this array is filled
+step by step with the horizontal escapement in character space units of the
+respective character relative to the start point of the string glyph which
+corresponds to 0. \verb+charpos+ remains valid until
+\verb+T1_GetMetricsInfo()+ is called the next time. The user should not
+free this memory because this is handled automatically.
+
+The terms concerning the bounding box of slanted fonts mentioned under the
+description of \verb+T1_GetCharBBox()+ apply here as well. The first and the
+last character of \verb+string+ have to be observed spending high effort.
+But nevertheless the correct bounding box is returned.
+
+\precorr
+\begin{verbatim}
+ int T1_GetKerning( int FontID, char char1, char char2)
+\end{verbatim}\index{\verb+T1_GetKerning()+}\postcorr
+This function returns the amount of kerning for the specified character
+pair \verb+char1+ and \verb+char2+. If an extension has been specified
+for the font (see \ref{transformations}), the amount of
+kerning is automatically corrected using the extension factor. The
+value returned has to be interpreted in charspace units.
+
+If no AFM information is available for the font in question, simply 0
+is returned. The same applies if the font is not loaded.
+
+The implementation of this function requires that the kerning pairs in
+the AFM file are sorted in alphabetical order. I am not sure
+whether this condition is found in the specification of the AFM file
+format. If this function doesn't work although AFM kerning data is
+available, this might be the reason.
+
+\precorr
+\begin{verbatim}
+ int T1_QueryLigs( int FontID, char char1,
+ char **successors, char **ligatures)
+\end{verbatim}\index{\verb+T1_QueryLigs()+}\postcorr
+This function implements the interface to the ligature information in
+the AFM data. Ligatures are special character-symbols which are
+substituted if special pairs,
+triples or whatever groups of characters appear in a string. For example,
+``f{}i'' is replaced with the ligature ``fi''. In this example, the ``i'' is
+called {\em successor} and the ``fi'' is the associated ligature.
+
+\verb+char1+ is the character
+which has to be checked for ligatures, i.e., the first character of a possible
+ligature group. \verb+successors+ and \verb+ligatures+ should be addresses of
+pointers to \verb+char+s. These pointers are modified by the
+\verb+T1_QueryLigs()+.
+
+First, \verb+T1_QueryLigs()+ checks how many ligatures are defined for the
+character given by \verb+char1+. Assuming this number is $n$, it then
+defines memory for two arrays of type \verb+char+ with size
+$n$. These arrays are filled with the indices of the
+successor-characters and with
+the indices of the associated ligatures, respectively. The current
+encoding vector is used for this. The addresses of these two arrays
+are written to the
+addresses of the respective pointers \verb+successors+ and \verb+ligatures+.
+They are thus later available to the user in order to access the memory where
+the successor-character and ligatures are specified. The value $n$ is returned
+in order to tell the user how many ligatures were found and to give
+the user information about the end of the two arrays.
+
+If the font is not loaded or AFM data is not available, -1 is returned.
+
+Since this may seem to be a little complicated, here is a programming example:
+\begin{verbatim}
+char *succ, *lig;
+int n_lig, i;
+char char1='f';
+
+/* Get ligature information of character 'f' in font 0: */
+n_lig=T1_QueryLig( 0, char1, &suc, &lig);
+
+/* print out indices of characters and their ligatures */
+for ( i=0; i<n_lig; i++;){
+ printf("First char: %d, + next char: %d --> ligatur: %d\n",
+ char1,
+ succ[i],
+ lig[i]);
+\end{verbatim}
+
+Notice that the arrays where the successor indices and the respective
+ligature indices are stored are static in
+\verb+T1_QueryLigs()+. Thus, they may not be freed and moreover they
+are only valid until the next time \verb+T1_QueryLigs()+ is called.
+
+
+\subsubsection{Character-Encoding Relation}
+\label{characterencodingrelation}%
+
+\precorr
+\begin{verbatim}
+ char *T1_GetCharName( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_GetCharName()+}\postcorr
+This function returns the name of the character indexed by \verb+char1+
+according to the current encoding vector. As said above, the memory where the
+string
+is stored is static to this function so that the user should not free the
+returned pointer. If the font is not loaded, NULL is returned.
+
+\precorr
+\begin{verbatim}
+ int T1_GetEncodingIndex( int FontID, char *char1)
+\end{verbatim}\index{\verb+T1_GetEncodingIndex()+}\postcorr
+This function is the complement to the above function. It returns the lowest
+index of the character with the specified name in the current encoding vector
+as an \verb+int+. If the charactername is not found in the current encoding
+vector or if the font is not loaded, the value -1 is returned.
+
+\precorr
+\begin{verbatim}
+ int *T1_GetEncodingIndices( int FontID, char *char1)
+\end{verbatim}\index{\verb+T1_GetEncodingIndices()+}\postcorr
+This function is an extension of the above function. It is meant for cases
+where all appearences of \verb+char1+ in the encoding vector are requested.
+The return value is an integer array whose elements contain the encoding
+indices where \verb+char1+ appears in increasing order. The first negative
+entry in this array indicates that no more valid indices will follow. In the
+most extreme case we can think of (i.e., where the complete encoding vector is
+occupied by {\em one} character), \verb+T1_GetEncodingIndices()+ will return
+an array of size 257 where the first 256 elements bear their own index and the
+257th element is $-1$. If font \verb+FontID+ is not loaded, this function
+returns \verb+NULL+ and \verb+T1_errno+ will be set appropriately. If
+\verb+char1+ was not found in the encoding vector, a valid array is returned
+but the first element will be $-1$.
+
+
+\precorr
+\begin{verbatim}
+ char **T1_GetAllCharNames( int FontID)
+\end{verbatim}\index{\verb+T1_GetAllCharNames()+}\postcorr
+As described in \ref{encoding}, not all characters of a font need to be
+encoded. A Type 1 may contain the outlines of an arbitrary number of
+characters, but only 256 can be encoded---and thus
+accessed---simultaneously. Since the characternames are inside the encrypted
+portion of
+the Type 1 font file, there is no easy way to find out which characters a font
+defines.
+
+\tonelib\ provides \verb+T1_GetAllCharNames()+ for situations where a
+programmer needs to know what characters are defined in the font file
+identified by \verb+FontID+. The value returned is a pointer to an array of
+\verb+char+ pointers which in turn point to the characternames.
+The array's size is $(n+1)$ where $n$ is the number of defined outlines. The
+$(n+1$)th pointer is \verb+NULL+ to indicate the end of the array.
+An application programmer may use these characternames to construct a
+specialized encoding vector. Here is an example of how to use
+\verb+T1_GetAllCharNames()+. It prints a list of all defined characternames in
+font 0.
+\begin{verbatim}
+ char **ptr;
+ int i;
+ .
+ .
+ .
+ ptr=T1_GetAllCharNames( 0);
+ i=0;
+ while (ptr[i]!=NULL){
+ printf("Charstring %d = %s\n", i, ptr[i]);
+ i++;
+ }
+\end{verbatim}
+
+The memory for storing the pointers and the charactername strings is static in\\
+\verb+T1_GetAllCharNames()+. Thus it remains valid until the function is
+called the next time. The user should not free this memory or if he does, he
+should set the pointer to \verb+NULL+ to indicate the memory has already been
+freed.
+
+\precorr
+\begin{verbatim}
+ int T1_GetNoKernPairs( int FontID)
+\end{verbatim}\index{\verb+T1_GetNoKernPairs()+}\postcorr
+This function returns the number of kerning pairs defined for the font
+identified by \verb+FontID+. The number -1 is returned if an error occured and
+\verb+T1_errno+ will be set. All positive numbers including 0 should be
+considered valid return values.
+
+
+\subsubsection{Administrative Information}
+\label{administrativeinformation}%
+
+
+\precorr
+\begin{verbatim}
+ int T1_GetNoFonts( void)
+\end{verbatim}\index{\verb+T1_GetNoFonts()+}\postcorr
+Usually, this function returns the number of fonts declared in the font
+database file, i.e., the integer quantity from the first line of the font
+database file. However, if some new fonts have been created using
+\verb+T1_CopyFont()+ (see \ref{logicalfonts}) or if some fonts have
+been added to the database
+after initialization (see \ref{addingfonts}), these are also taken into
+account. The number returned by \verb+T1_GetNoFonts()+ minus 1
+is thus the largest valid font ID specification.
+
+\precorr
+\begin{verbatim}
+ int T1_CheckForInit( void)
+\end{verbatim}\index{\verb+T1_CheckForInit()+}\postcorr
+Use this function in order to check whether \tonelib\ is initialized. It
+returns $0$ if initialization has already happened and $-1$ otherwise.
+
+\precorr
+\begin{verbatim}
+ int T1_CheckForFontID( int FontID)
+\end{verbatim}\index{\verb+T1_CheckForFontID()+}\postcorr
+This functions gives information on the load status of the font associated to
+\verb+FontID+. It returns $0$ if the font \verb+FontID+ has not yet been loaded,
+$1$ if it has already been loaded. Finally, a return value of $-1$ indicates
+that either \verb+FontID+ is an invalid specification or \tonelib\ is not
+initialized.
+
+
+\precorr
+\begin{verbatim}
+ char *T1_GetFontFileName( int FontID)
+\end{verbatim}\index{\verb+T1_GetFontFileName()+}\postcorr
+This function returns a pointer to the fontfilename identified by
+\verb+FontID+. In no case, this pointer may be freed since the memory is
+static to this function. The string also is only valid up to the next call of
+this function.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetFontFilePath( int FontID)
+\end{verbatim}\index{\verb+T1_GetFontFilePath()+}\postcorr
+This function returns a pointer to the fully qualified path of the font file
+identified by \verb+FontID+. In no case, this pointer may be freed since the
+memory is static to this function. The string also is only valid up to the
+next call of this function.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetAFMFilePath( int FontID)
+\end{verbatim}\index{\verb+T1_GetAFMFilePath()+}\postcorr
+This function returns a pointer to the fully qualified path of the AFM file of
+the font identified by \verb+FontID+, as used by \tonelib. In case of an error
+\verb+NULL+ is returned. It may also happen that there exists no AFM file for
+the font either because AFM information was generated on the fly at the time
+the font was loaded, or because AFM processing had been disabled at
+initialization time. For those cases \verb+T1_errno+ is not set.
+
+In no case, the returned pointer may be freed since the memory is static to
+this function. The string also is only valid up to the next call of this
+function.
+
+\precorr
+\begin{verbatim}
+ char *T1_GetLibIdent( void)
+\end{verbatim}\index{\verb+T1_GetLibIdent()+}\postcorr
+This function returns the identifier string for the version of \tonelib. For
+example, this could be \verb+0.8-beta+. The string is static in this function
+and should thus not be freed by the user.
+
+
+\subsection{Transformation of Fonts}
+\label{transformations}%
+Transformation of
+Type 1 fonts is generally accomplished by means of concatenating
+so-called transformation matrices. For example, rotation is
+equivalent to concatenation of
+the standard transformation matrix with a special matrix whose elements are
+trigonometric functions evaluated at the rotation angle. In the sense of
+\tonelib, we distinguish between {\em fontlevel transformations} and {\em
+ characterlevel transformations}.
+
+\subsubsection{Fontlevel Transformations}
+\tonelib\ supports three transformations that operate globally on a font's data.
+After applying such a transformation to a font all characters generated from
+then on will be rendered according to that transformation. Moreover, these
+transformed characters are saved in cache for fast future access. This
+principle is thus meant for transformed fonts which are semantically used as
+ordinary text fonts. Creating a font Times-Oblique by slanting a Times-Roman
+would be a typical example.
+
+The first fontlevel transformation is called ``extension'' since it extents a font
+horizontally---makes its characters wider. A font is extended by a call to the
+function
+\precorr
+\begin{verbatim}
+ int T1_ExtendFont( int FontID, double extend)
+\end{verbatim}\index{\verb+T1_ExtendFont()+}\postcorr
+A font that is to be extended may not have size dependent data. If size
+dependent data exists, it must
+explicitly be removed before applying an extension-factor. This is simply a
+security mechanism which prevents the user from mixing up extended and
+non-extended bitmaps. If the font is not loaded or size-dependent data is
+existent, -1 is returned. Otherwise, the function returns 0.
+
+All information on character metrics is automatically adapted to an
+extension-factor different from 1 (see \ref{common}).
+
+Applying an extension-factor to a font is implemented by replacing the current
+extension-factor---initially 1---with the supplied value. Thus, an extension
+can be deleted by specifying a factor 1. Moreover, extending a font two
+times, say, with factor 2, does not yield a font extended by 4. Rather the
+last specified extension, here 2, is applied.
+
+The second type of fontlevel transformation supported by \tonelib\ is {\em
+ slanting}. It is done by a call to the function \precorr
+\begin{verbatim}
+ int T1_SlantFont( int FontID, double slant)
+\end{verbatim}\index{\verb+T1_SlantFont()+}\postcorr
+The slant-factor $s$ tells the rastering algorithm to advance the $x$-coordinate
+of a given point by the product of $s$ with the $y$-coordinate of that
+point. Such fonts are sometimes called {\em oblique}. Another interpretation
+is that we state: $s=\tan(\alpha)$, where $\alpha$ is the well-known
+italic-angle of the font.
+
+Just as above, no size-dependent data may be existent and the font must be
+loaded. In that case 0 is returned, otherwise -1.
+
+As above, the slanting operation is implemented by {\em setting} the
+slant-factor so that a slant may be reset by means of specifying a
+slant-factor of 0.
+
+There is one thing that makes handling of slanted fonts more difficult than
+handling of extended fonts. When
+typesetting strings by concatenating bitmaps, exact information on character
+metrics is necessary. By slanting a character the character's width is not
+affected. But the bounding box is. And while extension---which means
+strictly horizontal scaling independent of the respective
+y-coordinate---simply leads to an extension of the bounding box, there is no
+way to compute the
+bounding box of a slanted character from the bounding box of the respective
+unslanted character. Here is an example.
+\begin{itemize}
+\item Let the character be \verb+\+. When slanting this character with a
+ value of 1, the resulting character will be similar to a vertical line. The
+ bounding box will thus be small in horizontal direction.
+\item If character is \verb+/+, the resulting slanted
+ character will tend to be more horizontal. Thus the resulting bounding box
+ will be much extended in horizontal direction.
+\end{itemize}
+In conclusion
+we can say that the effect of slanting on the bounding box of
+a given character depends on the shape of the character itself.
+
+Since version 0.3-beta the problem with the bounding box of slanted characters
+is handled as follows. The character in question is internally rastered at
+1000 bp and the bounding box of the resulting ``edgelist'' is examined. But no
+bitmap is generated for the character, this limits the computational effort.
+However the difference in time performance between getting a bounding box from
+a ``simple-shaped'' slanted character like ``i'' and getting a bounding box of
+a ``complex-shaped'' character like ``Q'' is clearly noticeable.
+
+The positioning algorithm for string bitmaps has been slightly improved in
+\tonelib\ V.\ 0.3-beta so that now exclusively bitmap metrics are used where
+the bounding boxes are needed. The limitation of slanted fonts appears thus
+only if a user explicitly requests a bounding box of a character/string in an
+artificially slanted font.
+
+The third and most common type of fontlevel transformation allows arbitrary
+linear transformations. This is done by a call to the function
+\precorr
+\begin{verbatim}
+ int T1_TransformFont( int FontID, T1_TMATRIX *matrix)
+\end{verbatim}\index{\verb+T1_TransformFont()+}
+\postcorr
+The transformation is specified by \verb+matrix+ (as described below).
+This function acts by setting the font's transformation matrix to the
+matrix pointed to by \verb+matrix+.
+
+As a final consequence of what has been described so far in this section it
+turns out that \verb+T1_TransformFont()+ overrides whatever slant and extension
+values might have been set before. Conversely, if \verb+T1_SlantFont()+ or
+\verb+T1_ExtendFont()+ are applied to a font after a call to
+\verb+T1_TransformFont()+, the respective values are simply overridden, there
+will be no concatenation. In the following description of transformation
+matrices and their usage, we will also describe how to concatenate an
+arbitrary series of linear transformations.
+
+There are also functions for querying the current values of the quantities
+described above for fontlevel transformations.
+\precorr
+\begin{verbatim}
+ double T1_GetExtend( int FontID)
+\end{verbatim}\index{\verb+T1_GetExtend()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ double T1_GetSlant( int FontID)
+\end{verbatim}\index{\verb+T1_GetExtend()+}\postcorr
+return the current extension and slant values. The function
+\precorr
+\begin{verbatim}
+ T1_TMATRIX T1_GetTransform( int FontID)
+\end{verbatim}\index{\verb+T1_GetTransform()+}\postcorr
+Returns the current transformation matrix as a structure of type
+\verb+T1_TMATRIX+ which will be described in detail in the next subsubsection.
+
+\subsubsection{Transformation at Rastering Time}
+This kind of transformation is the most generic one and allows arbitrary
+transformations. A transformation $(x',y')^T$ of a given location $(x,y)^T$ is
+given by the following set of linear equations:
+\begin{eqnarray*}
+x' & = a_{11} x + a_{21} y \\
+y' & = a_{12} x + a_{22} y
+\end{eqnarray*}
+Here, the matrix
+\begin{displaymath}
+\mathbf{A}=
+\left(
+\begin{array}{cc}
+a_{11} & a_{21} \\
+a_{12} & a_{22}
+\end{array}
+\right)
+\end{displaymath}
+is referred to as the {\em transformation matrix}. In \tonelib\ the following
+type definition is used for such transformation matrices:
+\begin{verbatim}
+typedef struct
+{
+ double cxx; /* corresponds to a11 */
+ double cyx; /* corresponds to a21 */
+ double cxy; /* corresponds to a12 */
+ double cyy; /* corresponds to a22 */
+} T1_TMATRIX;
+\end{verbatim}
+Each of the rastering functions expects to get a pointer to an object of type
+\verb+T1_MATRIX+, or \verb+NULL+ if no transformation is to be applied.
+If any transformation has been specified, the resulting glyph is never kept in
+cache memory. Thus, if for some reason caching should be disabled for
+non-transformed characters, simply a pointer to the
+unity matrix
+%$\left(
+%\begin{array}{cc}
+%1.0 & 0 \\
+%0 & 1.0
+%\end{array}
+%\right)$
+could be specified to the rastering function to achieve this.
+
+The user has the possibility of either allocating and creating the
+transformation matrices by himself or to use predefined functions of
+\tonelib. There are 8 different functions for generating transformed
+characters. Figure \ref{figure:transformations} gives an example of each
+function using the character ``g''.
+
+\begin{figure}[t]
+\hfill
+\includegraphics[scale=0.5]{mirrorh}
+\hfill
+\includegraphics[scale=0.5]{mirrorv}
+\hfill
+\includegraphics[scale=0.5]{shearh}
+\hfill\break
+\noindent\vrule width 0pt\hfill\verb+T1_MirrorHMatrix()+\hfill
+\verb+T1_MirrorVMatrix()+\hfill
+\verb+T1_ShearHMatrix()+\hfill\break
+% line 2
+\vskip0.5cm
+\hfill
+\includegraphics[scale=0.5]{shearv}
+\hfill
+\includegraphics[scale=0.5]{extenth}
+\hfill
+\includegraphics[scale=0.5]{extentv}
+\hfill\break
+\noindent\vrule width 0pt\hfill\verb+T1_ShearVMatrix()+\hfill
+\verb+T1_ExtendHMatrix()+\hfill
+\verb+T1_ExtendVMatrix()+\hfill\break
+% line 3
+\vskip0.5cm
+\hfill
+\includegraphics[scale=0.5]{rotate}
+\hfill
+\includegraphics[scale=0.5]{arbitrary}
+\hfill\break
+\noindent\vrule width 0pt\hfill\verb+T1_RotateMatrix()+\hfill
+\verb+T1_TransformMatrix()+\hfill\break
+\vskip3mm
+\hrule\vskip3mm\small
+\caption{\label{figure:transformations}Typical examples for the predefined
+ functions for generating transformation matrices in \tonelib, applied to the
+ character ``g''.}
+\end{figure}
+
+Before describing each particular function we should discuss the first
+argument because this is common to all matrix transformation functions. This
+first argument, in case it is not \verb+NULL+, is expected to be a pointer to
+an already existent valid \verb+T1_TMATRIX+ object. The transformation to be
+applied is then done by multiplying the existent matrix with the new
+matrix. In other words, the existent matrix is replaced by the concatenation of
+the two matrices. If a \verb+NULL+ is specified as argument, the new matrix is
+allocated by the respective function and then set to the concatenation of the
+unity matrix with the desired transformation. Thus, to remove a matrix from
+memory, the pointer simply has to be given to \verb+free()+, no matter how
+many transformations have been applied to this matrix before.
+
+We should now describe the functions for generating transformation matrices:
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_MirrorHMatrix( T1_TMATRIX *matrix)
+\end{verbatim}\index{\verb+T1_MirrorHMatrix()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_MirrorVMatrix( T1_TMATRIX *matrix)
+\end{verbatim}\index{\verb+T1_MirrorVMatrix()+}\postcorr
+simply change the sign of the matrix coefficients $a_{11}$ and $a_{22}$
+respectively. This has the optical effect of mirroring the character at the
+horizontal line $y=0$ or at the vertical line $x=0$, respectively. These
+functions represent a specialized form of
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_ExtendHMatrix( T1_TMATRIX *matrix, float extent)
+\end{verbatim}\index{\verb+T1_ExtendHMatrix()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_ExtendVMatrix( T1_TMATRIX *matrix, float extent)
+\end{verbatim}\index{\verb+T1_ExtendVMatrix()+}\postcorr
+These functions allow arbitrary scaling in the respective coordinate
+direction. Specifying \\
+\verb+extent=-1+ exactly yields mirroring at the
+corresponding axis.
+
+Furthermore, there are two transformations where one coordinate depends on
+itself and on the other coordinate. This is called shearing, slanting or also
+obliqueing. It is possible in both directions using the functions
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_ShearHMatrix( T1_TMATRIX *matrix, float shear)
+\end{verbatim}\index{\verb+T1_ShearHMatrix()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_ShearVMatrix( T1_TMATRIX *matrix, float shear)
+\end{verbatim}\index{\verb+T1_ShearVMatrix()+}\postcorr
+In case of horizontal shearing, the factor \verb+shear+ is equal to
+$\tan(\alpha)$, where $\alpha$ may be interpreted as the italic angle. It is
+measured from the positive vertical axis in mathematical negative direction.
+Correspondingly, for vertical shearing \verb+shear+ equals $\tan(\beta)$,
+where $\beta$ is the angle measured from the horizontal axis in mathematically
+positive direction.
+
+Rotation of glyphs is achieved using
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_RotateMatrix( T1_TMATRIX *matrix, float angle)
+\end{verbatim}\index{\verb+T1_RotateMatrix()+}\postcorr
+This function evaluates the trigonometric functions at the value of
+\verb+angle+ and concatenates the transformation matrix with
+\begin{displaymath}
+\left(
+\begin{array}{cc}
+\cos(\alpha) & -\sin(\alpha) \\
+\sin(\alpha) & \cos(\alpha)
+\end{array}
+\right)
+\end{displaymath}
+$\alpha$ is expected to be specified in degrees. It is measured according
+standard mathematical conventions.
+
+There is one more function which allows to set all matrix coefficients
+explicitly. It gives thus complete control over the transformation. This might
+be necessary to typeset text in a circle, for example. The syntax of this
+function is
+\precorr
+\begin{verbatim}
+ T1_TMATRIX *T1_TransformMatrix( T1_TMATRIX *matrix,
+ float cxx, float cyx,
+ float cxy, float cyy)
+\end{verbatim}\index{\verb+T1_TransformMatrix()+}\postcorr
+
+\subsubsection{{\tt t1lib} and PostScript: Notes on Transformation Matrices}
+In order to avoid confusion about transformation matrices, we should briefly
+discuss the differences between \tonelib- and PostScript transformation
+matrices. In \tonelib-nomenclature a coordinate description is assumed to be
+represented by a column vector $(x,y)^T$. In contrast, PostScript assumes a
+coordinate to be represented by a row vector $(x,y)$. This leads to an
+exchanged meaning of the second and third matrix element between \tonelib\ and
+PostScript. From the mathematical point of view this is caused by matrix
+transposition. To make this clear, let me quote the matrix
+\begin{displaymath}
+\mathbf{A}_{\mbox{\footnotesize PostScript}}=
+\left(
+\begin{array}{ccc}
+a & b & 0\\
+c & d & 0\\
+t_x & t_y & 1
+\end{array}
+\right)
+\end{displaymath}
+from the PostScript Language Reference Manual (Adobe, Red Book). If we forget
+about translation which in this sense is not implemented by \tonelib, we only
+have to consider the top left submatrix consisting of $a$, $b$, $c$ and $d$.
+The \tonelib-equivalent to this matrix would be written as
+\begin{displaymath}
+\mathbf{A}_{\mbox{\tt\footnotesize t1lib}}=
+\left(
+\begin{array}{cc}
+a & c \\
+b & d \\
+\end{array}
+\right)
+\end{displaymath}
+I.e., the meaning of $b$ and $c$ is exchanged. Notice that font matrices as
+found in Type 1 font files have to be interpreted according to the PostScript
+notation. But a user should never come close to something other than the
+\tonelib\ transformation matrices
+
+
+\subsection{Stroking of Character Outlines}
+\label{stroking}%
+Most available Type 1 fonts internally specify the numeric value
+\verb+PaintType+ as $0$. This indicates that the mathematical outline
+definitions of the characters consist of paths that represent the left and
+right---or inner and outer---borders of the character area to be filled with
+ink. In particular, this means that every subpath of a character definition
+must be closed. When filling characters, the curves that describe the outline
+are infinitely thin and the area between paths is of interest.
+
+By contrast, there are fonts that specify \verb+PaintType+ as $1$. These are
+also known as {\em stroked fonts}. Basically, their characters' shapes are
+generated by travelling along the mathematically thin defining curves using a
+pen with some finite width. The penwidth used here usually is specified in the
+font itself by means of the quantity \verb+StrokeWidth+.
+
+Using a somewhat unusual implementation, \tonelib\ can
+\begin{itemize}
+\item image stroked fonts with \verb+PaintType+ 1,
+\item stroke fonts that have \verb+PaintType+ 0,
+\item deal with variable strokewidths for both paint types.
+\end{itemize}
+In particular at low resolutions and when using large penwidths, the results
+of stroking may fall short of the quality of other general graphics tools like
+e.g.~native PostScript interpreters. Also hinting generally is disabled when
+creating stroked character outlines. For the interested reader, the
+implementation of stroking is outlined in \ref{strokingimplementation}
+(page~\pageref{strokingimplementation}).
+
+The process of stroking in \tonelib\ is treated similar to the process of
+transformation. Therefore, firstly, a font can be generally switched to be a
+stroked font. This is achieved using
+\precorr
+\begin{verbatim}
+ int T1_StrokeFont( int FontID, int dostroke)
+\end{verbatim}\index{\verb+T1_StrokeFont()+}\postcorr
+Here, \verb+FontID+ identifies the font to be switched. The parameter
+\verb+dostroke+ determines the future rastering behavior. If it equals 0, the
+font's characters will be filled and for any other value the characters will
+be stroked. The function returns 0 in case of success.
+\verb+T1_StrokeFont()+ requires the font \verb+FontID+ to be loaded. If the
+font is not loaded \verb+T1_errno+ will be set appropriately and the function
+returns -1. After switching a font to {\em stroked}, its characters are cached
+as usual. It is therefore important that, at the time where
+\verb+T1_StrokeFont()+ is called, no size-dependent data does exist. If this
+condition is violated, the function will fail too and set \verb+T1_errno+ to
+\verb+T1ERR_OP_NOT_PERMITTED+.
+
+The second method to control the rasterizer mode for the font \verb+FontID+ is
+to use the function pair
+\precorr
+\begin{verbatim}
+ int T1_SetStrokeFlag( int FontID)
+\end{verbatim}\index{\verb+T1_SetStrokeFlag()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ int T1_ClearStrokeFlag( int FontID)
+\end{verbatim}\index{\verb+T1_ClearStrokeFlag()+}\postcorr
+for enabling and disabling stroking, respectively. These two functions return
+0 on successful completion and -1 in case of a failure. They can only fail if
+\verb+FontID+ is not valid, in which case \verb+T1_errno+ is set to
+\verb+T1ERR_INVALID_FONTID+. Using these functions, switching the stroking is
+hence possible at any time. The netto effect is that caching will be disabled
+if the actually selected rasterizer mode does not match the one of the cached
+characters. The performance then will degrade for the rasterizer mode that is
+not the base mode of the font in question.
+
+If stroked characters and filled characters are required for one particular
+font while preserving good performance, using logical fonts is the tool of
+choice (see Sec.~\ref{logicalfonts}, page~\pageref{logicalfonts}).
+
+The currently active rasterizer mode for the font \verb+FontID+ can also be
+queried. This is done using
+\precorr
+\begin{verbatim}
+ int T1_GetStrokeMode( int FontID)
+\end{verbatim}\index{\verb+T1_GetStrokeMode()+}\postcorr
+If \verb+FontID+ is not valid, $-1$ is returned and \verb+T1_errno+ is set to
+\verb+T1ERR_INVALID_FONTID+. In any other case, the following values may be
+returned:
+\begin{itemize}
+\item \verb+0+: The rasterizer mode is {\em Fill} and filled characters are
+ cached. For stroked fonts with a \verb+PaintType+ of $1$, of course, the
+ characters are stroked and these stroked characters are cached anyhow.
+\item \verb+1+: Stroking is enabled, while filled characters are cached. Each
+ rasterization request is performed on the fly, as for nontrivial
+ transformations.
+\item \verb+2+: Filling is enabled but stroked characters are
+ cached. Rasterization again is performed on the fly.
+\item \verb+3+: Stroking is enabled and stroked characters are cached.
+\end{itemize}
+
+The width of the virtual pen used to trace the character outlines can also be
+adjusted. The function
+\precorr
+\begin{verbatim}
+ int T1_SetStrokeWidth( int FontID, float strokewidth)
+\end{verbatim}\index{\verb+T1_SetStrokeWidth()+}\postcorr
+sets up \verb+strokewidth+ as the pen width used to stroke characters from
+font \verb+FontID+. It is interpreted in charspace units and hence directly
+comparable to the \verb+StrokeWidth+ parameter of stroked fonts.
+If this function succeeds, $0$ is returned. The function call might
+also be unsuccessful, in which case $-1$ is returned. The value of
+\verb+T1_errno+ then gives a hint to the reason of the failure. If set to
+\verb+T1ERR_INVALID_FONTID+, the font was not loaded. The value
+\verb+T1ERR_INVALID_PARAMETER+ indicates that a negative strokewidths has
+been specified. Finally, \verb+T1ERR_OP_NOT_PERMITTED+ may appear if stroked
+characters are cached for the font in question, size dependent data exists,
+and the requested strokewidth did not equal the one used at the time where
+the cache data initially has been built. Allowing to setup an arbitrary
+strokewidth under the latter circumstances might fillup the cache for one font
+with characters rasterized using inconsistent strokewidths, which has to be
+avoided. From this discussion it becomes suggesting not to cache stroked
+character at all, if stroking should be done using variable strokewidths.
+
+The pen width for a given font \verb+FontID+ may be queried at any time using
+\precorr
+\begin{verbatim}
+ float T1_GetStrokeWidth( int FontID)
+\end{verbatim}\index{\verb+T1_GetStrokeWidth()+}\postcorr
+If the value $0.0$ is returned, this either indicates that the characters are
+filled or that the font in question is not loaded. Then, \verb+T1_errno+ is
+also set to \verb+T1ERR_INVALID_FONTID+.
+
+
+\subsection{Antialiasing}
+\label{antialiasing}%
+\subsubsection{General Description}
+When fonts are displayed on screen at low sizes, the shapes of characters often
+get damaged because of rounding errors---a pixel can generally present two
+states: painted or non-painted. But the human eye can be fooled in a
+way that it
+``thinks'' sub-pixel accuracy is given on the screen. This is done by
+considering which pixels are filled with ink to what degree and
+giving the
+physical pixel an appropriate shade of gray. For example, a pixel whose area
+would be covered 50\% would get a 50\% gray shade. This technique is called
+{\em antialiasing}.
+
+There are several ways to implement antialiasing. \tonelib\ implements
+antialiasing by internally generating a bitmap larger than needed
+and then subsampling. Depending on the subsampling factor which may be 2 or 4,
+this principle yields glyphs with
+5 or 17 shades of gray including black and white.
+
+There are three functions for generating antialiased glyphs:
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AASetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetChar()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AASetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetString()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH* T1_AASetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetRect()+}\postcorr
+Note the ``\verb+AA+'' in the functions names which stand for
+\underline{A}nti\underline{A}liasing. The usage is identical to the usage of
+the functions \verb+T1_SetChar()+, \verb+T1_SetString()+ and
+\verb+T1_SetRect()+. So see \ref{generatingbitmaps} for an explanation of the
+arguments and their interpretation.
+
+When an antialiased glyph is requested, the supplied \verb+size+-value is
+multiplied by the current subsampling factor. For now, let us assume it is 2.
+Then the respective function for generating non-antialiased glyphs
+is called with all other arguments unchanged. The result is a bitmap twice as
+high and twice as wide as the user requested. Now, a $2\times2$ mask is moved
+over this bitmap and the number of painted pixels in this mask is considered
+at each place. According to the number of painted pixels one of 5 different
+gray shades is assigned to the resulting pixel. Since the mask is moved with
+an increment of 2 pixels in horizontal and vertical direction, the bitmap is
+at the same time subsampled by 2. Thus, the resulting bitmap is just of the
+size the user requested and its pixels each contain one of 5 gray shades.
+
+Conceptually, the same applies for subsampling with 4. In this case the mask is
+of size $4\times4$ and there will be 17 distinct gray shades including black
+and white. The computational effort is considerably larger so that 4 $\times$
+subsampling should only be used for very small sizes.
+
+When moving the mask over double-sized bitmap it is aligned properly with
+respect to the characters' baseline (zero height) rather than with the
+characters' top or bottom line. This principle ensures, that the most important
+visual guideline in running text, the baseline, is represented in a consistent
+manor. This is especially important if one is using a serif-font.
+Thanks to Raph Levien, the algorithm described above in a verbose manor has
+been replaced by a much
+faster lookup-algorithm in \tonelib\ V.\ 0.4-beta.
+
+\subsubsection{Setting Operating Parameters}
+Applications can use both $2\times$ and $4\times$ antialiasing arbitrary
+mixed. Switching between the two modes is achieved using
+\precorr
+\begin{verbatim}
+ int T1_AASetLevel( int level)
+\end{verbatim}\index{\verb+T1_AASetLevel()+}\postcorr
+The argument \verb+level+ should be either \verb+T1_AA_LOW+ ($=2$) or
+\verb+T1_AA_HIGH+ ($=4$). Any other values are ignored and \verb+T1_errno+ is
+set appropriately. This function is to be called after initialization. The
+default value after initialization is \verb+T1_AA_LOW+. The current value can
+also be queried by issuing a call to
+\precorr
+\begin{verbatim}
+ int T1_AAGetLevel( void)
+\end{verbatim}\index{\verb+T1_AASetLevel()+}\postcorr
+The returned value is current level. Switching between the two antialiasing
+modes should be quite fast since apart from a little error checking
+essentially only one simple variable is set.
+
+There is one more value that may be specified for \verb+level+, namely
+\verb+T1_AA_NONE+. \verb+T1_AA_NONE+ is identical to 1 which means that no
+subsampling at all is done. But the resulting glyph, having only fore- and
+background colors is returned as a bytemap instead of as a bitmap. This is
+intended for situtations where an antialiased glyph should be concatenated
+with a (possibly large) non-antialiased glyph using the function
+\verb+T1_ConcatGlyphs()+. In that case, the depths of the two glyphs have to
+be identical. There is probably not much more sense in setting \verb+level+ to
+\verb+T1_AA_NONE+.
+
+As described before, the result of the \verb+T1_AASet..()+ functions is
+strictly spoken no longer a
+bitmap since more than one bit is used to
+represent one pixel. The function
+\precorr
+\begin{verbatim}
+ int T1_AASetBitsPerPixel( int bpp)
+\end{verbatim}\index{\verb+T1_AASetBitsPerPixel()+}\postcorr
+allows the user to specify how many bits should be used to represent one
+pixel. Allowed values for \verb+bpp+ are 8, 16, 24 and 32. However, if 24 is
+specified, internally 32 will be used since the pixel are then addressed as
+objects of type \verb+long+. Antialiased glyphs may grow quite large,
+especially when
+using \verb+bpp+ = 32. The value of \verb+bpp+ is written into the member
+\verb+bpp+ of the \verb+glyph+-structure (see \ref{generatingbitmaps} on page
+\pageref{generatingbitmaps}). That way a user can check whether a
+glyph is antialiased or not. It is possible to work with antialiased
+and non-antialiased glyphs at the same time.
+It is also possible to directly query the value of bits per pixel by using
+\precorr
+\begin{verbatim}
+ int T1_AAGetBitsPerPixel( void)
+\end{verbatim}\index{\verb+T1_AAGetBitsPerPixel()+}\postcorr
+The value returned is the number of bits per pixel used.
+
+In order to make the handling of antialiased glyphs as flexible as possible,
+the values to be written into the pixels for different gray values
+may (and must) be explicitly specified. For low level antialiasing this is
+done by calling the function
+\precorr
+\begin{verbatim}
+ int T1_AASetGrayValues( unsigned long white,
+ unsigned long gray75,
+ unsigned long gray50,
+ unsigned long gray25,
+ unsigned long black)
+\end{verbatim}\index{\verb+T1_AASetGrayValues()+}\postcorr
+For lower \verb+bpp+ values only the lower bits are used. For high level
+antialiasing this kind of graylevel specification is not economical since 17
+arguments
+would have to be specified. Instead, another function is used which expects a
+pointer an array of \verb+unsigned long+'s:
+\precorr
+\begin{verbatim}
+ int T1_AAHSetGrayValues( unsigned long *grayvals)
+\end{verbatim}\index{\verb+T1_AAHSetGrayValues()+}\postcorr
+The array \verb+grayvals+ points to must contain 17 entries. Element 0 is
+expected to specify the background color's pixel value and element 16
+represents the foreground color. Calling one of these two functions involves
+also a new setup of the lookup tables. It should thus only be done if some
+color value really has changed.
+
+In case the antialiasing level is set to \verb+T1_AA_NONE+ as described
+above, the function
+\precorr
+\begin{verbatim}
+ int T1_AANSetGrayValues( unsigned long bg, unsigned long fg)
+\end{verbatim}\index{\verb+T1_AANSetGrayValues()+}\postcorr
+must be used to set foreground and background color. In conclusion, it turns
+out that each antialiasing level has its own lookup tables which have to be
+initialized as soon as either foreground color, background color or both have
+changed.
+
+Each of the three graylevel sets described above can also be queried by the
+user. This is done using one of the functions
+\precorr
+\begin{verbatim}
+ int T1_AAGetGrayValues( long *pgrayvals)
+\end{verbatim}\index{\verb+T1_AAGetGrayValues()+}\postcorr
+\precorr
+\begin{verbatim}
+ int T1_AAHGetGrayValues( long *pgrayvals)
+\end{verbatim}\index{\verb+T1_AAHGetGrayValues()+}\postcorr
+\precorr
+\begin{verbatim}
+ int T1_AANGetGrayValues( long *pgrayvals)
+\end{verbatim}\index{\verb+T1_AANGetGrayValues()+}\postcorr
+Here, \verb+pgrayvals+ is the start address of an array of \verb+long+-values
+to which the respective grayvalues are written. This memory must thus be
+supplied by the user. These functions will write 5
+(\verb+T1_AAGetGrayValues+), 17 (\verb+T1_AAHGetGrayValues+) and 2
+(\verb+T1_AANGetGrayValues+) respectively to the location given by
+\verb+pgrayvals+. These functions are to be called after initialization. If
+something goes wrong -1 is returned and \verb+T1_errno+ will be set
+accordingly. Otherwise 0 is returned.
+
+
+\subsubsection{Smart Antialiasing}
+\label{smartantialiasing}%
+Antialiasing improves legibility for small sizes but is not that much useful
+for large sizes. To make a compromise between computation time, system
+resources and optical appearance it might be advantageous to use
+\verb+T1_AA_HIGH+ for small sizes, \verb+T1_AA_LOW+ for medium sizes and
+\verb+T1_AA_NONE+ for large sizes. Of course, for large sizes the
+non-antialiasing functions could be used which still need less resources.
+
+In order to free the user from having to switch the antialiasing level explicitly,
+\tonelib\ can be told to do this switching
+automatically, depending on the size requested. This is called {\em Smart
+ Antialiasing}. It is disabled by default and can be toggled by a call to
+\precorr
+\begin{verbatim}
+ int T1_AASetSmartMode( int smart)
+\end{verbatim}\index{\verb+T1_AASetSmartMode()+}\postcorr
+The quantity \verb+smart+ should be either be \verb+T1_YES+ (which corresponds
+to 1) or \verb+T1_NO+ (which corresponds to 0. Notice that the current
+antialiasing level as set by \verb+T1_AASetLevel()+ is not affected by
+this. After having switched off smart antialiasing the former antialiasing
+level is restored. When smart antialiasing is active still has to take care
+for setting the lookup tables after a color change has happened.
+
+The numerical limits of the requested size at which \tonelib\ will switch
+between the different antialiasing levels may be specified using
+\precorr
+\begin{verbatim}
+ int T1_AASetSmartLimits( float limit1, float limit2)
+\end{verbatim}\index{\verb+T1_AASetSmartLimits()+}\postcorr
+Here, \verb+limit1+ is the value of size at which \tonelib\ switches from
+\verb+T1_AA_HIGH+ to \verb+T1_AA_LOW+ and \verb+limit2+ is the value of size
+at which \tonelib\ switches from \verb+T1_AA_LOW+ to \verb+T1_AA_NONE+. The
+default values are 20.0 for \verb+limit1+ and 60.0 for \verb+limit2+. This
+means for sizes smaller than 20.0 \verb+T1_AA_HIGH+ will be used and for sizes
+equal to or greater than 60.0 \verb+T1_AA_NONE+ will be used. The intermediate
+range is covered by \verb+T1_AA_LOW+. These values are suitable for
+applications that display on screen when the device resolution has been left
+at the default value of 72 dpi.
+
+
+\subsubsection{Caching of Antialiased Character Glyphs}
+\label{aacaching}%
+Generally, antialiased glyphs are not cached in \tonelib\ because this
+involves several problems which are hardly to solve. One main problem is shown
+in figure \ref{figure:subpixelpositioning}.
+\begin{figure}
+\centerline{\includegraphics[scale=10]{Tee}}\relax
+\vskip3mm
+\hrule\vskip3mm\small
+\caption{\label{figure:subpixelpositioning} The string ``Tee'' (which is the
+ German word for ``tea'') rastered at 13~bp, using $4\times$ antialiasing.
+ Notice the different representations of the character ``e''.}
+\end{figure}
+Obviously the character ``e'' appears twice in different representations. This
+is intentional and is referred to as sub pixel positioning. In the left ``e''
+the letter is perceived somewhat more to the left with respect to the pixels
+that represent the character. Conversely, the second ``e'' seems to lie
+somewhat more to the right within the pixels. The advantage of this technique
+is that characters can be shifted by some fractional amount of a pixel at low
+sizes.\footnote{The opinions whether this and antialiasing in general is of
+ advantage for readability vary, so please consider this the opinion of the
+ author. } On the other hand the problem is introduced that each character
+can have more than one representation in graylevels, depending on how much
+subpixel shift is needed.
+
+One further problem caused by subsampling is that certain information is
+irreversibly lost in the graylevel representation. For example, if you have a
+graylevel pixel of intensity 50\% (whatever the real color is), then, in case
+of $2\times$ antialiasing, you will know that in the $2\times 2$ input bitmap
+two pixels had been set to foreground, but you would not know {\em which} two
+these had been. But this information is important for concatenating and
+blitting of antialiased bitmaps: it may well happen that two pixels with 50\%
+gray that lie over each other had to produce an output pixel of 50\%, 75\%
+or 100\% gray (where 100\% gray means full foreground intensity).
+
+To avoid these problems, \tonelib\ generally does not cache antialiased
+glyphs. Instead, it works on true bitmaps which are then subsampled at the
+last possible stage to an antialiased glyph. Applications that do not use
+anything more than the functions that yield char bitmaps or bytemaps, could
+profit from caching of antialiased characters. Such applications could specify
+\verb+T1_AA_CACHING+ as an additional ingredient to the \verb+log+ argument of
+the function \verb+T1_InitLib()+ which initializes \tonelib. This is done by
+OR'ing the value of \verb+log+ with \verb+T1_AA_CACHING+ as described in
+\ref{initialization}. If this flag had been specified at initialization time,
+\verb+T1_AASetChar()+ will cache the bytemaps it has generated and will take
+them from cache in future requests.
+
+When caching antialiased glyphs, each size gets up to four distinct cache
+areas, one for bitmaps and one for $1\times$, $2\times$ and $4\times$ subsampled
+bytemaps each. As soon as a string-generating function is called these cached
+antialiased glyphs cannot be used for the reasons discussed before. The
+developer of an application should thus carefully think about whether
+a possibly marginal performance gain is really worth this much higher
+effort. If in doubt, simply check it out. Applications like \verb+xdvi+ which
+place isolated character glyphs on a sheet could use this feature, however, and
+profit from it.
+
+
+\subsection{Interface to Outlines}
+\label{outlines}%
+Although \tonelib\ is meant for generating bitmaps from Type 1 outline fonts,
+there is a set of functions for accessing outline data.
+There are several reasons for this. Firstly, outline
+descriptions are, within the given arithmetic constraints, mathematically exact.
+Secondly and related to the previous point, in certain cases where exact
+subpixel positioning is needed, the functionality of grid-fitting before
+rasterization is needed. This can only be done accurately based on
+outlines. To illustrate this, consider figure \ref{figure:whyoutlines}.
+% -parameters for this figure: size 50.0
+% angle 35
+% arg: --checkConcat[Glyphs|Outlines]
+%
+\begin{figure}[t]
+\hfill
+a) \includegraphics[scale=1.0]{concatglyphs}
+\hfill
+b) \includegraphics[scale=1.0]{concatoutlines}
+\hfill\break
+\vskip3mm
+\hrule\vskip3mm\small
+\caption{\label{figure:whyoutlines}Two concatenated bitmaps, a) concatenation
+ done based on bitmaps by blitting and b) based on outlines and then filled.}
+\end{figure}
+When looking at the concatenated glyph a), it appears that the underline rule
+has a small step where the two words touch.\footnote{Depending on the
+ resolution and quality of the hardcopy you are reading, the effect might be
+ hardly or not all noticeable.} The reason is, that the second part of the
+glyph had been rastered with respect to a pixel coordinate of exactly $(0,0)$.
+Since the start of the second word in the resulting glyph does not exactly
+fall on an integer pixel location, bitmap blitting causes an artifact in the
+visual line of the underlining rule. Strings rotated at angles that are not
+multiples of $90^\circ$ are prone to produce such effects. In contrast the
+concatenated glyph b) does not show such effects because both partial glyphs
+are placed mathematically exact and then filled. Thirdly, if the outline of a
+character is available, it can be used for whatever. For example, the outline
+can be filled by another rasterizer, it can by altered, it can be stroked and
+so on. \tonelib\ makes outlines as they are internally used by the rasterizer
+available. We will discuss how to interprete and access outlines in the
+remainder of this section.
+\subsubsection{Outline Format}
+\label{outlineformat}%
+Before going into implementation details the general structure of a Type 1
+outline is described. We will consider the simple fictive character whose
+outline is shown in figure \ref{figure:generaloutline}.
+\begin{figure}[t]
+\hfill
+\includegraphics[scale=1.0]{outlines}
+\hfill\break
+\vskip3mm
+\hrule\vskip3mm\small
+\caption{\label{figure:generaloutline}The outline of a fictive character.}
+\end{figure}
+We assume that scaling, grid fitting and hinting has already been carried out.
+Then, the outline is given by set of points $P_i$ and segments connecting those
+points. There are:
+\begin{itemize}
+\item Move-segments (type = \verb+T1_PATHTYPE_MOVE+): These are straight
+ segments which cause the current position to be displaced by some offset.
+ Since the starting point of a segment is always implicitly the current
+ point, only one argument is needed, $P_{dest}$, the destination point. In
+ the figure, $P_1$--$P_2$ and $P_{2}$--$P_{12}$ are Move-segments. In this
+ simple case they displace from the characters origin to some starting point
+ of the outline and from the ending point of the outline to the point where
+ the next character would have to be placed (the horizontal escapement).
+\item Line-segments (type = \verb+T1_PATHTYPE_LINE+): These are part of the
+ path to be filled later. In analogy to the Move-segment, one argument,
+ $P_{dest}$, is required for Line-segments. In the figure, $P_{11}$--$P_2$ is
+ a Line-segment.
+\item Bezier-segments (type = \verb+T1_PATHTYPE_BEZIER+): These are curve
+ segments. Their shape is defined by a starting point (always the current
+ point here), an ending point $P_{dest}$ and two control points $P_B$,
+ $P_C$. These four points are the parameters of what is called a third order
+ Bezier spline.\footnote{The mathematical defining equation represents a
+ special case of a Bernstein polynom which was exploited by {\sc Bezier} in
+ the context of solid modeling. The curve especially has the property that
+ it may be approximated efficiently by straight line segments in a few
+ iterations.} The resulting curve has the following
+ properties:
+ \begin{itemize}
+ \item It starts at the first point $P_{current}$.
+ \item It ends at the fourth point $P_{dest}$.
+ \item The line that goes through the points $P_{current}$ and $P_{B}$ is the
+ tangent to the curve from the right side at the starting point $P_{current}$.
+ \item In analogy, the line that goes through the points $P_{C}$ and
+ $P_{dest}$ is the tangent to the curve from the left side at the ending
+ point $P_{dest}$.
+ \item The resulting curve will be enclosed completely by the convex area
+ that is defined by connecting the definition points with straight line
+ segments.
+ \end{itemize}
+ Our fictive character outline in figure \ref{figure:generaloutline}
+ has three Bezier-segments, $P_{2}$--$P_{3}$--$P_{4}$--$P_{5}$,
+ $P_{5}$--$P_{6}$--$P_{7}$--$P_{8}$ and
+ $P_{8}$--$P_{9}$--$P_{10}$--$P_{11}$. Notice that it is easily possible to
+ achieve a smooth tangent transition from one curve-segment to the next by
+ choosing the involved points from a straight line.
+\end{itemize}
+For Type 1 fonts in general, the following rules for interpreting coordinate
+specifications hold:
+\begin{itemize}
+\item All point specifications are relative to the {\em current
+ point}.
+\item For Bezier-segments, $P_{B}$, $P_{C}$ and $P_{dest}$ all are relative to
+ $P_{current}$.
+\item Initially, i.e. when a character outline is started, the current point
+ is at the origin $(0,0)$ of the character.
+\end{itemize}
+Additionally, for this special rasterizer implementation, the following terms
+apply:
+\begin{itemize}
+\item The vertical coordinate is---in contrast to PostScript---inverted, i.e.,
+ the $y$-axis points down.
+\item Once hinted and gridfitted, the outline point coordinates are described
+ in {\em fractional pixels}. A ``fractpel'' is of type \verb+long+ and
+ describes the location in $2^{16}$th fractions of a pixel. To convert from
+ pixel to fractional pixel and vice versa, the macros
+ \verb+T1_TOPATHPOINT(p)+\index{\verb+T1_TOPATHPOINT()+} and
+ \verb+T1_NEARESTPOINT(fp)+\index{\verb+T1_NEARESTPOINT()+} are provided.
+\end{itemize}
+
+Before describing the functions for retrieving outlines the format in which
+outlines are presented in C will be described. A point specification is done
+in the following structure:
+\begin{verbatim}
+typedef struct {
+ T1_int32 x;
+ T1_int32 y;
+} T1_PATHPOINT;
+\end{verbatim}
+\verb+x+ and \verb+y+ are fractional pixels as described above.
+
+An outline is represented by a linked list of structures which describe path
+segments of the type described above.
+Line- and Move-segments are described by the following structure:
+\begin{verbatim}
+typedef struct pathsegment {
+ char type;
+ unsigned char flag;
+ short references;
+ unsigned char size;
+ unsigned char context;
+ struct pathsegment *link;
+ struct pathsegment *last;
+ T1_PATHPOINT dest;
+} T1_PATHSEGMENT;
+\end{verbatim}
+\verb+type+ is either \verb+T1_PATHTYPE_MOVE+ or
+\verb+T1_PATHTYPE_LINE+. \verb+flag+, \verb+references+, \verb+size+ and
+\verb+context+ are internally used by the rasterizer. \verb+link+ is a pointer
+to the next segment structure or \verb+NULL+ in case it is the last structure
+in the list. Finally, the \verb+last+-entry is a pointer to
+the last structure in the linked list. \verb+last+ is only set in the first
+segment and is reset to \verb+NULL+ in the remaining segment structures.
+A Bezier-segment is described by the following structure:
+\begin{verbatim}
+typedef struct bezierpathsegment {
+ char type;
+ unsigned char flag;
+ short references;
+ unsigned char size;
+ unsigned char context;
+ T1_PATHSEGMENT *link;
+ T1_PATHSEGMENT *last;
+ T1_PATHPOINT dest;
+ T1_PATHPOINT B;
+ T1_PATHPOINT C;
+} T1_BEZIERSEGMENT;
+\end{verbatim}
+Obviously, the format is identical to that for straight path segments, extended
+by the entries \verb+B+ and \verb+C+ which specify the control points as
+described earlier in this subsection.
+The common return type for the outline retrieving functions is a pointer to
+\verb+T1_OUTLINE+, which is in fact identical to \verb+T1_PATHSEGMENT+. This
+purely for convention. Although it is quite unlikely, an outline might start
+with a Bezier-segment. To access Bezier-segment elements, a cast must be used.
+
+
+\subsubsection{Using Outlines}
+\label{usingoutlines}%
+\tonelib\ provides three functions for retrieving outlines. The first is
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_GetCharOutline( int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_GetCharOutline()+}\postcorr
+The meaning of the arguments is as in the \verb+T1_SetChar()+-function.
+Notice that the size specification is also required here. Outlines are, by
+their nature in Type~1, generally defined in a $1000\times 1000$ grid and then
+scaled down by the fontmatrix to 1 bp. The space is known as the
+charspace. The reason for specifying a size at this place, instead of scaling
+the outline later, is, that hinting is performed according to the scaled
+outline. The returned outline is then hinted for the given size. If necessary,
+it may still be scaled later.
+
+The outline for a complete string can be retrieved by
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_GetStringOutline( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_GetStringOutline()+}\postcorr
+The meaning of the arguments is as in \verb+T1_SetString()+.
+
+Finally the ``outline'' for a displacement is available by the function
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_GetMoveOutline( int FontID, int deltax, int deltay, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_GetMoveOutline()+}\postcorr
+This function is intended to be used for concatenation of outlines. It needs
+all the arguments because some quantities which are given on the font level
+are required for constructing the outline. \verb+deltax+ and \verb+deltay+ are
+the horizontal and vertical displacement measured in charspace units. From the
+\verb+modflag+-argument, especially the underlining parameters are
+evaluated. Although $x$- and $y$-displacement may be specified, the resulting
+outline is still subject to scaling with \verb+size+ and transformation
+according to \verb+transform+.
+
+Arbitrary outlines may be concatenated by using the function
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_ConcatOutlines( T1_OUTLINE *path1,
+ T1_OUTLINE *path2)
+\end{verbatim}\index{\verb+T1_ConcatOutlines()+}\postcorr
+Notice that this concatenation is done with high precision so that we can
+expect that visual artefacts are reduced to a minimum (remember figure
+\ref{figure:whyoutlines}).
+
+Scaling of outlines is done by the function
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_ScaleOutline( T1_OUTLINE *path, float scale)
+\end{verbatim}\index{\verb+T1_ScaleOutline()+}\postcorr
+\verb+T1_ScaleOutline+ does nothing more than linearly scaling the coordinate
+data with \verb+scale+ and storing the result in fractional pixels. No care is
+taken for hinting (see above).
+
+An outline may be duplicated using the function
+\precorr
+\begin{verbatim}
+ T1_OUTLINE *T1_CopyOutline( T1_OUTLINE *path)
+\end{verbatim}\index{\verb+T1_CopyOutline()+}\postcorr
+This is a direct entrypoint into the rasterizer. It works by allocating and
+duplicating each segment of \verb+path+. This function may be useful if one
+wants to do several things with one outline because the process of filling an
+outline also consumes that outline.
+
+An outline that that a user decides not to fill can be destroyed by the
+function
+\precorr
+\begin{verbatim}
+ void T1_FreeOutline( T1_OUTLINE *path)
+\end{verbatim}\index{\verb+T1_FreeOutline()+}\postcorr
+It iterates through the segment list and frees each segment.
+This must not be done after filling an outline because the filling process
+consumes the outline!
+
+Finally, there are two functions that produce glyphs from outlines, namely
+\precorr
+\begin{verbatim}
+ GLYPH *T1_FillOutline( T1_OUTLINE *path, int modflag)
+\end{verbatim}\index{\verb+T1_FillOutline()+}\postcorr
+and
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AAFillOutline( T1_OUTLINE *path, int modflag)
+\end{verbatim}\index{\verb+T1_AAFillOutline()+}\postcorr
+Their usage does not need any explanation. The value of \verb+modflag+ is
+required for {\em Right-To-Left} typesetting. If the bit
+\verb+T1_RIGHT_TO_LEFT+ is set, the dimension of the glyph are recomputed
+accordingly. All other bits from \verb+modflag+ are ignored such that in the
+usual case of {\em Left-To-Right} typesetting simply 0 can be specified.
+While \verb+T1_FillOutline()+ produces bitmaps of depth 1,
+\verb+T1_AAFillOutline()+ produces antialiased bytemaps of the current
+graphics depth. It should be mentioned that Smart Antialiasing (see
+\ref{smartantialiasing}) does not work with this function. The reason is that
+\tonelib\ has no notion of the quantity ``size'' when it gets the outline to
+process. Hence, Smart Antialiasing can't work in this case. As noted above,
+the outline is consumed by the filling functions so that there is no need to
+free it explicitly.
+
+
+\subsubsection{Manipulation of Outlines}
+\label{outlinemanipulation}%
+\tonelib\ provides some limited further functionality to process
+outlines. First of all, a user would expect a character to be defined in a
+coordinate system in which $x$ points to the right and $y$ points up. Further,
+a representation of the glyph where all points are specified in absolute
+coordinates would be advantageous for manipulating outline-points. This is
+because most transformations, linear or nonlinear, need to have an absolute
+$x$-value to compute an $y$-value or vice versa. The function
+\precorr
+\begin{verbatim}
+ void T1_AbsolutePath( T1_OUTLINE *rpath)
+\end{verbatim}\index{\verb+T1_AbsolutePath()+}\postcorr
+does exactly what has been described just before, (a) conversion of relative
+coordinates into absolute coordinates and (b) inverting the
+$y$-direction.
+
+Once a path has been converted into an absolute path, it is
+suitable for possibly nonlinear manipulation.\footnote{A linear manipulation
+ of path points would rather be realized using the transformation matrices as
+ described in \ref{transformations}.}
+As an example of what can be done, have a look at figure \ref{figure:manipulation}.
+\begin{figure}[t]
+\hfill
+\includegraphics[scale=1.0]{manipulate}
+\hfill\break
+\vskip3mm
+\hrule\vskip3mm\small
+\caption{\label{figure:manipulation}A string with nonlinearly scaled coordinates.}
+\end{figure}
+The string displayed has been generated by essentially applying the
+transformation $y'= y(1+cx^2)$, with appropriate $c$. To allow such
+transformations by the user, \tonelib\ provides the function
+\precorr
+\begin{verbatim}
+ void T1_ManipulatePath( T1_OUTLINE *path,
+ void (*manipulate)(long *x,long *y, int type))
+\end{verbatim}\index{\verb+T1_ManipulatePath()+}\postcorr
+Here, \verb+path+ should be an absolute path as described above. Notice that
+\tonelib\ has no way to check whether the path is relative or absolute, this
+is in the responsibility of the user. The second argument is a pointer to a
+function that has a return type of \verb+void+ and that expects three
+arguments: two pointers to \verb+long+-values one integer \verb+type+.
+\verb+T1_ManipulatePath()+ works by iterating through all outline points of
+\verb+path+ and calling the function \verb+*manipulate()+ for each outline
+point. When the function \verb+*manipulate()+ is called, \verb+x+ and \verb+y+
+are pointers to the $x$- and $y$-coordinates respectively of the outline point
+to be processed. That way, \verb+*manipulate()+ can alter the outline
+points arbitrarily. The \verb+type+-argument will be set to the segment type
+by \verb+T1_ManipulatePath()+. As described earlier, the segment type can be
+one of \verb+T1_PATHTYPE_MOVE+, \verb+T1_PATHTYPE_LINE+ and
+\verb+T1_PATHTYPE_BEZIER+. Of course, the function \verb+manipulate()+ has to
+be written by the user. To make it clear, we consider a function which
+stretches an outline horizontally by 1.5. The code fragment for this could be:
+\begin{verbatim}
+ .
+ .
+ .
+void h_stretch( long *x, long *y, int type)
+{
+ double dx;
+
+ dx=(double)*x;
+ dx *=1.5; /* scale x coordinate by 1.5 */
+ *x=(long)dx;
+}
+ .
+ .
+ .
+T1_OUTLINE *path=NULL;
+path=T1_GetStringOutline(FontID,(char *)SomeString,
+ 0,0,T1_KERNING,20.0,NULL);
+T1_AbsolutePath( path);
+T1_ManipulatePath( path, &h_stretch);
+T1_RelativePath( path);
+glyph=T1_FillOutline( path, Modflag);
+ .
+ .
+ .
+\end{verbatim}
+
+As the example above already has shown, an absolute path, manipulated or not,
+must converted back to a relative path before it finally can be interpreted by
+the rasterizer. This conversion is done using
+\precorr
+\begin{verbatim}
+ void T1_RelativePath( T1_OUTLINE *apath)
+\end{verbatim}\index{\verb+T1_RelativePath()+}\postcorr
+As already mentioned with respect to \verb+T1_AbsolutePath()+, \tonelib\ cannot
+check whether the \verb+path+ specified is really absolute. The user has to
+take care for this.
+
+A few general comments about manipulating paths are appropriate. Although the
+mechanism implemented by \verb+T1_ManipulatePath()+ allows arbitrary
+manipulation of path points, one must be very careful in doing so. Figure
+\ref{figure:outlineproblems} exhibits some of the problems that may arise. A text
+string aligned to a sine function is displayed.
+%- parameters of figure: string: Text aligned along a sine wave function
+% size: 50
+% kerning on
+\begin{figure}[t]
+\hfill
+a) \includegraphics[scale=0.5]{outlineproblems1} % period=500,
+\hfill\break
+
+\hfill
+b) \includegraphics[scale=0.5]{outlineproblems2} % period=200
+\hfill\break
+
+\hfill
+c) \includegraphics[scale=0.5]{outlineproblems3} % period=100
+\hfill\break
+
+\hfill
+d) \includegraphics[scale=0.5]{outlineproblems4} % period=50
+\hfill\break
+
+\hfill
+e) \includegraphics[scale=0.5]{outlineproblems5} % period=500
+\hfill\break
+\hrule\vskip3mm\small
+\caption{\label{figure:outlineproblems}The string ``Text aligned along a sine wave
+ function'' using a period of (a) 500, (b) 200, (c) 100, (d) 50 pixels and
+ (e) again 500 pixels with underlining. The sine amplitude was 30 pixels
+ (in screen resolution).}
+\end{figure}
+In part (a), a pleasing smooth text flow is shown and this also applies for
+(b) where the period of the sine has been reduced to 200 pixels. In (c), where
+the period has been reduced to 100 pixels, some artefacts already show up. For
+example, the top bar of the uppercase ``T'' has noticeable variance in
+thickness. In (d), where the period has been reduced again, the result is
+hardly readable. Another artefact appears in figure
+\ref{figure:outlineproblems} (e): since the underlining rule is defined by
+four points only, these points and nothing else is transformed with the result
+that the out coming line is still straight and not curved as we would
+like. From this discussion we conclude, that such transformations can only be done
+with reasonable results if the maximum distance between the outline points of
+a shape is small compared to the variance of the outline points that the
+transformation results in. This rule, although being very fuzzy and
+non-mathematical, should give a good estimation of which transformations are valid.
+
+Another completely independent topic is that, at the level where \tonelib\
+provides outlines, their representation is strictly descriptive with respect
+to points and their connections. There are no such things like
+\verb+closepath+-segments which would take care that a path is really closed,
+no matter what the transformation had been. This means, that identical points
+$P_1 = P_2$ have to be transformed to identical points $P_1'=P_2'$, no matter
+where they appear in the outline. However,
+if the transformation is done by by a function $(x',y')=f(x,y)$ as suggested,
+this should never be a problem.
+
+Finally, one should remember that all computations in the user function
+\verb+manipulate()+ have to be done in units of fractional pixels, rather than in
+pixels. When designing a sine wave as in figure \ref{figure:outlineproblems},
+this must be taken into account with respect to periodicity.
+
+\subsection{Logical Fonts}
+\label{logicalfonts}%
+It sometimes may be necessary to have a font and an extended or slanted
+variant simultaneously. To enable such configurations without needing to
+declare the fonts two or even more times in the font database file,
+\tonelib\ provides the function
+\precorr
+\begin{verbatim}
+ int T1_CopyFont( int FontID)
+\end{verbatim}\index{\verb+T1_CopyFont()+}\postcorr
+It copies the top level data structure of the font given by \verb+FontID+ to
+another location. The newly created font refers in fact to the same
+physical memory as the font \verb+FontID+ as far as Type 1 and AFM data are
+concerned. However, no size specific data is copied from font \verb+FontID+,
+you can thus do with the new font whatever you want to. It will get its own
+size-specific memory area when the first bitmap is generated using its ID.
+
+It is also possible to reencode a copied font without affecting the
+original font. This is possible because a logical font gets its own
+mapping tables. This allows configurations with one font at different
+encodings simultaneously.
+
+In order to keep track that another font is referring to data from
+font \verb+FontID+, a reference counter is managed for every font. The
+reference counter for font \verb+FontID+ is incremented after a call to
+\verb+T1_CopyFont()+.
+
+If the font \verb+FontID+ is not loaded into memory, the function returns $-1$.
+
+Only {\em physical} fonts---those fonts defined in the font database
+file or added via \verb+T1_AddFont()+---may be copied to another
+font. If a user tries to copy a font
+which is already logical, the function returns $-2$.
+
+If no memory is available for the new font the function return $-3$. But
+this should not happen.
+
+If all goes the right way, \verb+T1_CopyFont()+ returns an integer---lets call
+it \verb+new_ID+---which is from now on a valid font identification number.
+
+\subsection{Missing or Invalid AFM Files}
+\label{missingafmfiles}%
+\tonelib\ heavily relies on AFM information every time the relative position
+of bitmaps is of importance. Because AFM information is of high resolution,
+accumulating positioning errors are avoided in contrast to what the X11 text
+drawing functions do. On the other hand, there are many freely available
+Type~1 font programs that come without AFM files. This problem has been
+addressed in \tonelib\ 0.5. \tonelib\ is now able to generate AFM information
+on the fly and it even can generate AFM files from Type 1 font files.
+
+\subsubsection{Remarks on AFM Files}
+\label{remarksonafmfiles}%
+Information in AFM files is only relevant for placing character glyphs but not
+for rasterizing. The metric values are based on the same coordinate system as
+used in Type 1 font files, the so called {\em charspace coordinate system}.
+One unit is $1/1000 \mbox{bp}$ when a font is not scaled or scaled to 1~bp,
+respectively.
+
+Information in AFM files can divided into several groups:
+\begin{enumerate}
+\item {\em Global Font Information:} This information is generally not needed
+ to place characters. Furthermore, most of this information is also
+ contained in a Type 1 font file itself. This area is thus of marginal
+ importance for \tonelib.
+\item {\em Character Width's and Bounding Boxes:} These both are crucial for
+ accurately placing the character glyphs. Fortunately, these are dimensions
+ are exactly defined by the character outlines themselves. It is thus
+ possible to compute them spending some computational effort.
+\item {\em Ligature Information:} For \ae sthetic reasons, certain character
+ groups are often replaced by ligatures and a font file may define several
+ ligatures. It is however not intuitively clear what character groups should
+ be replaced by what ligatures.\footnote{Well, at least not without some
+ expert knowledge like ``I know this ligature's name is `f{}i', so I
+ replace every series of `f' and `i' with it.''}
+ Fortunately, ligatures are not crucially needed for quality typesetting.
+\item {\em Pair Kerning Information:} This information is quite important for
+ \ae sthetic reasons but it is entirely independent from the outline
+ descriptions and can thus not be extracted from a font file.
+\item {\em Track Kerning Information:} This information gives hints of how to
+ typeset text generally closer or wider at varying point sizes.
+ \tonelib\ does not use track kerning
+ information and I personally do not consider using track kerning a good
+ typographical style.
+\item {\em Composite Character Data:} This is needed to construct characters
+ from two single characters. Typical examples are accented
+ characters. \tonelib\ currently does not deal with composite
+ characters. Most of the composite characters needed are already existent
+ internally.
+\end{enumerate}
+To come to a conclusion, for our purposes it is sufficient to generate the
+characters' widths and their bounding boxes and we have all information we
+need to construct string glyphs.
+
+\subsubsection{Generation of AFM Information}
+\label{generatingafminfo}%
+Next lets consider how to generate the AFM information. It is a series of
+entirely independent steps:
+\begin{itemize}
+\item When we generate AFM information, we want to do this once and forever
+ when the font is loaded. Consequently all characters, have to be examined,
+ not only those that are currently encoded.
+ We start by fetching all character names the font defines. This done with
+ \verb+T1_GetAllCharNames()+ (see \ref{characterencodingrelation}). This
+ yields a list of possibly more than 256 character names.
+\item Each of the character addressed by the names above is now rastered at
+ size 1000~bp. By rastering at 1000~bp we match exactly the charspace
+ coordinate system which the character outline descriptions are
+ based on. Width and bounding box are easily examined and saved at
+ appropriate places.
+\item The kerning pair area and ligatures are explicitly set to zero.
+\end{itemize}
+At the end of this procedure, there is a data area identical to what would
+have been built when reading an AFM file without kerning-section and ligature
+specifications.
+
+The decision of building AFM data is done on the fly without any user
+interaction. Here is what happens on the metrics-area when loading a font:
+\begin{itemize}
+\item \tonelib\ tries to open an AFM file reading metrics and kerning pair
+ information.
+\item If this does not succeed, it tries to rescan the AFM file in a {\em
+ sloppy} way, only requesting metrics information.
+\item If this fails too, metrics information is generated on the fly as
+ described above.
+\end{itemize}
+It should be noted that generating metric information the way described above
+takes significant amount of time since every character has to be rastered at
+1000~bp.
+
+%~derekn
+If the \verb+T1_NO_AFM+ flag is passed to \verb+T1_InitLib()+,
+\tonelib\ will neither attempt to open AFM files nor generate AFM
+information. This is useful to speed up applications which do not
+need the metrics data. However, this slows down access to certain features,
+mostly related to the string processing functions, and completely disables the
+features that only are contained in AFM files (like kerning and ligatures).
+
+Obivously, the \tonelib\ functions that use
+the AFM data will not work correctly in this case and should not be
+used.
+%~derekn
+
+\subsubsection{Writing AFM Files}
+\label{writingafmfiles}%
+In order to reduce the situations where AFM data has to be generated on the
+fly, \tonelib\ provides the following function:
+\precorr
+\begin{verbatim}
+ int T1_WriteAFMFallbackFile( int FontID)
+\end{verbatim}\index{\verb+T1_WriteAFMFallbackFile()+}\postcorr
+It writes an AFM file for the font identified by \verb+FontID+. This is done
+executing the following steps:
+\begin{enumerate}
+\item The AFM filename is constructed by taking the fontfilename, cutting off
+ the extension and appending \verb+.afm+.
+\item A pointer array of size $256 + n$, where $n=\mbox{number of
+ characters}$, is
+ allocated and set to NULL. The leading 256 entries are reserved to point to
+ encoded
+ characters' metrics. The remaining entries are intended to point to metrics
+ of unencoded characters. We see that this is a worst case speculation: The
+ pointer array is large enough for the extremely unusual case that no
+ characters are encoded.
+\item Next the function steps through all character names and gets their
+ encoding index $i$. If $i\geq0$, the character is encoded and the $i$th
+ pointer element in the array is set to point to the metrics of this
+ character. If $i=-1$, the character is not encoded and the lowest unused
+ pointer in the second area is set to point to the metrics of this character.
+\item Next the AFM file is opened and the header information as well as a
+ comment by \tonelib\ are written. There are 5 entries that are not trivially
+ to extract from the font file: \verb+Ascender+, \verb+Descender+,
+ \verb+XHeight+, \verb+CapHeight+ and \verb+EncodingScheme+. Their
+ discussion is deferred to later in this section.
+\item After the header, the metrics information is written in the format
+ required for AFM files. This is done by stepping through the pointer array
+ until the first NULL pointer in the unencoded characters' area is
+ reached.
+\end{enumerate}
+The result is a list of char-dimensions entries which is leaded by the encoded
+characters in ascending order of their encoding index, followed by a list of
+unencoded characters in alphabetical order.
+
+As seen above, the current encoding takes influence on the order the
+characters appear in the AFM file. One should thus not produce AFM files from
+reencoded fonts, although this is possible. This yields non-standard AFM files
+and gives no performance gain, even not when used with \tonelib.
+
+The entry \verb+EncodingScheme+ is not always contained in the fontfile
+itself. It is generated by comparison between encodings. \tonelib\ has only one
+builtin encoding, \verb+AdobeStandardEncoding+, which
+is recognized. Every further encoding, defined
+by the font itself or applied by a user, is always marked as
+\verb+FontSpecific+.
+
+The entries \verb+CapHeight+, \verb+XHeight+ \verb+Ascender+ and
+\verb+Descender+ are not fully determined by a Type 1 font file
+although they are existent with high probability. As rough definitions
+can be considered:
+\begin{itemize}
+\item \verb+CapHeight+: The height a capital `H' reaches to.
+\item \verb+XHeight+: The height a lower case `x' reaches to.
+\item \verb+Ascender+: The height a lower case `d' reaches to.
+\item \verb+Descender+: The depth a lower case `p' reaches down.
+\end{itemize}
+It is obvious that these definitions make only sense in certain font
+definitions. For example, a musical notation font might not necessarily
+define an ascender since no capital letters are provided.
+
+In the Type 1 notion these dimensions are referred to as top alignment
+and bottom alignment values respectively. The corresponding alignment
+``zone'', i.e., an interval, is defined by the alignment height and a
+corresponding overshoot position. The alignment zones are specified in
+the BlueValues array for top alignment zones and the OtherBlues
+array for bottom alignment zones. A Type 1 font may define up to 7 top
+alignment zones and 5 bottom alignment zones. It is unfortunately not
+defined which of these alignment zones refer to \verb+CapHeight+,
+\verb+XHeight+, \verb+Ascender+ and \verb+Descender+.
+
+\tonelib\ tries to get out of this dilemma by making a best guess:
+\begin{enumerate}
+\item For each of the characters `H', `x' and `d' it fetches the
+ largest y-value and compares the result with each alignment zone in
+ the BlueValues array. The alignment zone closest to the observed
+ character dimension is assumed a candidate for the respective
+ quantity.
+\item It checks whether the difference between the alignment zone just
+ selected and the character dimension is within a certain tolerance
+ area. This tolerance width is $\pm 30$ charspace units. If the
+ result is positive, the quantity in question is assigned the
+ numerical value of the standard height (not the overshoot) of this
+ alignment zone. Since we are currently considering top
+ alignment zone, this will always be the lower value.
+\item If the value is out of tolerance or the font even does not
+ define the character, the corresponding entry in the AFM file is left
+ out.
+\item A comparable procedure is then done for \verb+Descender+, this
+ time examining the OtherBlues array.
+\end{enumerate}
+Note that if the values do not seem to be correct, the corresponding
+lines can be removed from the AFM file without doing any harm. These
+entries are optional only.
+
+\verb+T1_WriteAFMFallBackFile()+ can indicate a number of error
+conditions by returning appropriate values. These are:
+\begin{itemize}
+\item \verb+0+: No error occurred, AFM file was successfully written.
+\item \verb+-1+: The AFM data for the font in question has been
+ generated by reading an AFM file, there is no need to generate a new
+ one. If you really want to force an AFM file to be written, take
+ care that \tonelib\ does not find an AFM file when loading the
+ font.
+\item \verb+-2+: The font in question is not loaded.
+\item \verb+-3+: The font in question is loaded but AFM data has not
+ been generated. This definitely is an error condition because it
+ indicates not all characters of the font could be rastered, either
+ because the font file is damaged or because there were
+ insufficient system resources. In any case the application should
+ generate a logfile and this file should be examined.
+\item \verb+-4+: The AFM file could not be opened. This could be a
+ permission problem or something else. The file is always opened in
+ the current working directory.
+\item \verb+-5+: The file has successfully been opened but there was
+ an error writing to the file.
+\item \verb+-6+: A memory allocation error occurred. This should not
+ happen because it indicates there are no system resources.
+\end{itemize}
+
+
+
+\subsection{Font Subsetting}
+\label{Font Subsetting}%
+When applications have to setup Postscript files for printing, the problem is
+that these files often grow large. Each font which is not known to the
+Postscript interpeter, i.e., usually each font that is not part of the set of
+35 standard fonts, has to be downloaded as part of the file. The size of a
+particular font file often can be reduced by font subsetting, because usually
+only a small subset of the available character descriptions is actually
+needed.
+
+
+
+\subsubsection{Font File Organization and Subsetting}
+\label{Font File Organization and Subsetting}%
+
+Each Type~1 font file is a special Postscript program defining three
+Postscript-dictionaries:
+\begin{itemize}
+\item \verb+FontInfo+\\
+ Global font information like font and family name and encoding scheme is
+ stored here. This data is required even for a subsetted font. However, as
+ will be described later, the encoding scheme may be reduced to those
+ characters that are in the desired subset.
+\item \verb+Private+\\
+ This dictionary is in the encrypted part of the file and stores global font
+ data too. This data includes quantities parameterizing hinting and
+ subroutines that might be called by the character descriptions. This data is
+ required also.
+\item \verb+Charstrings+\\
+ For each character defined in the font a binary and encrypted byte string
+ (charstring) coding the character outline is stored in this dictionary. The
+ number of charstrings may be considerably larger than the size of the
+ encoding vector. This dictionary usually constitutes the largest part of the
+ font file and, consequently, it is the place to reduce storage requirements.
+\end{itemize}
+The main principle in subsetting is to decrypt the font and reorganize it,
+leaving out charstrings that are not required in the current context. For
+example, if a document uses only the character 'A' from the font Garamond,
+then this font may be subsetted preserving the character outline for 'A'
+only. The resulting file, which will be much smaller than the original file,
+can then be included verbatim into the Postscript file containing the
+document. At the same time, optionally, the encoding vector could be redefined
+to contain only the entry for 'A' at the appropriate location and
+\verb+.notdef+ otherwise.
+
+A still more consequent subsetting would involve leaving out those subroutines
+from the \verb+Private+-dictionary that are not needed by the preserved
+charstrings. Leaving out some subroutines on the other hand would require to
+interprete and check all charstrings for the subroutines they require and all
+preserved charstrings would have to be adapted to the reorganized index. Since
+the subroutines usually do not consume that much memory this is not considered
+worth the effort.
+
+\subsubsection{Functions for Subsetting}
+\label{Functions for Subsetting}%
+
+There are two ways to obtain a subsetted font from an existing file. The user
+can (1)~do it step by step which requires reading, decrypting, reorganizing
+and encrypting of the font file, and (2)~use a high level function to do it
+without having to know anything about the details. For font subsetting,
+\tonelib\ provides the function
+\precorr
+\begin{verbatim}
+ char *T1_SubsetFont( int FontID, char *mask,
+ unsigned int flags, int linewidth,
+ unsigned long maxblocksize,
+ unsigned long *bufsize)
+\end{verbatim}\index{\verb+T1_SubsetFont()+}\postcorr
+It returns a pointer to a memory block containing the subset data. The memory
+is allocated in the function and it is the responsability of the user to
+free this memory. The parameter \verb+FontID+ as usual is used to tell
+\tonelib\ which file or font is to be used for the operation.
+
+\verb+mask+ points to an array of characters which has to be setup by the
+user. This array must comprise exactly 256 characters and for the index of
+each non-zero entry the charstring resulting from the current encoding is
+preserved in the subsetted font. To give an instance, if the subset should
+consist in the character 'A' only and we assume the current font specifies
+\verb+StandardEncoding+, then the \verb+mask+-array should be initialized to
+zeroes and \verb+mask['A']=1+ or some other non-zero value.
+
+The \verb+flags+ parameter allows to control the subsetting operation. It
+usually should be set to \verb+T1_SUBSET_DEFAULT+. In this case, the subset is
+ASCII-hex encrypted, that is, as in a \verb+.pfa+-file. It is thus well-suited
+for the verbatim insertion into a Postscript file. If the source font file in
+question defines the encoding to be \verb+StandardEncoding+, the encoding is
+not adjusted to the subset specified by \verb+mask+. By contrast, if the font
+defines a \verb+FontSpecific+ encoding, this encoding will be adjusted
+according to the subset. This default behavior---which mimics what
+e.g.~\verb+dvips+ seems to do---may be overwritten by OR'ing \verb+flags+ with
+\verb+T1_SUBSET_FORCE_REENCODE+, which leads to adjusting the encoding vector
+in any case. Conversely, reencoding can be suppressed unconditionally by OR'ing
+\verb+flags+ with \verb+T1_SUBSET_SKIP_REENCODE+. If \verb+flags+ is OR'ed
+with \verb+T1_SUBSET_ENCRYPT_BINARY+, a buffer of mixed ASCII, binary and EOF
+segment types is created and encryption is performed in binary mode. The
+buffer's contents in this case represents a valid compact binary format file
+(\verb+.pfb+). It is considerably smaller than a comparable \verb+.pfa+-file
+but it is not suitable to be inserted into Postscript files.
+
+The parameter \verb+linewidth+ is used to specify the line length if ASCII-hex
+encryption is used. Since---according to the Adobe speification---the first 8
+encrypted bytes have to be stored one after the other without interspersed
+white space, the allowed range of \verb+linwidth+ is limited to 8 at the lower
+bound. It is also limited at the upper bound by 1024, because writing that
+long lines does not preserve the readability of the produced file.
+
+The parameter \verb+maxblocksize+ is important if binary encryption is
+used. Then, this value specifies the maximum allowed segment size. For similar
+reasons as discussed above, this value must be equal to or larger
+than~4. There is no limit at the upper bound, because the maximum segment size
+can be derived automatically follows from the target font file.
+
+\verb+bufsize+ must be a valid pointer to an \verb+unsigned long int+ in the
+context of the calling function. The size of the memory area to which the
+function returns a pointer, is written to \verb+bufsize+. The calling function
+needs this number to process to buffers contents, e.g., to write it to a file.
+
+If errors occur in this function, \verb+NULL+ is returned and \verb+T1_errno+
+is set to an appropriate value. If the font corresponding to \verb+FontID+ is
+not loaded, \verb+T1_errno+ is set to \verb+T1ERR_INVALID_FONTID+.
+\verb+T1ERR_INVALID_PARAMETER+ is used to indicate that one of the further
+arguments is out of range. \verb+T1ERR_ALLOC_MEM+ and
+\verb+T1ERR_FILE_OPEN_ERR+ may also be set in this function. Finally,
+\verb+T1ERR_UNSPECIFIED+ may also be set if the charstring definition for
+\verb+.notdef+ could not be located. This is considered to be a fatal error.
+
+An example of how to use the function described above is given in the file
+\verb+subset.c+ in the \verb+examples/+ subdirectory of the distribution.
+
+\subsubsection{Further Functions for Subsetting}
+\label{Further Functions for Subsetting}%
+
+For the sake of completeness, there are a few further functions in the
+subsetting module. The function
+\precorr
+\begin{verbatim}
+ char *T1_GetCharString( int FontID, char *charname, int *len)
+\end{verbatim}\index{\verb+T1_GetCharString()+}\postcorr
+returns a pointer to the charstring of the character with name \verb+charname+
+of the font identified by \verb+FontID+. In case of an error, \verb+NULL+ is
+returned and \verb+T1_errno+ is set to \verb+T1ERR_ALLOC_ERR+ if there was not
+enough memory for storing the charstring, \verb+T1ERR_UNSPECIFIED+ if the
+charstring was not found in the dictionary, \verb+T1ERR_INVALID_FONTID+ if the
+font in question is not loaded or \verb+T1ERR_INVALID_PARAMETER+ if
+\verb+charname+ or \verb+len+ is \verb+NULL+. The memory pointer which is
+returned is managed static in this function. Thus, it should not be free'd by
+the user, or, in case the memory block is free'd, the pointer must be set to
+\verb+NULL+.
+
+In order to decrypt a charstring, the \verb+lenIV+-value of the font in
+question must be known. It can be obtained using the function
+\precorr
+\begin{verbatim}
+ int T1_GetlenIV( int FontID)
+\end{verbatim}\index{\verb+T1_GetLenIV()+}\postcorr
+The returned value indicates how many leading random bytes are used for
+charstring encryption in the font \verb+FontID+. According to an undocumented
+Adobe convention, the value $-1$ is also valid and indicates that the
+charstring is not encrypted at all. Hence the return value $-2$ is used to
+indicate an error. In this case, \verb+T1_errno+ is set to
+\verb+T1ERR_INVALID_FONTID+, which indicates that the font in question is not
+loaded.
+
+
+\subsection{Composite Characters}
+\label{subsec:CompositeCharacters}%
+
+This section discusses the composite character information that may be present
+in AFM files and how this information is represented, accessed and handled in
+\tonelib.
+
+\subsubsection{General remarks}
+\label{subsubsec:General Remarks}%
+
+Composite characters are defined by the fact that they are constructed from at
+least two independent symbols. In practice there frequently appear two
+components, a base character and an accent, e.g., as in ``\"A''. Usually, the
+accents (or secondary pieces) of a composite character are typeset first
+without causing any horizontal escapement and finally the base character
+itself is typeset and causes its escapement to become the escapement of the
+whole composite character. Although some people recommend that the character
+definition of an accent itself should not cause escapement, this generally is
+not respected in real fonts and \tonelib\ does not require this condition to
+be fulfilled.
+
+In order to construct a composite character the characters to be put together
+have to be known and metric information about how to put these characters
+together has to be known too. \tonelib\ defines two structures as new data types
+for this purpose. The first is
+\begin{verbatim}
+typedef struct
+ {
+ int compchar;
+ int numPieces;
+ T1_COMP_PIECE *pieces;
+ } T1_COMP_CHAR_INFO;
+\end{verbatim}
+Here, \verb+compchar+ is the index in the encoding vector of the composite
+character. \verb+numPieces+ specifies how many pieces are
+required to build the composite character. The third element is a pointer to
+an array of type \verb+T1_COMP_PIECE+, whose actual length is given by
+\verb+numPieces+: Each piece (or symbol) receives one slot in this
+array. \verb+T1_COMP_PIECE+ is defined by
+\begin{verbatim}
+ typedef struct
+ {
+ int piece;
+ int deltax;
+ int deltay;
+ } T1_COMP_PIECE;
+\end{verbatim}
+It contains the encoding index of the symbol in \verb+piece+ and information
+where to place this symbol with respect to the composite character's orgin in
+\verb+deltax+ and \verb+deltay+. The first slot is filled by what I refer to
+as the base character, it is the one that causes spacing. As can be seen in
+these data structures, composite character handling in \tonelib\ is based on
+encoding indices rather than on character names, which, by contrast, are used
+for the definition of composite character data in AFM files.
+
+The presence of composite character information in AFM files does not tell
+anything about whether a font has an internal definition of this character or
+not. For example, the font \verb+TimesRoman+ internally defines the CharString
+\verb+Adieresis+ and hence this font provides the letter ``\"A'', assuming an
+appropriate encoding, without any knowledge about composite
+characters. However, the file \verb+TimesRoman.afm+ may still
+provide composite character information for \verb+Adieresis+, just to tell an
+application that this glyph consists of more elementary pieces and how to
+construct it. On the other hand, if \verb+TimesRoman+ had no
+CharString-definition for \verb+Adieresis+, the composite character
+information of \verb+Adieresis+ provides an application with enough
+information to be able construct \verb+Adiereis+ from the elementary units
+\verb+A+ and \verb+dieresis+ that the font provides.
+
+
+\subsubsection{Accessing Composite Character Data}
+\label{subsubsec:Accessing Composite CHaracter Data}%
+
+This section describes a few functions that provide access to composite
+character data of a font file. The data they return can be considered a
+mapping of the original AFM data with respect to the current encoding. As
+usual, \verb+FontID+ must be the identifier of a font loaded into memory,
+otherwise an appropriate error indicator is returned. The functions described
+in the following may also return some other error types.
+
+Firstly,
+\precorr
+\begin{verbatim}
+ int T1_GetNoCompositeChars( int FontID)
+\end{verbatim}\index{\verb+T1_GetNoCompositeChars()+}\postcorr
+tells the user how many composite character definitions are given in the AFM
+file. This, of course, does not depend on the current encoding vector and it
+is even possible that the current encoding vector does not incorporate any
+composite character at all.
+
+The function
+\precorr
+\begin{verbatim}
+ int T1_QueryCompositeChar( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_QueryCompositeChar()+}\postcorr
+checks whether composite character information exists for the encoding index
+\verb+char1+. If so, it returns the index within in the AFM composite
+character data array as a number equal to or greater than zero. If the result
+is valid but no composite character information has been found for
+\verb+char1+, $-1$ is returned. In case of an error, $-2$ is returned and
+\verb+T1_errno+ is set to an appropriate value.
+
+The previous function does not tell anything about whether the font
+\verb+FontID+ incorporates a character definition for the composite char or
+not. This can be queried using
+\precorr
+\begin{verbatim}
+ int T1_IsInternalChar( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_IsInternalChar()+}\postcorr
+It returns $1$ if there exists a CharString for \verb+char1+ and $0$ if not.
+In the latter case, the application is responsible for the construction of the
+composite character (see later). \verb+T1_IsInternalChar()+ also might return
+$-1$ and set \verb+T1_errno+, which indicates that the font in question is not
+loaded.
+
+The information required to construct a composite character is retrieved by
+calling the function
+\precorr
+\begin{verbatim}
+ T1_COMP_CHAR_INFO *T1_GetCompCharData( int FontID, char char1)
+\end{verbatim}\index{\verb+T1_GetCompCharData()+}\postcorr
+It returns a pointer to a meaningfully filled struct of type
+\verb+T1_COMP_CHAR_INFO+ as described above. The composite character and the
+number
+of pieces as well as a pointer to the array of type \verb+T1_COMP_PIECE+ are
+stored in this structure. Once this information is obtained the composite
+character can be constructed by
+\begin{itemize}
+\item placing the accent symbols in a loop that ranges from $1$ to
+ \verb+numPieces+$-1$. In practice this loop will often be executed only
+ once. The initial current point must always be restored. In this loop
+ positioning information is accessed by \verb+ptr->pieces[+$i$\verb+].deltax+
+ and \verb+ptr->pieces[+$i$\verb+].deltay+, where \verb+ptr+ is the pointer
+ returned by the above function.
+\item placing the base character (\verb+pieces[0]+), which then also causes
+ the horizontal escapement of the composite character.
+\end{itemize}
+
+In cases where \verb+char1+ is not a composite
+character, the \verb+compchar+ entry is set to \verb+char1+ itself and
+\verb+numPieces+ becomes $1$, as would be expected. The \verb+pieces+ pointer
+is then set to \verb+NULL+. In case of errors, this function returns
+\verb+NULL+ and \verb+T1_errno+ is setup correspondingly.
+
+The pointer returned by this function should always be free'd using
+\verb+T1_FreeCompCharData()+ in order to avoid memory leaks (see also
+Section~\ref{deletingdata}).
+
+A function that provides the same functionality is
+\precorr
+\begin{verbatim}
+ T1_COMP_CHAR_INFO *T1_GetCompCharDataByIndex( int FontID, int index)
+\end{verbatim}\index{\verb+T1_GetCompCharDataByIndex()+}\postcorr
+In this case, the information is requested by means of an index \verb+index+
+in the AFM composite character data array. This function is thus well-suited
+for scanning the complete composite character information of a given font in a
+given encoding. \verb+index+ may, for example, be obtained by a call to
+\verb+T1_QueryCompCharData()+ as described above. The valid range for
+\verb+index+ is from $0$ to the value returned by
+\verb+T1_GetNoCompositeChars()+ minus one. The range of \verb+index+ is
+validated and in case of an error \verb+T1_errno+ is to
+\verb+T1ERR_INVALID_PARAMETER+. There may also appear other errors and under any
+erroneous condition, \verb+NULL+ is returned.
+
+The parameter \verb+compchar+ of the \verb+T1_COMP_CHAR_INFO+ structure that
+is referenced by the returned pointer, bears somewhat more information for
+this function than in the case of \\
+\verb+T1_GetCompCharData()+. As said it contains the index in the encoding
+vector where the composite glyph is encoded. It may also have the vaue $-1$,
+which means that the composite character is not encoded. Note that this is not
+an error condition.
+
+
+\subsubsection{Transparent Handling of Composite Characters and User Extensions}
+\label{subsubsec:Transparent Handling of Composite Characters and User
+ Extensions}%
+
+Aside from the fact that composite character information may be accessed in
+\tonelib, \tonelib\ can automatically---and completely transparently with
+respect to the user---compose characters if it finds information on how to do
+so. To give an instance, let us examine the font ComputerModern Roman
+(cmr10). Because this font is specially encoded for the use with early (7-bit)
+\TeX-systems, it does not incorporate a definition for \verb+Adieresis+. The
+definition simply was not required because \TeX\ itself constructed the
+composite character by means of its \verb+\accent+-primitive. If a font like
+cmr10 is reencoded e.g.~to IsoLatin1 encoding, the character ``\"A'' will show
+up as a blank because there is no definition for \verb+Adieresis+. Now, if the
+corresponding AFM file is extended with the following lines, it becomes
+possible to access an \verb+Adieresis+:
+\begin{verbatim}
+StartComposites 1
+CC Adieresis 2; PCC A 0 0; PCC dieresis 100 200;
+EndComposites
+\end{verbatim}
+This line in an AFM file provides information about how to construct an
+\verb+Adieresis+ from the \verb+A+ and \verb+dieresis+ glyphs, and \tonelib\
+can utilize this information to construct the requested glyph without that
+this will be be noticed by the user.
+
+Composite character are treated just the same way as standard characters.
+They are cached, they can be scaled, transformed etc. Let us assume that the
+cache is still empty and a character, identified by its encoding index, now is
+to be rastered. The following happens in the rastering function:
+\begin{enumerate}
+\item \tonelib\ looks up the character's name in the encoding vector and tries
+ to locate the CharString for that character. If this succeeds all works as
+ usual, notwithstanding the fact that there might have been composite
+ character information for that char. This means, font-internal
+ CharString-definitions have highest priority: One cannot, for example,
+ re-define an \verb+Adieresis+ by raising the umlaut ``\"{ }'' via a composite
+ character definition, if \verb+Adieresis+ is defined internally.
+\item However, if the CharString is not found, composite character information
+ is examined and if possible, elementary units are used to construct the
+ requested composite character by concatenating paths.
+\end{enumerate}
+In any case, the resulting character is put into the cache and is from then on
+available as any other character. If pieces of a composite character are not
+found in the CharStrings dictionary, those pieces are substituted by
+\verb+.notdef+, so that for extreme cases the whole composite character might
+be substituted by a \verb+.notdef+. Then, an appropriate message is put into
+the log file with priority \verb+T1LOG_WARNING+ and \verb+T1_errno+ is set to
+\verb+T1ERR_COMPOSITE_CHAR+.
+
+In the same way \tonelib\ composes characters without user intervention, the
+functions for character metrics are aware of composite character information
+and the returned result are also valid for those functions.
+
+
+\subsubsection{Caveats}
+\label{subsubsec:Caveats}%
+
+Although handling of composite character is widely automated, problems may
+arise. Most importantly it is the responsibility of the user to take care that
+font file and AFM file provide consistent data. Alas, this is not always true
+for existing font and AFM files. If, for example, an AFM file is extended by
+composite character definitions and these composite character definitions
+reference symbols that are not defined in the CharsStrings dictionary, errors
+will result. If composite character information is added to an AFM file, the
+following rules have to be respected:
+\begin{itemize}
+\item The name of the composite character has to be encoded because it could
+ not be accessed otherwise. Furthermore, no internal definition in the
+ CharStrings dictionary may exist because this would override the composite
+ character definition from the AFM file.
+\item The user should verify that all components of a composite character
+ definition have entries in the CharStrings dictionary. This can be checked
+ for example by using\\ \verb+T1_GetAllCharNames()+ or by disassembling the font
+ file.
+\item Even being more restrictive, the user should take care that all pieces
+ of a composite character are encoded. For \tonelib\, this is really
+ irrelevant because, internally, characters may be accessed by the name of
+ their CharString. This means \tonelib\ simultaneously has access to all
+ characters defined in a font. However, an application that exports PostScript
+ files can only access character definitions via their position in the
+ encoding vector. Composing a character from pieces of different encodings
+ will require two font definitions in a exported PostScript file for
+ typesetting one character, which cannot be termed a clean strategy.
+\end{itemize}
+
+
+\subsection{Error Handling}
+\label{errorhandling}%
+Although every function usually returns meaningful values, there are
+situations where indicating an error via the return value is not possible. For
+example, requesting a charspace bounding box from a char of a font which is not
+loaded will return a bounding box containing all zeroes. This cannot be
+considered an error-condition since for characters like ``space'' it is
+correct to return a bounding box containing all zeroes. Furthermore, there's no
+consistent scheme which value should indicate what type of error. In order to
+allow a unified error handling in applications, the global variable
+\verb+T1_errno+ has been introduced.
+
+The functionality of \verb+T1_errno+ is analogous to that of the global
+\verb+errno+ in C programs. \verb+T1_errno+ is once set to 0 when the library
+is initialized and never reset by any \tonelib-function. It is set to specific
+values when specific types of errors appear. An application may then act
+appropriately and reset \verb+T1_errno+.
+The errors that might appear can be roughly split into three categories as
+described below.
+
+\subsubsection{Type 1 Font File Scan-Errors}
+These types of errors can only appear at the time a font file is loaded.
+These kinds of errors are indicated by negative values:
+\begin{itemize}
+\item \verb+T1ERR_SCAN_FONT_FORMAT+ (-5): A Multiple Master Font was attempted
+ to be loaded. These are not supported by \tonelib.
+\item \verb+T1ERR_SCAN_FILE_OPEN_ERR+ (-4): This value indicates that the Type
+ 1 font file could not be opened by the parser. It usually does not mean that
+ the file does not exist because this problem would have shown up at the time
+ the font database had been built. It is more likely a permission problem.
+ Anyhow, the C library variable \verb+errno+ should be examined for getting
+ an idea of what the problem was.
+\item \verb+T1ERR_SCAN_OUT_OF_MEMORY+ (-3): A Type 1 font program required
+ more than 262144 bytes of VM. This is a limit imposed by \tonelib\ because
+ it usually means there goes something wrong. Typical values of VM
+ consumption are between 30000 and 60000 bytes depending on the fonts'
+ complexity. If this limit really does not suffice the constant
+ \verb+MAXTRIAL+ (defined in \verb+lib/type1/fontfcn.c+) may be set to some
+ larger value.
+\item \verb+T1ERR_SCAN_ERROR+ (-2): An error occurred during scanning the font
+ file. It usually means that the font file is damaged or does not comply to
+ the conventions of Type 1 font files. For example, an encountered token might
+ have been too long. Another reason could be, a literal name follows a literal
+ name where a number was expected. There is no way to recover from this
+ error. One last resort could be to disassemble the font (e.g., using
+ \verb+t1disasm+ from the \verb+t1utils+ package) and scan the resulting
+ human-readable file for possible violations of the Type 1 font format
+ specifications. However, some knowledge about the format is in force.
+\item \verb+T1ERR_SCAN_FILE_EOF+ (-1): A premature end of file was encountered
+ during parsing. The file is damaged.
+\end{itemize}
+
+
+\subsubsection{Path Generation Errors}
+Small positive number are reserved for errors that might appear during path
+construction and rasterization.
+\begin{itemize}
+\item \verb+T1ERR_PATH_ERROR+ (1): An error occurred during path
+ construction. The font file is most probably damaged.
+\item \verb+T1ERR_PARSE_ERROR+ (2): This kind of error describes a kind of
+ ``semantic'' error in the font file. A typical candidate for this is a font
+ that does not define a character named \verb+.notdef+, although this is
+ required by the format specification. Since under usual conditions the
+ \verb+.notdef+ character is never accessed, this error would not show
+ up. But if for some reason the \verb+.notdef+ has to be substituted for some
+ other character the problem becomes evident.
+\item \verb+T1ERR_TYPE1_ABORT+ (3): The \verb+abort()+-function of the
+ rasterizer has been called. This may happen at several places during
+ hinting, converting to edgelists etc. There is a certain chance that
+ unfreed memory has been left. If this error appears and a logfile is used,
+ an error string giving some more info is placed into the logfile.
+
+ This error should not appear, normally. If it does, either the font file is
+ damaged or the font contains invalid outline descriptions such as unclosed
+ paths. Especially the latter is quite unlikely. Of course this error can be
+ raised, when an outline has been modified manually in an invalid way and is
+ then rastered (see.~\ref{outlinemanipulation}).
+\end{itemize}
+
+\subsubsection{\tonelib-Errors}
+The remaining types of errors are detected by the management of \tonelib. Their
+numbering starts with 10 (decimal). The list could be extended in future
+releases.
+\begin{itemize}
+\item \verb+T1ERR_INVALID_FONTID+ (10): An invalid font ID has been
+ specified. The exact meaning of this error depends on the specific
+ situation, in any case the operation requested cannot be realized with the
+ identified font. Possible reasons are:
+ \begin{itemize}
+ \item The font ID points to a font which is not loaded and which must be
+ loaded in order to perform the operation.
+ \item The specified font ID is a number which is generally out of the range
+ of the valid font IDs, either because it is $<0$ or because it is $>$ the
+ value of \verb+no_fonts+.
+ \item The library is not yet initialized so that no font ID at all is valid.
+ \end{itemize}
+\item \verb+T1ERR_INVALID_PARAMETER+ (11): One or more of the parameters
+ specified to a function call were assigned invalid values. For example, a
+ size-value specified to a rastering function must always be $>0$. Just the
+ same way, \verb+T1_ConcatGlyphs()+ cannot concatenate two glyphs if one of
+ them is the \verb+NULL+ pointer.
+\item \verb+T1ERR_OP_NOT_PERMITTED+ (12): An operation that was not allowed
+ {\em at that time} has been requested. This error could result, for example,
+ if an application tries to set a new bitmap padding value after \tonelib\
+ has been initialized.
+\item \verb+T1ERR_ALLOC_MEM+ (13): This error indicates that \tonelib\ ran out
+ of memory and a memory allocation failed. This error should not appear.
+\item \verb+T1ERR_FILE_OPEN_ERR+ (14): A file that was needed could not be
+ opened by \tonelib. The file might have been necessary for reading data or
+ writing data. For example, \verb+T1_WriteAFMFallbackFile()+ returns this
+ value if the AFM file could not be opened for writing and
+ \verb+T1_LoadEncoding()+ returns it if the encoding file specified as
+ argument could not be opened. Notice that there is no indication of the
+ reason why the file opening failed. The C library
+ variable \verb+errno+ should be examined to analyze this further.
+
+ It should be mentioned that \verb+T1ERR_FILE_OPEN_ERR+ is only set if a file
+ operation failed which was really in force. This means that at the time a
+ font is loaded a missing AFM file does not cause \verb+T1_errno+ caused to
+ be set to \verb+T1ERR_FILE_OPEN_ERR+. This is because \tonelib\ can
+ automatically recover from this by generating AFM information on the fly (at
+ the cost of computation time).
+\item \verb+T1ERR_UNSPECIFIED+ (15): This value indicates nothing apart from
+ that an error occurred and this error was not one the other errors. It can
+ be considered a fallback.
+\item \verb+T1ERR_NO_AFM_DATA+ (16): A function has been called which needs
+ AFM information and AFM information is not available, either because all
+ attempts to generate AFM data failed or because the flag \verb+T1_NO_AFM+
+ has been specified as part of the flag for \verb+T1_InitLib()+.
+\item \verb+T1ERR_X11+ (17): An error in an X11 library function occured. This
+ could be caused by calling a function of the X11 interface without prior
+ initialization of the X11 interface via \verb+T1_SetX11Params()+.
+\item \verb+T1ERR_COMPOSITE_CHAR+ (18): A request to compose a composite
+ character could not be fulfilled without problems because at least one part
+ of the composite character was not found in the \verb+CharStrings+
+ dictionary. This is bad because it indicates that font file and AFM file do
+ match. Further errors or unsatisfactory rastering results have to be
+ expected.
+\item \verb+T1ERR_SCAN_ENCODING+ (19): Scanning an encoding file failed. Since
+ \tonelib\ uses a fallback approach---DVIPS-encoding is tried first and
+ afterwards \tonelib-encoding---it is not clear at which place exactly a
+ failure occured. However, further hints about what \tonelib\ thought about
+ the file in question may be found in the log file.
+\end{itemize}
+In analogy to the Standard C Library function \verb+strerror()+, \tonelib\
+provides the function
+\precorr
+\begin{verbatim}
+ const char *T1_StrError( int t1err)
+\end{verbatim}\index{\verb+T1_StrError()+}\postcorr
+It returns a pointer to a string describing the error corresponding to
+\verb+t1err+. Usually, the argument should be directly specified as
+\verb+T1_errno+. The memory where the returned string is stored is static in
+\tonelib\ so that it may not be \verb+free()+'d.
+
+
+\subsection{Other Useful Functions}
+\label{otherfunctions}%
+This subsection describes a few functions that had not been described up to
+now but which however could be useful.
+
+\precorr
+\begin{verbatim}
+ int T1_CheckEndian( void)
+\end{verbatim}\index{\verb+T1_CheckEndian()+}\postcorr
+This function may be used to check the endianess of the hardware \tonelib\ is
+running on. The return value is \verb+0+ for Little Endian and \verb+1+ for
+Big Endian machines.
+
+\precorr
+\begin{verbatim}
+ void T1_DumpGlyph( GLYPH *glyph)
+\end{verbatim}\index{\verb+T1_DumpGlyph()+}\postcorr
+This function might be useful for debugging and testing \tonelib. It dumps an
+ASCII representation of the glyph pointed to by \verb+glyph+ to the standard
+output. A background pixel is represented by \verb+.+ while a foreground pixel
+is represented by \verb+X+. After the number of bits that correspond to the
+current padding value, an empty column is inserted. See the output of the
+programming example in \ref{programmingexample}. In this case the padding
+values has been 16.
+
+Note that the size of the glyph should be small enough that its padded width
+does not exceed the terminals line width. Otherwise the result might become
+illegible.
+
+\precorr
+\begin{verbatim}
+ void T1_DumpPath( T1_OUTLINE *path)
+\end{verbatim}\index{\verb+T1_DumpPath()+}\postcorr
+This function dumps a description of an outline to the standard output. It is
+exclusively intended for debugging purposes.
+
+
+\precorr
+\begin{verbatim}
+ void T1_SetRasterFlags( int flags)
+\end{verbatim}\index{\verb+T1_SetRasterFlags()+}\postcorr
+This function allows to enable or disable certain features of the
+rasterizer. Let me emphasize that this is exclusively intended for debugging
+and error tracking. The default value of \verb+flags+ is 0 which means that no
+debugging output is shown and hinting is performed as suggested in the {\em Adobe
+Type Font Format}. However there may arise situations where fiddling with the
+\verb+flags+ might be helpful in rasterizer and font debugging.
+
+\verb+flags+ usually is an OR'ed combination of the following definitions:
+\begin{itemize}
+\item \verb+T1_IGNORE_FORCEBOLD+
+\item \verb+T1_IGNORE_FAMILYALIGNMENT+
+\item \verb+T1_IGNORE_HINTING+
+\item \verb+T1_DEBUG_LINE+
+\item \verb+T1_DEBUG_REGION+
+\item \verb+T1_DEBUG_PATH+
+\item \verb+T1_DEBUG_FONT+
+\item \verb+T1_DEBUG_HINT+
+\end{itemize}
+The \verb+T1_IGNORE_...+ types allow to selectively disable hinting. They
+might be useful if parts of a font are not properly rendered. For example,
+substituting a font's alignment zones by the family's alignment zones might
+result in visual artifacts if the values for \verb+FamilyBlues+ are not
+correct. Disabling family alignment might reveal the problem in such cases.
+
+The \verb+T1_DEBUG_...+ types produce debugging output from the intermediate
+rasterizing steps. Notice that to understand this output a thorough
+understanding of what happens in the rasterizer is in force. Moreover, be
+prepared that thousands of lines might be written to the terminal, depending
+on the particular option.
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/xglyph.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/xglyph.tex
new file mode 100644
index 00000000000..08a214484ff
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/xglyph.tex
@@ -0,0 +1,490 @@
+%----------------------------------------------------------------------------
+% ----- File: xglyph.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2003-01-04
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library License. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independent from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{The Program {\ttfamily xglyph}}
+\label{xglyph}%
+\verb+xglyph+ is a tool which makes most of the functionality of
+\tonelib\ visible to the user without the need of having to write an
+own program and without the need of having to understand most of the
+library
+before. This program---as the name indicates---needs X11. It is thus only
+build if X11 is installed on the target system and if X11 support has not
+explicitly been disabled. All
+necessary resources are set internally to default values so that the
+program can be run out of the box without any installation.
+
+In case the user did not already create a custom configuration file and an
+associated font database file, the program should be started from the
+subdirectory \verb+xglyph+ of the distribution. When starting, \verb+xglyph+
+checks for the environment entry \verb+T1LIB_CONFIG+ and if it does not exist
+it adds the association \verb+T1LIB_CONFIG=./t1lib.config+ to the
+environment. In other words it expects a valid configuration file in the
+current directory.
+
+There are several widgets which may be categorized into 5 types.
+
+\subsection{Common Parameter Dialogs and Toggle Buttons}
+These buttons modify the internal state of the program by setting some global
+variables. These variables affect the execution of all rastering functions in
+contrast to the buttons described in the next subsection which only take
+influence on the X11 rastering functions. When changing
+one of the following parameters nothing seems to happen at first. All
+actions are deferred to the time when an action button is
+clicked. Here is a list of the dialogs and toggles:
+\begin{itemize}
+\item \fbox{{\bfseries FontID}}\\
+ This dialog allows to specify the font ID that will be used when
+ the next action takes place. The allowed IDs range from 0 to $n-1$,
+ where $n$ is the number of fonts declared in the font database
+ file. If using the default configuration file together with the
+ default font database file, 8 fonts are declared. If an invalid ID
+ is specified, the next action generates an error message.
+\item \fbox{{\bfseries Font-Size}}\\
+ Here, the size of the font is specified. The value is interpreted in
+ bigpoints, the default PostScript unit. If the size specified is
+ invalid, an appropriate error message is generated at the time of
+ the next action.
+\item \fbox{{\bfseries Slant-Factor}}\\
+ A slant factor $s$ may be specified. It is interpreted the following
+ way. A point described by the coordinate-pair $(x,y)$ is transformed
+ to the point with the coordinates $(x+sy,y)$. For instance,
+ specifying a slant factor $s=1$ will generate a font slanted by
+ $45^\circ$. Since version 0.3-beta slanted are nearly fully supported.
+ For a discussion of the remaining problems see
+ \ref{transformations} on page
+ \pageref{transformations}.
+\item \fbox{{\bfseries Extension-Factor}}\\
+ Horizontal extension of a font may be realized using this
+ dialog. The default value is 1 which means the characters are
+ presented at their natural width. Specification of an invalid value
+ will generate an error message at the time of the next action.
+\item \fbox{{\bfseries Transformation-Matrix}}\\
+ This dialog gives complete Control over the transformation matrix that will
+ be used in consequent rasterizations. The values have to be specified
+ separated by commas. A specified rotation is still applied after this
+ matrix.
+\item \fbox{{\bfseries Res [DPI]}}\\
+ The resolution of the output device (screen) may be specified in
+ this dialog. Using the default value of 72 dpi means one bp in size
+ corresponds to exactly one device pixel.
+\item \fbox{{\bfseries S-Width}}\\
+ This dialog field allows to setup the penwidth used for stroking
+ characters. If this field is zero, which is the default, the characters are
+ filled, unless, the font under consideration is a stroked font, that is, it
+ has \verb+PaintType = 1+.
+\item \fbox{{\bfseries Encoding-File}}\\
+ The name of an encoding file may be specified. Included in the
+ distribution is only one file, \verb+IsoLatin1.enc+. It contains the
+ standard X11 encoding in a format acceptable by \tonelib. If no name
+ is given here, or the file with the name given here cannot not be
+ parsed as an encoding file, the encoding is switched back to the fonts
+ internal encoding. Again, this is done at the time of the next
+ action.
+\item \fbox{{\bfseries Angle}}\\
+ The angle at which the next character or string is rastered is
+ specified here. There are no restrictions concerning the angle. Rotation is
+ applied after setting the transformation matrix (see above).
+\item \fbox{{\bfseries Space-Off}}\\
+ The value specified here represents an offset added to the
+ spacewidth when rastering the next string. For this, it is
+ interpreted in PostScript charspace units and thus subject to
+ scaling.
+\item \fbox{{\bfseries Character}}\\
+ A number between 0 and 255 inclusive should be specified here. It is
+ used as the index into the current encoding vector when rasterizing
+ a character. This gives the user access to all currently encoded
+ characters, regardless of the current X11 keyboard mapping. If an
+ index is given whose encoding entry would produce no black pixels,
+ an error message is generated at the next character-rastering
+ time. The default value is 65, which corresponds
+ to the character ``A'' in most encoding vectors.
+\item \fbox{{\bfseries Test-String}}\\
+ In this dialog, a complete string may be specified. It will be
+ rastered when the next string-rastering button is pressed. It can be
+ of arbitrary length (well, almost). If this field is left empty, the
+ standard string ``Test'' will be used for rastering.
+\item \fbox{{\bfseries Kerning}}\\
+ This is a toggle button. Its state determines whether pairwise
+ kerning information from the AFM file will be used to correct the
+ horizontal spacing during string rastering or not. A typical example
+ is the word ``Test''; enabling kerning should---at least in
+ fonts of good quality---move the ``T'' and the ``e'' significantly
+ closer together.
+\item \fbox{{\bfseries Ligature}}\\
+ This is a toggle button. Its state specifies whether the
+ string is checked for ligatures prior to rastering it.
+ Suitable character sequences are replaced with the corresponding
+ ligature. For a good example, you should switch to
+ font ID 4 and type in the string \verb+--difficult---+. If ligature
+ detection is switched on, the two hyphens should be converted to an
+ en-dash ``--'', the three hyphens should be converted to an em-dash
+ ``---'' and the character series ``\verb+ffi+'' should be replaced
+ with the ligature ``ffi'', rather than to be displayed as ``f{}f{}i''.
+\item \fbox{$|\longrightarrow$} / \fbox{$\longleftarrow|$} This button allows
+ to change the writing direction that \tonelib\ will use in subsequent calls
+ to the string rastering functions, the default being {\em Left To Right} as
+ used in most European languages. This item is simply meant to demonstrate the
+ capabilities of \tonelib. The package does not come with fonts that are
+ intended to be used for {\em Right To Left} typesetting.
+\item \fbox{{\bfseries Underline}}\\
+ This toggle button determines whether strings are underlined or not.
+\item \fbox{{\bfseries Overline}}\\
+ Same as above for overlining.
+\item \fbox{{\bfseries Overstrike}}\\
+ Same as above for overstriking.
+\item \fbox{{\bfseries AA-Low}}/\fbox{{\bfseries AA-High}}\\
+ This button allows to select the subsampling factor for antialiasing in
+ subsequent rastering operations. {\em AA-Low} means subsampling by factor 2
+ which gives 5 gray values including black and white, whereas {\em AA-High}
+ means subsampling by 4 which yields 17 gray values including black and
+ white.
+\end{itemize}
+Notice that, aside from the latter, the toggle buttons only affect the string
+rastering functions.
+
+\subsection{Buttons that Influence the X11 Rastering Functions}
+The X11 rastering functions introduced in version 0.3-beta provide a
+considerably higher level of abstraction than the standard rastering
+functions. To show the effect in \verb+xglyph+, a few additional buttons are
+provided.
+\begin{itemize}
+\item \fbox{{\bfseries Transparent}}/\fbox{{\bfseries Opaque}}\\
+ This button allows to switch between transparent and opaque mode in the X11
+ rastering functions. In transparent mode, only non-background pixels are
+ drawn and all other pixels are left untouched. In opaque mode the entire
+ area that the bitmap will require is first filled with the background color
+ and then the bitmap is placed on this area.
+\item \fbox{{\bfseries Foreground}}\\
+ This is a label field with six color fields to the right and one color field
+ to the left. Clicking on one of the color fields located on the right side
+ will set the foreground color to the respective value (white, black, gray,
+ red, green or blue). The color field on the left side always shows the
+ current color selection.
+\item \fbox{{\bfseries Background}}\\
+ This also is a label field with six color fields to the right and one color
+ field to the left. It works in analogy to the above and sets the current
+ background color. Note that in order make the background color active, the
+ drawing mode must be set to ``opaque''.
+\end{itemize}
+
+\subsection{Buttons that Generate Actions}
+There are 10 buttons generating actions visible to the user.
+\begin{itemize}
+\item \fbox{{\bfseries Char}}\\
+ This button generates a bitmap of the character specified in the
+ \fbox{{\bfseries Character}}-dialog box. All parameters changed
+ earlier become effective at this time. The resulting bitmap is then
+ shown in the output window of \verb+xglyph+. Some information about
+ the generated bitmap and elapsed
+ time etc.\ is given in the message window. If an error occurred,
+ the old contents of the output window are kept and a message is given
+ to the user.
+\item \fbox{{\bfseries String}}\\
+ This button generates a bitmap of the string specified in the
+ \fbox{{\bfseries Test-String}}-dialog box. In addition to rastering
+ characters, kerning and ligature settings may now take influence on
+ the result of the operation (see \ref{fonts}). If no error occurs,
+ the bitmap is shown in the output window and additional information is
+ shown in the message area. Otherwise, an appropriate error message is
+ given.
+\item \fbox{{\bfseries AAChar}}
+\item \fbox{{\bfseries AAString}}\\
+ Both of these buttons do exactly the same as their non-antialiased
+ counterparts. The only difference consists in the generation of an
+ antialiased bitmap. The result is not a bitmap in fact.
+ There are at least 8 bits per pixel and at most 32 bits per
+ pixel in the resulting glyph. This depends on the depth of the
+ X11-visual you use when starting xglyph. The result may consume
+ quite a bit of memory
+ if a {\ttfamily TrueColor} or {\tt DirectColor} visual is
+ active.
+\item \fbox{{\bfseries CharX}}
+\item \fbox{{\bfseries StringX}}
+\item \fbox{{\bfseries AACharX}}
+\item \fbox{{\bfseries AAStringX}}\\
+ These functions basically do the same as the counterparts lacking the ``X''
+ in the name. But internally the X11 rastering functions are called to
+ produce the output bitmap/pixmap. As a consequence the current foreground
+ color, background color and drawing mode are taken into account. For a more
+ complete discussion of the X11 rastering functions see \ref{x11interface} on
+ page \pageref{x11interface}.
+\item \fbox{{\bfseries Font Table}}\\
+ A character table of size $16 \times 16$ is shown in the output
+ window. Each cell contains an antialiased representation of the character
+ indexed by the field number. The function \verb+T1_AASetCharX()+ is
+ used for drawing these characters. Current foreground and background colors
+ are respected as well as are most other parameters accepted by the character
+ rastering functions. Only the angle specification
+ is ignored since I assume that it is not very useful to have an overview
+ over a font at any angle different from 0. Notice that the default size
+ (100) is probably too large to make the output window fit on the screen. No
+ care is taken about this. The recommended size for viewing a font's
+ character map is
+ between 20 and 30 points at 72 dpi resolution.
+\item \fbox{{\bfseries About}}\\
+ Shows an `about' message
+ telling you that you are using \verb+xglyph+ and \tonelib\ in the current
+ version.
+\item \fbox{{\bfseries Exit Program}}\\
+ This button does what it says and exits the program.
+\end{itemize}
+
+\subsection{The Message Window}
+This area is located below the dialog box for the test
+string. Information potentially useful to the user is given here.
+There should be nothing needed to be said about the info---it is
+self-explaining.
+But two things should be noted:
+\begin{itemize}
+\item The elapsed time that is displayed is exactly the time spent in
+ the respective rastering function. There might
+ have been other actions in force which might make the user believe the
+ time value given as being incorrect.\footnote{For example, there might have
+ been size-dependent data to be deleted and recreated, or an encoding
+ file might have needed
+ to be loaded before rastering.} Moreover, the transfer to the
+ X-server may become significant if 32 bits per pixel are used, the
+ image is large and
+ the program is running on a remote machine.
+\item The message \verb+t1lib: Couldn't generate Bitmap, T1_errno=...!+ simply
+ tells the user that no bitmap could be generated. There may be
+ several reasons. E.g., the \verb+FontID+-value given might have been
+ out of range. Another possibility is that you have specified a
+ character index which has no encoded character associated. The value of
+ \verb+T1_errno+ might give a hint of what the problem was.
+\end{itemize}
+If a character map is displayed, the message window is giving no
+information apart from the font name and the final value of
+\verb+T1_errno+ because there have been executed
+up to 256 rastering operation and it would be impossible to keep track
+of all single operations.
+
+\subsection{The Output Window}
+The output window shows the output of the rastering operations. Its type is
+different for the standard and the X11 rastering functions. For the standard
+rastering functions, it is always adapted to the size of the glyph which is
+displayed plus a margin of 5 pixels on each side. For this reason, leading and
+trailing white space is not shown in the output window, it only shows up in
+the glyph's metrics in the message windows.
+
+The X11 rastering functions
+generate an output window of constant size (\hbox{600 $\times $ 400} pixels)
+with a logical origin in its center. This center is marked by a cross-hair of
+color cyan. The glyph is placed with respect to this origin. If it is too
+large to fit, the glyph simply is clipped. A second cross-hair is shown at the
+place where the origin of the next glyph would be located in color magenta.
+
+If a character map of a font is displayed, the output window contains
+a map of $16\times 16$ cells whose size depends on the metrics of the
+font that is displayed.
+
+
+\subsection{{\tt xglyph} Commandline Parameters}
+The syntax of the \verb+xglyph+ commandline is
+\begin{verbatim}
+ xglyph [options] [fontfile1 [fontfile2 [...]]]
+\end{verbatim}
+If no options and no font files are specified on the commandline \verb+xglyph+
+reads the fonts from the font database file. The details depend on which
+configuration file is found and on this file's contents. If at least one font
+file is specified on the commandline, the font database---being existent and
+accessible or not---is ignored and the database is built using the fonts from
+the commandline. \verb+fontfile1+ is assigned the font ID 0, \verb+fontfile2+
+is assigned the ID 1 and so forth. Files that cannot be opened for some reason
+are simply skipped.
+
+\verb+xglyph+ also recognizes a few options. Notice that these options are not
+intended for an average user. Rather, they provide a means of (a) controlling
+debugging output from the rasterizer, (b) controlling generation and verbosity
+of the \tonelib-logfile, (c) disabling certain features of the rasterizer and
+(d) checking some \tonelib\ functions which otherwise would not be required
+because of the limited functionality of \verb+xglyph+.
+
+All commandline arguments that start with ``\verb+--+'' are considered to be
+options to \verb+xglyph+. The following is a complete list of valid options
+and a brief description of their effect:
+\begin{itemize}
+\item\verb+--help+: Display the commandline syntax of \verb+xglyph+ as well as
+ a brief list of the available options for an average user and exit.
+\item\verb+--Help+: Display the commandline syntax of \verb+xglyph+ as well as
+ a brief list of all available options.
+\item\verb+--noGrid+: The cross-hairs marking start and end position of a
+ glyph in the output of one of the X11 rastering functions will be
+ suppressed. This might be useful at small sizes because the grid overwrites
+ the glyphs' pixels.
+\item\verb+--setPad+: The padding value \verb+xglyph+ should use can be
+ specified here. This has to be followed by either ``8'', ``16'' or ``32'',
+ separated by a space. Notice that the value ``32'' might be rejected as
+ described in \ref{queryconfiguration}. The value actually used can be found
+ by writing a logfile and examining this after a session.
+\item\verb+--logError+:
+\item\verb+--logWarning+:
+\item\verb+--logStatistic+:
+\item\verb+--logDebug+: These options firstly instruct \verb+xglyph+ to create
+ a \tonelib\ logfile and secondly set the loglevel to the respective value
+ (see \ref{logfile}). Without specifying one of these options, no logfile
+ will be generated.
+\item\verb+--ignoreForceBold+: Instructs the rasterizer to ignore a {\tt
+ ForceBold} hint in the Type 1 font file.
+\item\verb+--ignoreFamilyAlignment+: Instructs the rasterizer always to
+ compute font level alignment according to \verb+BlueValues+ and
+ \verb+OtherBlues+, even if \verb+FamilyBlues+ and \\
+ \verb+FamilyOtherBlues+
+ exist and all conditions for substitution are fulfilled for that combination
+ of font and size.
+\item\verb+--ignoreHinting+: Instructs the rasterizer to omit hinting completely.
+\item\verb+--ignoreAFM+: The use of AFM information is ignored, no matter
+ whether it could be accessed via an appropriate AFM file or
+ self-generated. When using this option the string functions would not
+ work. It may, however, be useful because self-generation of AFM data fails
+ as soon as at least one character of all defined characters can not be
+ processed and thus, the font will refuse to load. Using this option,
+ consequently, one has access to all character that are processible, e.g.,
+ for generating a font table.
+ characters that can be rasterized
+\item\verb+--debugLine+:
+\item\verb+--debugRegion+:
+\item\verb+--debugPath+:
+\item\verb+--debugFont+:
+\item\verb+--debugHint+: All these instruct the rasterizer to write particular
+ debug messages from intermediate steps of rasterization to the terminal. In
+ order to understand and interprete them, a thorough understanding of the
+ Type 1 font format specification and this special rasterizer implementation
+ is crucial.
+\item\verb+--checkPerformance+: This option affects the X11 string rastering
+ functions. An additional output window is created and the output of
+ before-mentioned functions is directly written into this window. Note that
+ this window is not managed as might be expected. Text is only drawn at the
+ visible parts and after partially or completely hiding and again
+ raising the respective areas are lost. This mechanism should simply give an
+ idea of how fast the X11 rastering function work, admittedly a critical
+ topic in \tonelib.
+\item\verb+--checkCopyFont+: This option is used to check the proper
+ functioning of the \verb+T1_CopyFont()+ function. It copies all fonts from
+ the database to new logical fonts and slants these fonts by 0.3. Finally an
+ additional fontfile is added to the database. For each step the new font ID
+ is printed to the terminal and the initial and final number of fonts are
+ printed.
+\item\verb+--checkConcatGlyphs+: This option affects the buttons \fbox{\bf
+ String} and \fbox{\bf AAString}. The requested string glyph is generated
+ twice, first time using the current value of font ID and second time using
+ this
+ values plus 1. Both resulting glyphs are concatenated and the result is
+ shown in the output window.
+\item\verb+--checkConcatOutlines+: This option, too, affects the standard
+ string rastering functions. The current test string will be fetched as an
+ outline using the current font ID. The result is then concatenated with a
+ horizontal movement of 1000 charspace unit which is followed by the
+ identical string using a font ID advanced by 1. The result of the
+ concatenated outlines is then filled and converted to a \tonelib-glyph.
+ For details on outline handling and what it is meant for see \ref{outlines}.
+
+ When \verb+--checkConcatGlyphs+ and \verb+--checkConcatOutlines+ both are
+ specified on commandline, the \verb+--checkConcatGlyphs+ is respected.
+\item\verb+--checkBadCharHandling+: This option provides a means of
+ examining the effects of problematic/bad characters on string handling in
+ \tonelib with \verb+xglyph+. It affects only the \fbox{\bf String} button.
+ The character to be specified in the test character field is inserted in
+ the middle of the test string. This enables the user to insert arbitrary
+ character codes in the middle of a test string and to watch the effect in
+ \verb+T1_SetString()+. For example, starting \verb+xglyph+ with this
+ option exclusively and immediately clicking \fbox{\bf String} will show
+ the string {\em TeAt} in the output window because the character `s' has
+ been overwritten by character $65_{10}$ (`A'), the default test character.
+\item\verb+--checkDefaultEncoding+: This option proves that the default
+ encoding feature works correct. If set, all fonts should be encoded in
+ IsoLatin1 encoding immediately after startup and without any slow down at
+ startup.
+\item\verb+--checkSmartAntialiasing+: Enables smart antialiasing as described
+ in \ref{antialiasing}. The effect is that \tonelib\ will determine the
+ antialiasing level by itself. For sizes below 20~bp, $4\times$ antialiasing
+ will be used and up to 60~bp $2\times$ antialiasing is used. For size of
+ 60~bp and larger a ``bytemap'' is created which in fact consists only of
+ pure background and foreground pixels. When this options has been
+ specified, toggling the antialiasing level has no effect.
+\item\verb+--checkAACaching+: This option enables caching of antialiased
+ character glyphs. For a discussion of this issue see \ref{aacaching}. The
+ string rastering functions are not affected by this option.
+\item \verb+--checkSetRect+: This option allows to check the rectangle drawing
+ functions of \tonelib. If specified, the character drawing buttons will
+ produce an em unit square of the current font instead of the expected
+ character.
+\item \verb+--cacheStrokedGlyphs+: If this option is specified, \verb+xglyph+
+ will cache stroked glyphs whereas filled ones are not cached.
+\end{itemize}
+For those who are wondering about special X11 options like ``\verb+-display+'',
+\verb+xglyph+ does not support these. The widgets are built straight ahead and
+the layout is fixed. \verb+xglyph+ is meant to be a tool for testing some of
+the functionalities of \tonelib\ and nothing more. Of course, a display other
+than \verb+localhost:0.0+ may be specified by environment variable
+\verb+DISPLAY+.
+
+
+\subsection{Fonts Included in the \tonelib-Package}
+\label{fonts}%
+Included in the \tonelib-package are 8 fonts of two families which
+are freely available.
+\begin{enumerate}
+\item The CharterBT-fonts in Roman, Italic, Bold and BoldItalic
+ variants. These are good quality fonts containing kerning
+ information. Notable kerning pairs are ``T''--``e'', ``A''--``V''
+ and ``A''--``T''.
+\item The ComputerModern-fonts by Donald E.~Knuth in the variants
+ Roman, Italic, BoldExtended and BoldExtendedItalic. In addition to
+ kerning information, there are many ligatures in these
+ fonts. Most people will know about the present ligatures from using
+ \TeX, the typesetting system. Notable examples are:
+ \verb+--+ $\rightarrow$ ``--'',
+ \verb+---+ $\rightarrow$ ``---'',
+ \verb+fi+ $\rightarrow$ ``fi'' and
+ \verb+ffi+ $\rightarrow$ ``ffi''.
+ These fonts have the disadvantage that no ordinary space character
+ is included, only a visible space. \TeX\ itself does not need a
+ dedicated space character.
+\end{enumerate}
+Note that working with ligatures requires the ligatures to be
+encoded at the positions they are expected. Thus, if you reencode one of the
+dc-fonts with the IsoLatin1-encoding funny effects may occur.
+
+\subsection{Some General Remarks on {\tt xglyph}}
+The program \verb+xglyph+ is just intended to check whether \tonelib\ works on
+a particular system. It is written straight forward and does not care much on
+performance and such. Especially, it is not a typical application for a
+rasterizer library. The bitmaps are generated and then the output window is
+adapted to the size of the bitmap/pixmap generated by the rastering
+function. This contradicts the X11 principle of ``drawing into a drawable''
+and requires some overhead if one wants a fitted output window. In that sense,
+the performance of the X11 rastering functions is not directly comparable to
+the performance of the standard rastering functions. This should always be
+kept in mind.
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/doc/xinterface.tex b/Build/source/libs/t1lib/t1lib-5.1.2/doc/xinterface.tex
new file mode 100644
index 00000000000..3e9c048c673
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/doc/xinterface.tex
@@ -0,0 +1,294 @@
+%----------------------------------------------------------------------------
+% ----- File: xinterface.tex
+% ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+% ----- Date: 2003-01-04
+% ----- Description: This file is part of the t1lib-documentation.
+% ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+% As of version 0.5, t1lib is distributed under the
+% GNU General Public Library Lincense. The
+% conditions can be found in the files LICENSE and
+% LGPL, which should reside in the toplevel
+% directory of the distribution. Please note that
+% there are parts of t1lib that are subject to
+% other licenses:
+% The parseAFM-package is copyrighted by Adobe Systems
+% Inc.
+% The type1 rasterizer is copyrighted by IBM and the
+% X11-consortium.
+% ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+% ----- Credits: I want to thank IBM and the X11-consortium for making
+% their rasterizer freely available.
+% Also thanks to Piet Tutelaers for his ps2pk, from
+% which I took the rasterizer sources in a format
+% independ from X11.
+% Thanks to all people who make free software living!
+%----------------------------------------------------------------------------
+
+\newpage
+\section{The X11-Interface}
+\label{x11interface}
+As of V.\ 0.3-beta \tonelib\ incorporates some special functions that can make
+life easier for X11 programmers. Prior to further discussions it should be
+noted that these functions, which itself use functions \verb+Xlib+ are
+fully optional so that \tonelib\ can still be compiled and used on systems
+without X11.
+
+\subsection{Why a Special X11-Interface?}
+Although it initially was an explicit goal to make the library independent of
+X11, there are some strong arguments voting for a subset of functions adapted
+to X11 features. Here are some of them.
+\begin{itemize}
+\item X11 can be considered a standard under UNIX and graphical applications
+ under UNIX would to a high probability rely on X11. For this reason it would
+ not degrade portability much when using X11 features.
+\item The standard rastering functions of \tonelib\ strictly use the principle
+ of {\em generating bitmaps}. The rastering functions return bitmaps of a
+ specific size with reference point at upper left corner and additional
+ geometric information to tell the user how to position the bitmap correctly
+ with respect to the current point. A more natural approach would be to have
+ functions that draw on some existent {\em area} at a position and
+ orientation to be specified with the logical origin of the text taken into
+ account.
+\item The standard functions do not deal with color at all. This is especially
+ complicated in the case of antialiased fonts. If some application wanted to
+ use an existent (already cached) font, all characters would have to be
+ removed from memory and recreated using the new color values.
+\item In case of antialiasing the user has to make a decision on the depth of
+ the bitmaps. But what if an X-application uses drawables of different depths?
+ Such configurations could raise the programming effort up infinity (well,
+ alomst).
+\item The standard functions cache their bitmaps locally, i.e., on the machine
+ where the X11-client runs. Every characters bitmap has thus to be
+ transferred to the X11 server again and again. This might cause an
+ performance degradation, especially if the client runs on a remote machine
+ with a slow or heavy-loaded network connection.
+\end{itemize}
+Taken these arguments into account I decided to create an additional
+``special'' set of functions that allow uncomplicated usage under the X11
+window system, similar to the \verb+Xlib+-function \verb+X11DrawText()+.
+The approach used in V.~0.3-beta has been a quite elegant solution
+to the problems considered above. Unfortunately, it has been too slow to be
+usable in practice. Furthermore, caching in the X11-server produced some
+overhead and difficulties. According to my experiences server caching would
+only be advantageous for very large characters such as 500 bp and more. As a
+consequence, the X11 interface is redesigned and reduced to a {\em simple
+ wrapper} which deals with all but the last of the above items, from
+\tonelib\ V.~0.4-beta up.
+
+
+\subsection{Initialization of the X11-Interface}
+There are a few things \tonelib\ must know in order to be able to do its job
+properly. These parameters are defined by a functioncall to
+\precorr
+\begin{verbatim}
+int T1_SetX11Params( Display *display, Visual *visual,
+ unsigned int depth, Colormap colormap)
+\end{verbatim}\index{\verb+T1_SetX11Params()+}\postcorr
+\verb+display+ is the pointer to the structure of the display the application
+is connected to. It is once specified here because this avoids the need of
+repeatedly having to specify this pointer.
+
+\verb+visual+ is the pointer to the structure of the visual on which
+\tonelib\ should create
+the XImages that will be transferred to the X server when using antialiasing. In
+most cases it should be safe to specify \verb+DefaultVisual(...)+.
+
+The \verb+depth+-argument specifies the depth that \tonelib\ will use when
+creating antialiased pixmaps. It is thus identical to the value \verb+bpp+
+supplied to \verb+T1_AASetBitsPerPixel()+ (see \ref{antialiasing}).
+The depth must be one of the depth supported by
+the visual as specified above.
+
+\verb+colormap+ is the specification of an X11 colomap. It is needed because
+\tonelib\ might need to allocate some more colors for antialiasing
+purposes. The same colormap that the application uses should be specified
+here. If the application uses no special color handling,
+\verb+DefaultColormap(...)+ is probably the right value.
+
+As mentioned before, the X11 rastering functions put the characters with their
+origin at the specified point. This behavior, being the default, can be
+switched by calling
+\precorr
+\begin{verbatim}
+ void T1_LogicalPositionX( int pos_switch)
+\end{verbatim}\index{\verb+T1_LogicalPositionX()+}\postcorr
+Specifying \verb+pos_switch+=0 has the effect that in subsequent calls to X11
+rastering functions the result will be placed with the upper left corner at
+the specified position. The default behavior can be restored by calling this
+function again with some non-zero value.
+
+\subsection{Rastering Functions}
+In analogy to the standard rastering functions the \tonelib\ X11 interface
+provides six functions for generating character and string bitmaps, rectangles
+as well as their antialiased equivalents:
+\precorr
+\begin{verbatim}
+ GLYPH *T1_SetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetCharX()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_SetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetStringX()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_SetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_SetRectX()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AASetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetCharX()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AASetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetStringX()+}\postcorr
+\precorr
+\begin{verbatim}
+ GLYPH *T1_AASetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform)
+\end{verbatim}\index{\verb+T1_AASetRectX()+}\postcorr
+
+
+Instead of explaining everything in detail, we will discuss only those items
+that are different from the standard rastering. For discussion of the
+parameters \verb+FontID+, \verb+charcode+, \verb+string+, \verb+len+,
+\verb+spaceoff+, \verb+modflag+, \verb+size+ and \verb+transform+ see
+\ref{generatingbitmaps}.
+
+The \verb+drawable+ parameter specifies the X11 drawable into which the text
+will be drawn. It may be either a pixmap or a window.
+
+\verb+gc+ is the graphics context in which the operation should take
+place. Obviously, the most importamt components of the graphics context are the
+current foreground and background color. \tonelib\ uses these colors to draw
+the text/background.
+
+The value of \verb+mode+ determines whether {\em opaque} or {\em transparent}
+mode is used. In opaque mode all pixels including background pixels are
+drawn. This means the whole area of the bounding box of the character/string
+is painted. In transparent mode, only non-background pixels are drawn so that
+underlying graphics are minimum affected. One could imagine that as drawing the
+text on a transparent slide and overlay the result with the existent
+graphics. Using transparent mode should be somewhat slower, especially for the
+antialiasing functions since the information which pixels are background and
+which not has to be generated first. Moreover, the clipmask of the current
+graphics context is modified when drawing text in transparent mode.
+
+\verb+x+ and \verb+y+ define the position coordinates where the origin of the
+text will be located in the drawable. \tonelib\ does no checking of this
+position so that bad positioned text might not appear at all in the drawable
+without getting an error---it is simply clipped to the limits of the
+drawable.
+
+The non-antialiasing functions will take the fore- and background color from
+the specified graphics context.
+The antialiasing rastering functions work a little different. They also
+respect the current foreground and background color. The ``graylevel'' colors
+are computed on the fly and allocated in the colormap specified by the user in
+the call to \verb+T1_SetX11Params()+. The term graylevel has been quoted since
+these are in fact no graylevels at all. They are just discrete colors from a
+smooth bleed between the foreground and the background color. The colors are
+computed the following according to the following scheme:
+\begin{enumerate}
+\item The current foreground and background color are split into their
+ respective RGB components, lets call them $f_R$, $f_G$, $f_B$, $b_R$, $b_G$
+ and $b_B$.
+\item Intermediate values are computed between each pair of color components
+ $f_R$--$b_R$, $f_G$--$b_G$ and $f_B$--$b_B$ by making a linear
+ interpolation.
+\item For each newly created RGB-triple (currently 3) a pixel color is
+ allocated in the colormap specified by the user in a way that the pixel
+ colors match the theoretical values best.
+\end{enumerate}
+
+A general comment on antialiasing: If using transparent mode antialiasing
+may produce the opposite effect of what is wanted, depending on the color of
+the underlying graphics. You can use the program \verb+xglyph+ to check the
+effect: Start \verb+xglyph+ and prior to doing anything else click on button
+\fbox{AAStringX}. The resulting glyph is antialiased against the background
+color white but the real background due to transparency is quite different
+from white. Consequently the glyph seems to be surrounded by a thin light gray
+border.
+
+
+\subsection{Creating XPM-Files from \tonelib-Glyphs}
+\label{xpmfiles}
+The creation XPM files is not supported directly in \tonelib. Rather, there is
+a utility function which prepares what is necessary and leaves the creation of
+the Pixmap file to the one and only authority, to the Pixmap library. The
+required function is:
+\precorr
+\begin{verbatim}
+ XImage *T1_XImageFromGlyph( GLYPH *glyph)
+\end{verbatim}\index{\verb+T1_XImageFromGlyph()+}\postcorr
+It creates an X11 image from a valid \tonelib-glyph of arbitrary depth,
+padding and antialiasing configuration and returns the pointer to the newly
+created structure. This image can later be dumped into an XPM file using the
+XPM library function \verb+XpmWriteFileFromImage()+. The following code
+fragment shows how easy this really is. It assumes that the program containing
+that code is additionally linked with the XPM library.
+\begin{verbatim}
+ .
+ .
+ .
+ ximage=T1_XImageFromGlyph( glyph); /* generate ximage containg the glyph */
+ /* write pixmap file */
+ XpmWriteFileFromImage( display, "glyphtest.xpm", ximage, NULL, NULL);
+ ximage->data=NULL;
+ XDestroyImage( ximage);
+ .
+ .
+ .
+\end{verbatim}
+As already shown in this example code, the user has to take care for that
+\verb+XDestroyImage()+ does not free the glyph's bitmap. This achieved by
+setting \verb+ximage->data+ to \verb+NULL+.
+
+Having an XPM file from a \tonelib-glyph it should easily be possible to
+create graphic files of arbitrary formats, e.g., by using \verb+xv+.
+
+\subsection{Limits of the X11 Interface}
+A few words about what the X11 interface can do and cannot do are appropriate,
+I think. Except for that a few global variables of \tonelib\ are accessible,
+the whole code of the X11 interface could as well be part of an application
+instead of being part of \tonelib. In other words, \tonelib\ is not able to do
+anything an application program could not do. This applies especially to
+performance improvements. Unfortunately---but consequently, the X11 rastering
+functions are not faster than the standard rastering functions.
+
+To come to a conclusion, this is what the X rastering functions offer to the
+user:
+\begin{itemize}
+\item Save the user entirely from thinking about color.
+\item Offers a set functions comparable to \verb+XDrawText()+.
+\item Frees the user from having to think about transparency and opacity.
+\item Implements antialiasing between any given pair of foreground/background
+ colours.
+\end{itemize}
+And here is what they not provide:
+\begin{itemize}
+\item Functions that perform as if the rasterizer would be part of the X
+ server.
+\end{itemize}
+That's life, folks.
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "t1lib_doc"
+%%% End:
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/etc/README b/Build/source/libs/t1lib/t1lib-5.1.2/etc/README
new file mode 100644
index 00000000000..8d6940996e1
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/etc/README
@@ -0,0 +1,4 @@
+This directory is intended as a container for files which have turned
+to be handy during development. It is not for using t1lib.
+
+ 2002-12-08, RMz
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/etc/charpath2.ps b/Build/source/libs/t1lib/t1lib-5.1.2/etc/charpath2.ps
new file mode 100644
index 00000000000..223cb0da925
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/etc/charpath2.ps
@@ -0,0 +1,517 @@
+% 3.
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 500 def
+/yc 750 def
+/xd 500 def
+/yd 100 def
+
+% 4.
+/xa 100 def
+/ya 300 def
+/xb 100 def
+/y5 400 def
+/xc 500 def
+/yc 300 def
+/xd 300 def
+/yd 300 def
+
+% 1.
+/xa 100 def
+/ya 100 def
+/xb 300 def
+/yb 150 def
+/xc 300 def
+/yc 500 def
+/xd 550 def
+/yd 600 def
+
+% 2.
+/xa 100 def
+/ya 100 def
+/xb 100 def
+/yb 400 def
+/xc 300 def
+/yc 550 def
+/xd 500 def
+/yd 600 def
+
+
+
+%% t1lib test
+%100 100 translate
+
+/TimesRoman findfont 25 scalefont setfont
+/line1 20 string def
+
+% t1lib test . segment 1
+/xa 139.000000 def
+/ya 118.000000 def
+/xb 104.000000 def
+/yb 118.000000 def
+/xc 75.000000 def
+/yc 90.000000 def
+/xd 75.000000 def
+/yd 54.000000 def
+
+% t1lib test . segment 2
+/xa 75.000000 def
+/ya 54.000000 def
+/xb 75.000000 def
+/yb 18.000000 def
+/xc 104.000000 def
+/yc -9.000000 def
+/xd 139.000000 def
+/yd -9.000000 def
+
+% t1lib test Bitstream Charter BT Roman Character R: curve ppoints 19 ... 22
+/xa 404.000000 def
+/ya 192.000000 def
+/xb 425.000000 def
+/yb 128.000000 def
+/xc 429.000000 def
+/yc 63.000000 def
+/xd 477.000000 def
+/yd 21.000000 def
+
+% test a straight line, slope 45 degrees
+/xa 100.0 def
+/ya 100.0 def
+/xb 150.0 def
+/yb 125.0001 def
+/xc 200.0 def
+/yc 150.0 def
+/xd 250.0 def
+/yd 175.0 def
+
+% t1lib test Bitstream Charter BT Roman Character R: curve ppoints 29 ... 32
+/xa 656.000000 def
+/ya 39.000000 def
+/xb 653.000000 def
+/yb 39.000000 def
+/xc 650.000000 def
+/yc 39.000000 def
+/xd 647.000000 def
+/yd 39.000000 def
+
+% t1lib test Bitstream Charter BT Roman Character R: curve ppoints 29 ... 32
+/xa 656.000000 def
+/ya 39.000000 def
+/xb 653.000000 def
+/yb 39.000000 def
+/xc 650.000000 def
+/yc 39.000000 def
+/xd 647.000000 def
+/yd 39.000000 def
+
+% t1lib test Bitstream Charter BT Roman Character R: curve ppoints 19 ... 22
+/xa 404.000000 def
+/ya 192.000000 def
+/xb 425.000000 def
+/yb 128.000000 def
+/xc 429.000000 def
+/yc 63.000000 def
+/xd 477.000000 def
+/yd 21.000000 def
+
+/xa 404.000000 def
+/ya 192.000000 def
+%/xb 424.90100 def % critical location where tmp2 approx. equals btmp3
+/xb 424.90666 def % critical location where tmp2 approx. equals btmp3
+/yb 128.000000 def
+/xc 429.000000 def
+/yc 63.000000 def
+/xd 477.000000 def
+/yd 21.000000 def
+
+
+/xa 305.000000 def
+/ya 652.000000 def
+/xb 395.000000 def
+/yb 652.000000 def
+/xc 507.000000 def
+/yc 648.000000 def
+/xd 507.000000 def
+/yd 503.000000 def
+
+/xa 435.000000 00 sub def
+/ya 340.000000 def
+/xb 532.000000 00 sub def
+/yb 364.000000 def
+/xc 610.000000 00 sub def
+/yc 425.000000 def
+/xd 610.000000 00 sub def
+/yd 503.000000 def
+
+/xa 458.000000 def
+/ya 357.000000 def
+/xb 555.000000 def
+/yb 376.000000 def
+/xc 624.000000 def
+/yc 440.000000 def
+/xd 624.000000 def
+/yd 514.000000 def
+
+/xa 327.000000 def
+/ya 89.000000 def
+/xb 335.000000 def
+/yb 78.000000 def
+/xc 348.000000 def
+/yc 62.000000 def
+/xd 348.000000 def
+/yd 56.000000 def
+
+
+/linewidth 30 def
+
+% compute distance from Bezier_A to Bezier_B
+/dista xb xa sub dup mul yb ya sub dup mul add sqrt def
+
+% compute distance from Bezier_C to Bezier_D
+/distd xd xc sub dup mul yd yc sub dup mul add sqrt def
+
+/diameter linewidth 2 div def
+
+% compute resulting limit values of thick curve at end points
+/dxa yb ya sub diameter mul dista div def
+/dya xb xa sub diameter mul dista div neg def
+/dxd yd yc sub diameter mul distd div def
+/dyd xd xc sub diameter mul distd div neg def
+
+% draw curve as rendered by ghostscript
+xa ya moveto
+xb yb xc yc xd yd curveto
+%linewidth 40 div setlinewidth
+linewidth setlinewidth
+0 setlinecap
+stroke
+
+% correct right path end points
+/xar xa dxa add def
+/yar ya dya add def
+/xdr xd dxd add def
+/ydr yd dyd add def
+
+% correct left path end points
+/xal xa dxa sub def
+/yal ya dya sub def
+/xdl xd dxd sub def
+/ydl yd dyd sub def
+
+
+/x1 xa xb add 0.5 mul def
+/y1 ya yb add 0.5 mul def
+/x2 xb xc add 0.5 mul def
+/y2 yb yc add 0.5 mul def
+/x3 xc xd add 0.5 mul def
+/y3 yc yd add 0.5 mul def
+/x4 xa xb 2 mul add xc add 4 div def
+/y4 ya yb 2 mul add yc add 4 div def
+/x5 xd xc 2 mul add xb add 4 div def
+/y5 yd yc 2 mul add yb add 4 div def
+/x6 xa xb 3 mul add xc 3 mul add xd add 8 div def
+/y6 ya yb 3 mul add yc 3 mul add yd add 8 div def
+
+0 0 0 setrgbcolor
+newpath xa ya 2.0 0 360 arc closepath fill
+newpath xb yb 2.0 0 360 arc closepath fill
+newpath xc yc 2.0 0 360 arc closepath fill
+newpath xd yd 2.0 0 360 arc closepath fill
+
+1 0 0 setrgbcolor
+newpath x1 y1 2.0 0 360 arc closepath fill
+newpath x2 y2 2.0 0 360 arc closepath fill
+newpath x3 y3 2.0 0 360 arc closepath fill
+
+0 1 0 setrgbcolor
+newpath x4 y4 2.0 0 360 arc closepath fill
+newpath x5 y5 2.0 0 360 arc closepath fill
+
+0 0 1 setrgbcolor
+newpath x6 y6 2.0 0 360 arc closepath fill
+
+
+% compute right-side normal vector
+/nabs diameter x5 x4 sub dup mul y5 y4 sub dup mul add sqrt div def
+
+/nxr y5 y4 sub nabs mul def
+/nyr x4 x5 sub nabs mul def
+
+
+% calculate location and direction vectors of lines to intersect
+/bloc1x 4 nxr x6 add mul xar 2 mul sub xdr add 3 div def
+/bloc1y 4 nyr y6 add mul yar 2 mul sub ydr add 3 div def
+/bdir1x xc xd add xa sub xb sub def
+/bdir1y yc yd add ya sub yb sub def
+/bloc2x xar def
+/bloc2y yar def
+/bdir2x xb xa sub def
+/bdir2y yb ya sub def
+
+% calculate determinant and inverse
+/bdet bdir2x bdir1y mul bdir2y bdir1x mul sub def
+
+%bdet 0.0 eq
+bdet abs 0.001 le
+{
+ /xbr xb nxr add def
+ /ybr yb nyr add def
+ /bnu 0.0 def
+ /bmu 0.0 def
+}
+{
+ /binvdet 1 bdet div def
+
+ % calculate inverse of dir matrix
+ /binvdir2x bdir1y binvdet mul def
+ /binvdir2y bdir2y binvdet mul neg def
+ /binvdir1x bdir1x binvdet mul neg def
+ /binvdir1y bdir2x binvdet mul def
+
+ % calculate mu and nu value (nu actually is not required)
+ /bmu binvdir2x bloc1x bloc2x sub mul binvdir1x bloc1y bloc2y sub mul add def
+ /bnu binvdir2y bloc1x bloc2x sub mul binvdir1y bloc1y bloc2y sub mul add def
+
+ /xbr bloc2x bmu bdir2x mul add def
+ /ybr bloc2y bmu bdir2y mul add def
+}
+ifelse
+
+
+
+% calculate location and direction vectors of lines to intersect
+/cloc1x 4 nxr x6 add mul xar add xdr 2 mul sub 3 div def
+/cloc1y 4 nyr y6 add mul yar add ydr 2 mul sub 3 div def
+/cdir1x xc xd add xa sub xb sub def
+/cdir1y yc yd add ya sub yb sub def
+/cloc2x xdr def
+/cloc2y ydr def
+/cdir2x xc xd sub def
+/cdir2y yc yd sub def
+
+% calculate determinant and inverse
+/cdet cdir2x cdir1y mul cdir2y cdir1x mul sub def
+
+%cdet 0.0 eq
+cdet abs 0.001 le
+{
+ % curve is just a straight line
+ /xcr xc nxr add def
+ /ycr yc nyr add def
+ /cmu 0.0 def
+}
+{
+ /cinvdet 1 cdet div def
+
+ % calculate inverse of dir matrix
+ /cinvdir2x cdir1y cinvdet mul def
+ /cinvdir2y cdir2y cinvdet mul neg def
+ /cinvdir1x cdir1x cinvdet mul neg def
+ /cinvdir1y cdir2x cinvdet mul def
+
+ % calculate mu and nu value (mu actually is not required)
+ /cmu cinvdir2x cloc1x cloc2x sub mul cinvdir1x cloc1y cloc2y sub mul add def
+ /cnu cinvdir2y cloc1x cloc2x sub mul cinvdir1y cloc1y cloc2y sub mul add def
+
+ /xcr cloc2x cmu cdir2x mul add def
+ /ycr cloc2y cmu cdir2y mul add def
+}
+ifelse
+
+
+% Analyse coefficients and decide how to compute displacements
+bmu 0.1 le
+{
+ /xbr 8 nxr x6 add mul xar sub xdr sub 3 div xcr sub def
+ /ybr 8 nyr y6 add mul yar sub ydr sub 3 div ycr sub def
+}
+if
+
+cmu 0.1 le
+{
+ /xcr 8 nxr x6 add mul xar sub xdr sub 3 div xbr sub def
+ /ycr 8 nyr y6 add mul yar sub ydr sub 3 div ybr sub def
+}
+if
+
+
+%
+
+
+% display debug info on page
+10 625 moveto
+(xa = ) show xa line1 cvs show
+10 600 moveto
+(ya = ) show ya line1 cvs show
+10 575 moveto
+(xb = ) show xb line1 cvs show
+10 550 moveto
+(yb = ) show yb line1 cvs show
+10 525 moveto
+(xc = ) show xc line1 cvs show
+10 500 moveto
+(yc = ) show yc line1 cvs show
+10 475 moveto
+(xd = ) show xd line1 cvs show
+10 450 moveto
+(yd = ) show yd line1 cvs show
+
+% display debug info on page
+10 425 moveto
+(xar = ) show xar line1 cvs show
+10 400 moveto
+(yar = ) show yar line1 cvs show
+10 375 moveto
+(xbr = ) show xbr line1 cvs show
+10 350 moveto
+(ybr = ) show ybr line1 cvs show
+10 325 moveto
+(xcr = ) show xcr line1 cvs show
+10 300 moveto
+(ycr = ) show ycr line1 cvs show
+10 275 moveto
+(xdr = ) show xdr line1 cvs show
+10 250 moveto
+(ydr = ) show ydr line1 cvs show
+
+10 1150 moveto
+(bdir1x = ) show bdir1x line1 cvs show
+10 1125 moveto
+(bdir1y = ) show bdir1y line1 cvs show
+10 1100 moveto
+(bdir2x = ) show bdir2x line1 cvs show
+10 1075 moveto
+(bdir2y = ) show bdir2y line1 cvs show
+10 1050 moveto
+(cdir1x = ) show cdir1x line1 cvs show
+10 1025 moveto
+(cdir1y = ) show cdir1y line1 cvs show
+10 1000 moveto
+(cdir2x = ) show cdir2x line1 cvs show
+10 975 moveto
+(cdir2y = ) show cdir2y line1 cvs show
+
+210 1150 moveto
+(bloc1x = ) show bloc1x line1 cvs show
+210 1125 moveto
+(bloc1y = ) show bloc1y line1 cvs show
+210 1100 moveto
+(bloc2x = ) show bloc2x line1 cvs show
+210 1075 moveto
+(bloc2y = ) show bloc2y line1 cvs show
+210 1050 moveto
+(cloc1x = ) show cloc1x line1 cvs show
+210 1025 moveto
+(cloc1y = ) show cloc1y line1 cvs show
+210 1000 moveto
+(cloc2x = ) show cloc2x line1 cvs show
+210 975 moveto
+(cloc2y = ) show cloc2y line1 cvs show
+
+10 925 moveto
+(bdet = ) show bdet line1 cvs show
+10 900 moveto
+(cdet = ) show cdet line1 cvs show
+
+10 850 moveto
+(bmu = ) show bmu line1 cvs show
+10 825 moveto
+(cmu = ) show cmu line1 cvs show
+10 800 moveto
+(bnu = ) show bnu line1 cvs show
+10 775 moveto
+(cnu = ) show cnu line1 cvs show
+
+210 850 moveto
+(nabs = ) show nabs line1 cvs show
+210 825 moveto
+(nxr = ) show nxr line1 cvs show
+210 800 moveto
+(nyr = ) show nyr line1 cvs show
+
+10 700 moveto
+(P1 = \( ) show x1 line1 cvs show ( , ) show y1 line1 cvs show ( \)) show
+10 675 moveto
+(P2 = \( ) show x2 line1 cvs show ( , ) show y2 line1 cvs show ( \)) show
+10 650 moveto
+(P3 = \( ) show x3 line1 cvs show ( , ) show y3 line1 cvs show ( \)) show
+
+310 700 moveto
+(P4 = \( ) show x4 line1 cvs show ( , ) show y4 line1 cvs show ( \)) show
+310 675 moveto
+(P5 = \( ) show x5 line1 cvs show ( , ) show y5 line1 cvs show ( \)) show
+310 650 moveto
+(P6 = \( ) show x6 line1 cvs show ( , ) show y6 line1 cvs show ( \)) show
+
+
+% define delta values
+/dxb xbr xb sub def
+/dyb ybr yb sub def
+/dxc xcr xc sub def
+/dyc ycr yc sub def
+
+
+2 setlinewidth
+
+% show shifted line
+x4 nxr add y4 nyr add moveto
+x5 nxr add y5 nyr add lineto
+x4 nxr sub y4 nyr sub moveto
+x5 nxr sub y5 nyr sub lineto
+stroke
+
+1 0 0 setrgbcolor
+0.5 setlinewidth
+
+% stroke right curve
+xar yar moveto
+xb dxb add yb dyb add xc dxc add yc dyc add xdr ydr curveto
+stroke
+% stroke left curve
+xal yal moveto
+xb dxb sub yb dyb sub xc dxc sub yc dyc sub xdl ydl curveto
+stroke
+
+%0.2 0.5 0.8 setrgbcolor
+%newpath bloc2x bloc2y 5.0 0 360 arc closepath fill
+%bloc2x 10 bdir2x mul sub bloc2y 10 bdir2y mul sub moveto
+%bloc2x 10 bdir2x mul add bloc2y 10 bdir2y mul add lineto stroke
+
+%0.5 0.5 0.5 setrgbcolor
+%newpath bloc1x bloc1y 5.0 0 360 arc closepath fill
+%bloc1x 10 bdir1x mul sub bloc1y 10 bdir1y mul sub moveto
+%bloc1x 10 bdir1x mul add bloc1y 10 bdir1y mul add lineto stroke
+
+0 0 1 setrgbcolor
+%1 setlinewidth
+%[5 5] 0 setdash
+0.1 setlinewidth
+[1 0] 0 setdash
+xa ya moveto xb yb lineto stroke
+xd yd moveto xc yc lineto stroke
+xar yar moveto xb dxb add yb dyb add lineto stroke
+xdr ydr moveto xc dxc add yc dyc add lineto stroke
+xal yal moveto xb dxb sub yb dyb sub lineto stroke
+xdl ydl moveto xc dxc sub yc dyc sub lineto stroke
+
+%xa diameter add ya moveto
+%xa diameter add yb diameter 2 div sub xc diameter 2 div add yc diameter sub xd yd diameter sub curveto
+%stroke
+
+%xa diameter sub ya moveto
+%xa diameter sub yb diameter 2 div add xc diameter 2 div sub yc diameter add xd yd diameter add curveto
+%stroke
+
+%/TimesItalic findfont 500 scalefont setfont
+%/Hershey-Gothic-English findfont 500 scalefont setfont
+%100 400 moveto
+%(a) true charpath stroke
+%0 0 0 setrgbcolor
+%0.5 setlinewidth
+%100 400 moveto
+%(a) true charpath stroke
+%(T) show
+
+showpage
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/.dependencies b/Build/source/libs/t1lib/t1lib-5.1.2/examples/.dependencies
new file mode 100644
index 00000000000..95607702a79
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/.dependencies
@@ -0,0 +1,2 @@
+subset.lo: subset.c ../lib/t1lib/t1lib.h
+t1example1.lo: t1example1.c
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/FontDataBase b/Build/source/libs/t1lib/t1lib-5.1.2/examples/FontDataBase
new file mode 100644
index 00000000000..1173e1ef7e2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/FontDataBase
@@ -0,0 +1,10 @@
+8
+bchr.afm
+bchri.afm
+bchb.afm
+bchbi.afm
+dcr10.afm
+dcti10.afm
+dcbx10.afm
+dcbxti10.afm
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/examples/Makefile.in
new file mode 100644
index 00000000000..b301db5d309
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/Makefile.in
@@ -0,0 +1,112 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 10/16/1998
+# Last modified: 2001-04-01
+#
+
+
+LIBTOOL = ../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+
+# targets to build
+
+INCDIR = -I../lib
+
+TARGET1 = t1example1
+TARGET2 = subset
+
+OBJS1 = \
+ t1example1.lo
+
+SRCS1 = \
+ t1example1.c
+
+OBJS2 = \
+ subset.lo
+
+SRCS2 = \
+ subset.c
+
+T1LIB = ../lib/libt1.la
+
+.SUFFIXES: .lo
+.c.lo:
+ $(LIBTOOL) --mode=compile \
+ $(CC) $(INCDIR) -c $(CPPFLAGS) $(CFLAGS) $<
+
+all: $(TARGET1) $(TARGET2)
+
+
+$(TARGET1): $(OBJS1) ../lib/t1lib.h
+ $(LIBTOOL) --mode=link \
+ $(CC) -o $(TARGET1) $(LDFLAGS) $(OBJS1) $(T1LIB) $(LDLIBS)
+
+$(TARGET2): $(OBJS2) ../lib/t1lib.h
+ $(LIBTOOL) --mode=link \
+ $(CC) -o $(TARGET2) $(LDFLAGS) $(OBJS2) $(T1LIB) $(LDLIBS)
+
+.c.o:
+ $(LIBTOOL) --mode=compile \
+ $(CC) $(INCDIR) -c $(CPPFLAGS) $(CFLAGS) $?
+
+.PHONY: clean
+
+dependencies: dummy
+ gcc -MM *.c | sed 's/\.o:/.lo:/g' > .dependencies
+
+clean: dummy
+ $(RM) $(TARGET1) $(TARGET2) *.o *.lo .libs/* *~ \#*\# *.log *.bak
+ -rmdir .libs
+
+install: dummy
+
+uninstall: dummy
+
+dummy:
+
+
+# Dependencies of object files
+include .dependencies
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/subset.c b/Build/source/libs/t1lib/t1lib-5.1.2/examples/subset.c
new file mode 100644
index 00000000000..a39c838a13e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/subset.c
@@ -0,0 +1,236 @@
+/*--------------------------------------------------------------------------
+ ----- File: subset.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2007-12-22
+ ----- Description: This file is part of t1lib. The program subset reads
+ a font file name and a string from the commandline
+ and creates a subset of the font which is sufficient
+ to display the string. It is an example of how to use
+ font subsetting.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+/* Note: We include t1lib.h from lib/t1lib. That way the objectfile does only
+ need to be rebuild when the header itself changes and not each time the
+ library has been recompiled */
+#include "../lib/t1lib/t1lib.h"
+
+
+void printusage( void);
+
+
+int main(int argc, char *argv[])
+{
+
+ int i, j, result;
+ int realargs=0;
+ int logfile=0;
+ char mask[256];
+ int flags=T1_SUBSET_DEFAULT;
+ char *subset=NULL;
+ unsigned long ofsize=0;
+ FILE *ofp=stdout;
+
+ char** encoding = 0;
+ char* encodingfile = 0;
+ int doreencode = 0;
+ int reresult = 0;
+
+
+ if (argc==1){
+ printusage();
+ return(0);
+ }
+
+ /* If we want to log anything, then log all */
+ T1_SetLogLevel(T1LOG_DEBUG);
+
+ realargs=argc-1;
+
+ for (j=1; j<argc; j++) {
+ if (argv[j][0]=='-') {
+ if (strcmp( argv[j], "-l")==0) {
+ realargs -=1;
+ logfile=1;
+ }
+ else if (strcmp( argv[j], "-a")==0) {
+ /* default case */
+ realargs -=1;
+ }
+ else if (strcmp( argv[j], "-b")==0) {
+ realargs -=1;
+ flags |=T1_SUBSET_ENCRYPT_BINARY;
+ }
+ else if (strcmp( argv[j], "-f")==0) {
+ realargs -=1;
+ flags |=T1_SUBSET_FORCE_REENCODE;
+ }
+ else if (strcmp( argv[j], "-s")==0) {
+ realargs -=1;
+ flags |=T1_SUBSET_SKIP_REENCODE;
+ }
+ else if (strcmp( argv[j], "-e")==0) {
+ --realargs;
+ if ( j == argc-1 ) {
+ fprintf(stderr, "subset: Option \"-e\": Missing filename argument.\n");
+ printusage();
+ return 1;
+ }
+ ++j;
+ encodingfile=argv[j];
+ doreencode=1;
+ --realargs;
+ }
+ else {
+ fprintf(stderr, "subset: Unknown option: %s\n", argv[j]);
+ printusage();
+ return( 1);
+ }
+ }
+ else {
+ i=j; /* this is assumed to be the first font file name */
+ break;
+ }
+ }
+
+
+ if (realargs<2) {
+ fprintf( stderr, "subset: Need at least one font file and one string\n");
+ printusage();
+ return( 1);
+ }
+
+
+ if (logfile!=0) {
+ if ((T1_InitLib( LOGFILE |
+ IGNORE_CONFIGFILE |
+ IGNORE_FONTDATABASE)==NULL)) {
+ fprintf(stderr, "subset: Initialization of t1lib failed (T1_errno=%d)\n",
+ T1_errno);
+ return(1);
+ }
+ }
+ else {
+ if ((T1_InitLib( NO_LOGFILE |
+ IGNORE_CONFIGFILE |
+ IGNORE_FONTDATABASE)==NULL)){
+ fprintf(stderr, "subset: Initialization of t1lib failed (T1_errno=%d)\n", T1_errno);
+ return(1);
+ }
+ }
+
+ /* Load encoding file if specified */
+ if ( doreencode != 0 ) {
+ if ( (encoding = T1_LoadEncoding( encodingfile)) == NULL ) {
+ fprintf( stderr, "subset: Could not load Encoding File %s (T1_errno=%d, %s).\n",
+ encodingfile, T1_errno, T1_StrError(T1_errno));
+ exit( 0);
+ }
+ }
+
+
+ /* First, build font data base */
+ for (i=j; i<argc-1; i++){
+ if ((result=T1_AddFont( argv[i]))<0)
+ fprintf( stderr, "subset: Could not load font file %s (T1_errno=%d)\n",
+ argv[i], T1_errno);
+ }
+ if (T1_GetNoFonts()<1){
+ fprintf( stderr, "subset: Nothing to do\n");
+ T1_CloseLib();
+ return( 2);
+ }
+
+ /* second, setup subsetting mask from commandline string */
+ for ( i=0; i<256; i++) {
+ mask[i]=0;
+ }
+ for (i=0; i<strlen(argv[argc-1]); i++) {
+ mask[(unsigned char)argv[argc-1][i]]=1;
+ }
+
+ /* third, load fonts, generate subset and write it stdout. */
+ for( i=0; i<T1_GetNoFonts(); i++){
+ fprintf( stderr, "Loading %s ... ", T1_GetFontFileName(i));
+ fflush(stdout);
+ if ((T1_LoadFont(i))){
+ fprintf(stderr, "failed\n");
+ continue;
+ }
+ else {
+ fprintf(stderr, "finished\n");
+ }
+
+ /* Reencode font */
+ if ( doreencode != 0 ) {
+ if ( (reresult = T1_ReencodeFont( i, encoding)) != 0 ) {
+ fprintf( stderr, "Warning Reencoding font %d failed (%d)!\n", i, reresult);
+ }
+ }
+
+ fprintf( stderr, "Processing ... ");
+ fflush(stderr);
+ if ((subset=T1_SubsetFont(i, mask, flags, 64, 16384, &ofsize))==NULL) {
+ fprintf(stderr, "failed (T1_errno: %d)\n", T1_errno);
+ }
+ else {
+ fwrite(subset, 1, ofsize, ofp);
+ fprintf(stderr, "finished, wrote %lu bytes\n", ofsize);
+ }
+ fprintf( stderr, "Removing font %d ... ", i);
+ fflush(stderr);
+ if ((T1_DeleteFont( i))){
+ fprintf(stderr, "failed\n");
+ }
+ else {
+ fprintf(stderr, "finished\n");
+ }
+ }
+
+ T1_CloseLib();
+ return( 0);
+}
+
+
+void printusage( void)
+{
+ fprintf(stdout, "Usage: subset [-l|-a|-b|-f|-s|-e <encfile>] <fontfile1> [<fontfile2> ...] string\n");
+ fprintf(stdout, "\n");
+ fprintf(stdout, "Subset source fontfile(s) according to `string' and write result\nto stdout (T1Lib-%s)!\n\n",
+ T1_GetLibIdent());
+ fprintf(stdout, "Options: -l Write a log-file t1lib.log.\n");
+ fprintf(stdout, " -a Create ASCII-encrypted file (default).\n");
+ fprintf(stdout, " -b Create Binary-enrypted file.\n");
+ fprintf(stdout, " -f Force reencoding of the font subset, even if\n");
+ fprintf(stdout, " the source font uses internal StandardEncoding.\n");
+ fprintf(stdout, " -s Skip reencoding of the font subset, even if the\n");
+ fprintf(stdout, " source font defines a font-specific encoding.\n");
+ fprintf(stdout, " -e <encodingfile> Load an encoding from specified file and reencode\n");
+ fprintf(stdout, " source font before starting to create the subset.\n");
+ fprintf(stdout, " This option also implies [-f].\n");
+
+ return;
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1example1.c b/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1example1.c
new file mode 100644
index 00000000000..66c44afa144
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1example1.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <t1lib.h> /* All needed declarations */
+
+#ifdef VMS
+# define LOCAL_CONFIG "t1libvms.config"
+#else
+# define LOCAL_CONFIG "./t1lib.config"
+#endif
+int main( void)
+{
+
+ GLYPH *glyph;
+ int i;
+ char * my_config = malloc(25);
+
+ sprintf(my_config, "T1LIB_CONFIG=%s",LOCAL_CONFIG);
+
+ /* Set our environment to an existent config file directory */
+ putenv( my_config);
+
+ /* Pad bitmaps to 16 bits, the default being 8 bits */
+ T1_SetBitmapPad( 16);
+
+ /* Initialize t1lib and return if error occurs. No logfile will be
+ generated */
+ if ((T1_InitLib(NO_LOGFILE)==NULL)){
+ fprintf(stderr, "Initialization of t1lib failed\n");
+ return(-1);
+ }
+
+ /* For every font in the database, generate a glyph for the string
+ "Test" at 25 bp. Use Kerning. Then dump an ASCII representation
+ of the glyph to stdout */
+ for( i=0; i<T1_GetNoFonts(); i++){
+ printf("FontID=%d, Font=%s\n", i, T1_GetFontFilePath(i));
+ printf("FontID=%d, Metrics=%s\n", i, T1_GetAfmFilePath(i));
+ glyph=T1_SetString( i, "Test", 0, 0, T1_KERNING, 25.0, NULL);
+ T1_DumpGlyph( glyph);
+ }
+
+ /* Close library and free all data */
+ T1_CloseLib();
+
+ return( 0);
+
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1lib.config b/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1lib.config
new file mode 100644
index 00000000000..af15422fa19
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/examples/t1lib.config
@@ -0,0 +1,6 @@
+This is a configuration file for t1lib
+
+FONTDATABASE=./FontDataBase
+ENCODING=../Fonts/enc:.
+AFM=../Fonts/afm:.
+TYPE1=../Fonts/type1:.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/lib/Makefile.in
new file mode 100644
index 00000000000..89e5e86f170
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/Makefile.in
@@ -0,0 +1,186 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 06/20/1997
+# Last modified: 2006-11-05
+#
+# Contributions by H.Kakugawa to use libtool!
+
+LIBTOOL = ../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS)
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+t1lib_version = @T1LIB_VERSION@
+t1lib_revision = @T1LIB_REVISION@
+t1lib_patchlevel = @T1LIB_PATCHLEVEL@
+T1_AA_TYPE16 = @T1_AA_TYPE16@
+T1_AA_TYPE32 = @T1_AA_TYPE32@
+T1_AA_TYPE64 = @T1_AA_TYPE64@
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS) $(T1_AA_TYPE16) $(T1_AA_TYPE32) $(T1_AA_TYPE64)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+
+
+# targets to build:
+
+MAIN_TARGET = @MAIN_TARGET@
+MAIN_HEADER = @MAIN_HEADER@
+
+TYPE1_OBJS = \
+ type1/arith.lo \
+ type1/curves.lo \
+ type1/fontfcn.lo \
+ type1/hints.lo \
+ type1/lines.lo \
+ type1/objects.lo \
+ type1/paths.lo \
+ type1/regions.lo \
+ type1/scanfont.lo \
+ type1/spaces.lo \
+ type1/t1io.lo \
+ type1/t1snap.lo \
+ type1/t1stub.lo \
+ type1/token.lo \
+ type1/type1.lo \
+ type1/util.lo
+
+
+T1LIB_OBJS = \
+ t1lib/t1finfo.lo \
+ t1lib/t1base.lo \
+ t1lib/t1delete.lo \
+ t1lib/t1enc.lo \
+ t1lib/t1env.lo \
+ t1lib/t1load.lo \
+ t1lib/t1set.lo \
+ t1lib/t1trans.lo \
+ t1lib/t1aaset.lo \
+ t1lib/t1afmtool.lo \
+ t1lib/t1outline.lo \
+ t1lib/t1subset.lo \
+ t1lib/parseAFM.lo
+
+
+T1LIBX_OBJS = @T1LIBX_OBJS@
+
+
+LIBSUBDIRS = \
+ type1 \
+ t1lib
+
+
+all: $(MAIN_TARGET)
+
+
+
+$(TYPE1_OBJS): type1_target
+$(T1LIB_OBJS) $(T1LIBX_OBJS): t1lib_target
+
+
+type1_target:
+ @set -e; (cd type1; $(SUBMAKE) ) || exit 1
+
+
+t1lib_target:
+ @set -e; (cd t1lib; $(SUBMAKE) ) || exit 1
+
+
+libt1.la: $(TYPE1_OBJS) $(T1LIB_OBJS)
+ $(LIBTOOL) --mode=link \
+ $(CC) $(LDFLAGS) -o $@ $(TYPE1_OBJS) $(T1LIB_OBJS) \
+ -version-info @T1LIB_LT_CURRENT@:@T1LIB_LT_REVISION@:@T1LIB_LT_AGE@ \
+ -lm -no-undefined -rpath $(libdir)
+ cp t1lib/t1lib.h .
+
+
+libt1x.la: $(T1LIBX_OBJS)
+ $(LIBTOOL) --mode=link \
+ $(CC) $(LDFLAGS) -o $@ $(T1LIBX_OBJS) \
+ -version-info @T1LIB_LT_CURRENT@:@T1LIB_LT_REVISION@:@T1LIB_LT_AGE@ \
+ libt1.la $(X_LIBS) $(XPM_LIB) $(XLIB) -no-undefined -rpath $(libdir)
+ cp t1lib/t1libx.h .
+
+
+.PHONY: clean
+
+
+dependencies: dummy
+ for i in $(LIBSUBDIRS); do \
+ (cd $$i; $(MAKE) dependencies) || exit 1; \
+ done
+
+
+clean: dummy
+ for i in $(LIBSUBDIRS); do \
+ (cd $$i; $(MAKE) clean) || exit 1; \
+ done
+ -$(RM) -f libt1*.la libt1*.a libt1*.so* *~ t1lib*.h .libs/*
+ -rmdir .libs
+
+
+install: dummy
+ $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
+ $(MKINSTALLDIRS) $(DESTDIR)$(includedir)
+ $(MKINSTALLDIRS) $(DESTDIR)@T1LIB_DATA_DIR@
+ $(LIBTOOL) --mode=install \
+ $(INSTALL_DATA) $(MAIN_TARGET) $(DESTDIR)$(libdir)
+ $(LIBTOOL) --mode=install \
+ $(INSTALL_DATA) $(MAIN_HEADER) $(DESTDIR)$(includedir)
+ if (test -f $(DESTDIR)@T1LIB_DATA_DIR@/t1lib.config) \
+ then \
+ echo "Alert: Global configuration file exists, installation skipped!"; \
+ else \
+ $(LIBTOOL) --mode=install $(INSTALL_DATA) t1lib.config $(DESTDIR)@T1LIB_DATA_DIR@; \
+ fi;
+
+
+uninstall: dummy
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/libt1.la
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/libt1x.la
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(includedir)/t1lib.h
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(includedir)/t1libx.h
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)@T1LIB_DATA_DIR@/t1lib.config
+
+
+dummy:
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib.config b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib.config
new file mode 100644
index 00000000000..5c587c45002
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib.config
@@ -0,0 +1,8 @@
+This is the global configuration file for t1lib.
+Note that it is not of any use if not setup by the system administrator.
+
+For information on how to set up these things see the t1lib-manual.
+
+ENCODING=.
+AFM=.
+TYPE1=.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/.dependencies b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/.dependencies
new file mode 100644
index 00000000000..5cdba86135f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/.dependencies
@@ -0,0 +1,80 @@
+parseAFM.lo: parseAFM.c parseAFM.h t1base.h t1misc.h
+t1aaset.lo: t1aaset.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1aaset.h \
+ t1set.h t1load.h t1finfo.h t1base.h t1outline.h
+t1afmtool.lo: t1afmtool.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h ../type1/blues.h t1types.h sysconf.h t1extern.h \
+ t1misc.h t1finfo.h t1base.h t1set.h t1load.h t1afmtool.h
+t1base.lo: t1base.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h sysconf.h t1base.h t1types.h t1global.h t1misc.h \
+ t1env.h t1delete.h
+t1delete.lo: t1delete.c ../type1/types.h parseAFM.h ../type1/objects.h \
+ ../type1/spaces.h ../type1/util.h ../type1/fontfcn.h t1types.h \
+ sysconf.h t1extern.h t1misc.h t1delete.h t1load.h t1finfo.h t1base.h
+t1enc.lo: t1enc.c ../type1/ffilest.h ../type1/types.h ../type1/Xstuff.h \
+ ../type1/fontmisc.h ../type1/fontstruct.h ../type1/font.h \
+ ../type1/fsmasks.h ../type1/fontfile.h ../type1/fontxlfd.h parseAFM.h \
+ ../type1/objects.h ../type1/spaces.h ../type1/util.h \
+ ../type1/fontfcn.h ../type1/paths.h ../type1/regions.h t1types.h \
+ sysconf.h t1extern.h t1misc.h t1enc.h t1env.h t1base.h t1finfo.h
+t1env.lo: t1env.c ../type1/types.h parseAFM.h ../type1/objects.h \
+ ../type1/spaces.h ../type1/util.h ../type1/fontfcn.h \
+ ../type1/fontmisc.h sysconf.h t1types.h t1extern.h t1misc.h t1env.h \
+ t1base.h
+t1finfo.lo: t1finfo.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1finfo.h \
+ t1base.h t1set.h t1load.h
+t1load.lo: t1load.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/blues.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1load.h \
+ t1env.h t1set.h t1base.h t1finfo.h t1afmtool.h
+t1outline.lo: t1outline.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1set.h \
+ t1load.h t1finfo.h t1base.h t1outline.h
+t1set.lo: t1set.c ../type1/ffilest.h ../type1/types.h ../type1/Xstuff.h \
+ ../type1/fontmisc.h ../type1/fontstruct.h ../type1/font.h \
+ ../type1/fsmasks.h ../type1/fontfile.h ../type1/fontxlfd.h parseAFM.h \
+ ../type1/objects.h ../type1/spaces.h ../type1/util.h \
+ ../type1/fontfcn.h ../type1/paths.h ../type1/regions.h t1types.h \
+ sysconf.h t1extern.h t1misc.h t1set.h t1load.h t1finfo.h t1base.h
+t1subset.lo: t1subset.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1finfo.h \
+ t1base.h t1delete.h t1subset.h
+t1trans.lo: t1trans.c ../type1/ffilest.h ../type1/types.h \
+ ../type1/Xstuff.h ../type1/fontmisc.h ../type1/fontstruct.h \
+ ../type1/font.h ../type1/fsmasks.h ../type1/fontfile.h \
+ ../type1/fontxlfd.h parseAFM.h ../type1/objects.h ../type1/spaces.h \
+ ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1trans.h \
+ t1base.h
+t1x11.lo: t1x11.c ../type1/types.h parseAFM.h ../type1/objects.h \
+ ../type1/spaces.h ../type1/util.h ../type1/fontfcn.h ../type1/paths.h \
+ ../type1/regions.h t1types.h sysconf.h t1extern.h t1misc.h t1set.h \
+ t1aaset.h t1load.h t1finfo.h t1x11.h t1base.h
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/Makefile.in
new file mode 100644
index 00000000000..a6c24785b06
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/Makefile.in
@@ -0,0 +1,106 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 06/20/1997
+# Last modified: 2001-04-01
+#
+# Modified by H.Kakugawa to use libtool
+
+LIBTOOL = ../../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS)
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+T1_AA_TYPE16 = @T1_AA_TYPE16@
+T1_AA_TYPE32 = @T1_AA_TYPE32@
+T1_AA_TYPE64 = @T1_AA_TYPE64@
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS) $(T1_AA_TYPE16) $(T1_AA_TYPE32) $(T1_AA_TYPE64)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+
+
+OBJS = \
+ t1finfo.lo \
+ t1base.lo \
+ t1delete.lo \
+ t1enc.lo \
+ t1env.lo \
+ t1load.lo \
+ t1set.lo \
+ t1trans.lo \
+ t1aaset.lo \
+ t1afmtool.lo \
+ t1outline.lo \
+ t1subset.lo \
+ parseAFM.lo
+
+XOBJS = @XOBJS@
+
+.SUFFIXES: .c .o .lo
+.c.lo:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+.c.o:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+all: $(OBJS) $(XOBJS)
+
+.PHONY: clean
+
+dependencies: dummy
+ gcc -MM *.c | sed 's/\.o:/.lo:/g' > .dependencies
+
+clean: dummy
+ -$(RM) *.lo *.o .libs/*
+ -$(RM) *~ *.bak \#*\#
+ -rmdir .libs
+
+
+install: dummy
+
+
+dummy:
+
+
+# Dependencies of object files
+include .dependencies
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.c
new file mode 100644
index 00000000000..6a31d7f3443
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.c
@@ -0,0 +1,1302 @@
+/*--------------------------------------------------------------------------
+ ----- File: parseAFM.c
+ ----- Author: Adobe Systems Inc., modifications by
+ Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-10-26
+ ----- Description: This file is part of the t1-library. It is the original
+ parseAFM.h modified at a few points, especially for
+ reading MSDOS-style AFM files.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+/*
+ * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved.
+ *
+ * This file may be freely copied and redistributed as long as:
+ * 1) This entire notice continues to be included in the file,
+ * 2) If the file has been modified in any way, a notice of such
+ * modification is conspicuously indicated.
+ *
+ * PostScript, Display PostScript, and Adobe are registered trademarks of
+ * Adobe Systems Incorporated.
+ *
+ * ************************************************************************
+ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+ * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+ * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
+ * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
+ * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
+ * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * ************************************************************************
+ */
+
+/* parseAFM.c
+ *
+ * This file is used in conjuction with the parseAFM.h header file.
+ * This file contains several procedures that are used to parse AFM
+ * files. It is intended to work with an application program that needs
+ * font metric information. The program can be used as is by making a
+ * procedure call to "parseFile" (passing in the expected parameters)
+ * and having it fill in a data structure with the data from the
+ * AFM file, or an application developer may wish to customize this
+ * code.
+ *
+ * There is also a file, parseAFMclient.c, that is a sample application
+ * showing how to call the "parseFile" procedure and how to use the data
+ * after "parseFile" has returned.
+ *
+ * Please read the comments in parseAFM.h and parseAFMclient.c.
+ *
+ * History:
+ * original: DSM Thu Oct 20 17:39:59 PDT 1988
+ * modified: DSM Mon Jul 3 14:17:50 PDT 1989
+ * - added 'storageProblem' return code
+ * - fixed bug of not allocating extra byte for string duplication
+ * - fixed typos
+ * modified: DSM Tue Apr 3 11:18:34 PDT 1990
+ * - added free(ident) at end of parseFile routine
+ * modified: DSM Tue Jun 19 10:16:29 PDT 1990
+ * - changed (width == 250) to (width = 250) in initializeArray
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h> /* this seems to be necessary on some SCO-systems */
+#if !defined(_MSC_VER)
+# include <sys/file.h>
+#endif
+#include <math.h>
+#include <string.h>
+#include "parseAFM.h"
+#include "t1base.h"
+#include "t1misc.h"
+
+
+#define lineterm EOL /* line terminating character */
+#define normalEOF 1 /* return code from parsing routines used only */
+ /* in this module */
+#define Space "space" /* used in string comparison to look for the width */
+ /* of the space character to init the widths array */
+#define False "false" /* used in string comparison to check the value of */
+ /* boolean keys (e.g. IsFixedPitch) */
+
+#define MATCH(A,B) (strncmp((A),(B), MAX_NAME) == 0)
+
+
+
+/* Note: The functions token and linetoken are extended to be able
+ to parse AFM files with DOS-style line-ends under UNIX. I don't know
+ why AFM files which according to Adobe are explicitly intended to
+ be used under UNIX have MSDOS-style line ends.
+
+ However, we parse the tokens based on the following atoms. This should
+ work on any system.
+*/
+#define CR '\r' /* a carriage return */
+#define LF '\n' /* a linefeed, which is a newline under UNIX */
+#define CTRL_Z 0x1A /* some AFM files have this characters as an end
+ of file indicator. Who know why :) ? */
+
+
+/*************************** GLOBALS ***********************/
+
+static char *ident = NULL; /* storage buffer for keywords */
+
+
+/* "shorts" for fast case statement
+ * The values of each of these enumerated items correspond to an entry in the
+ * table of strings defined below. Therefore, if you add a new string as
+ * new keyword into the keyStrings table, you must also add a corresponding
+ * parseKey AND it MUST be in the same position!
+ *
+ * IMPORTANT: since the sorting algorithm is a binary search, the strings of
+ * keywords must be placed in lexicographical order, below. [Therefore, the
+ * enumerated items are not necessarily in lexicographical order, depending
+ * on the name chosen. BUT, they must be placed in the same position as the
+ * corresponding key string.] The NOPE shall remain in the last position,
+ * since it does not correspond to any key string, and it is used in the
+ * "recognize" procedure to calculate how many possible keys there are.
+ */
+
+typedef enum {
+ ASCENDER, CHARBBOX, CODE, COMPCHAR, CAPHEIGHT, CHARACTERSET, COMMENT,
+ DESCENDER, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES,
+ ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN,
+ FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISFIXEDPITCH,
+ ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, CHARNAME,
+ NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES,
+ STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS,
+ STARTTRACKKERN, STDHW, STDVW, TRACKKERN, UNDERLINEPOSITION,
+ UNDERLINETHICKNESS, VERSION, XYWIDTH, XWIDTH, WEIGHT, XHEIGHT,
+ NOPE} PARSEKEY;
+
+
+/* keywords for the system:
+ * This a table of all of the current strings that are vaild AFM keys.
+ * Each entry can be referenced by the appropriate parseKey value (an
+ * enumerated data type defined above). If you add a new keyword here,
+ * a corresponding parseKey MUST be added to the enumerated data type
+ * defined above, AND it MUST be added in the same position as the
+ * string is in this table.
+ *
+ * IMPORTANT: since the sorting algorithm is a binary search, the keywords
+ * must be placed in lexicographical order. And, NULL should remain at the
+ * end.
+ */
+
+static char *keyStrings[] = {
+ "Ascender", "B", "C", "CC", "CapHeight", "CharacterSet", "Comment",
+ "Descender", "EncodingScheme", "EndCharMetrics", "EndComposites",
+ "EndFontMetrics", "EndKernData", "EndKernPairs", "EndTrackKern",
+ "FamilyName", "FontBBox", "FontName", "FullName", "IsFixedPitch",
+ "ItalicAngle", "KP", "KPX", "L", "N",
+ "Notice", "PCC", "StartCharMetrics", "StartComposites",
+ "StartFontMetrics", "StartKernData", "StartKernPairs",
+ "StartTrackKern", "StdHW", "StdVW", "TrackKern", "UnderlinePosition",
+ "UnderlineThickness", "Version", "W", "WX", "Weight", "XHeight",
+ NULL };
+
+
+/*************************** PARSING ROUTINES **************/
+
+/*************************** token *************************/
+
+/* A "AFM File Conventions" tokenizer. That means that it will
+ * return the next token delimited by white space. See also
+ * the `linetoken' routine, which does a similar thing but
+ * reads all tokens until the next end-of-line.
+ */
+static char *token(stream)
+ FILE *stream;
+{
+ int ch, idx;
+
+ /* skip over white space, instead of the systems EOL-character we check
+ explicitly for CR and LF as well as for ^Z. */
+ while ((ch = fgetc(stream)) == ' ' || ch == CR || ch == LF || ch == CTRL_Z ||
+ ch == ',' || ch == '\t' || ch == ';');
+
+ idx = 0;
+
+ while (ch != EOF && ch != ' ' && ch != CR && ch != LF &&
+ ch != CTRL_Z && ch != '\t' && ch != ':' && ch != ';'){
+ ident[idx++] = ch;
+ ch = fgetc(stream);
+ } /* while */
+
+ if (ch == EOF && idx < 1) {
+ return ((char *)NULL);
+ }
+ if (idx >= 1 && ch != ':' ) {
+ ungetc(ch, stream);
+ }
+ if (idx < 1 ) {
+ ident[idx++] = ch; /* single-character token */
+ }
+ ident[idx] = 0;
+
+ return(ident); /* returns pointer to the token */
+
+} /* token */
+
+
+/*************************** linetoken *************************/
+
+/* "linetoken" will get read all tokens until the EOL character from
+ * the given stream. This is used to get any arguments that can be
+ * more than one word (like Comment lines and FullName).
+ */
+
+static char *linetoken(stream)
+ FILE *stream;
+{
+ int ch, idx;
+
+ while ((ch = fgetc(stream)) == ' ' || ch == '\t' );
+
+ idx = 0;
+ while (ch != EOF && ch != CR && ch != LF && ch != CTRL_Z)
+ {
+ ident[idx++] = ch;
+ ch = fgetc(stream);
+ } /* while */
+
+ ungetc(ch, stream);
+ ident[idx] = 0;
+
+ return(ident); /* returns pointer to the token */
+
+} /* linetoken */
+
+
+/*************************** recognize *************************/
+
+/* This function tries to match a string to a known list of
+ * valid AFM entries (check the keyStrings array above).
+ * "ident" contains everything from white space through the
+ * next space, tab, or ":" character.
+ *
+ * The algorithm is a standard Knuth binary search.
+ */
+
+static PARSEKEY recognize(ident)
+ register char *ident;
+{
+ int lower = 0, upper = (int) NOPE, midpoint=NOPE, cmpvalue;
+ BOOL found = T1LIB_FALSE;
+
+ while ((upper >= lower) && !found)
+ {
+ midpoint = (lower + upper)/2;
+ if (keyStrings[midpoint] == NULL) break;
+ cmpvalue = strncmp(ident, keyStrings[midpoint], MAX_NAME);
+ if (cmpvalue == 0) found = T1LIB_TRUE;
+ else if (cmpvalue < 0) upper = midpoint - 1;
+ else lower = midpoint + 1;
+ } /* while */
+
+ if (found) return (PARSEKEY) midpoint;
+ else return NOPE;
+
+} /* recognize */
+
+
+/************************* parseGlobals *****************************/
+
+/* This function is called by "parseFile". It will parse the AFM File
+ * up to the "StartCharMetrics" keyword, which essentially marks the
+ * end of the Global Font Information and the beginning of the character
+ * metrics information.
+ *
+ * If the caller of "parseFile" specified that it wanted the Global
+ * Font Information (as defined by the "AFM File Specification"
+ * document), then that information will be stored in the returned
+ * data structure.
+ *
+ * Any Global Font Information entries that are not found in a
+ * given file, will have the usual default initialization value
+ * for its type (i.e. entries of type int will be 0, etc).
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static BOOL parseGlobals(fp, gfi)
+ FILE *fp;
+ register GlobalFontInfo *gfi;
+{
+ BOOL cont = T1LIB_TRUE, save = (gfi != NULL);
+ int error = ok;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+
+ if (keyword == NULL)
+ /* Have reached an early and unexpected EOF. */
+ /* Set flag and stop parsing */
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ if (!save)
+ /* get tokens until the end of the Global Font info section */
+ /* without saving any of the data */
+ switch (recognize(keyword))
+ {
+ case STARTCHARMETRICS:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ default:
+ break;
+ } /* switch */
+ else
+ /* otherwise parse entire global font info section, */
+ /* saving the data */
+ switch(recognize(keyword))
+ {
+ case STARTFONTMETRICS:
+ keyword = token(fp);
+ gfi->afmVersion = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->afmVersion, keyword);
+ break;
+ case COMMENT:
+ /* We ignore the following keywords. They are only listed
+ here in order to prevent from "Unknown Keyword" errors. */
+ case CHARACTERSET:
+ case STDHW:
+ case STDVW:
+ keyword = linetoken(fp);
+ break;
+ case FONTNAME:
+ keyword = linetoken(fp);
+ gfi->fontName = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->fontName, keyword);
+ break;
+ case ENCODINGSCHEME:
+ keyword = linetoken(fp);
+ gfi->encodingScheme = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(gfi->encodingScheme, keyword);
+ break;
+ case FULLNAME:
+ keyword = linetoken(fp);
+ gfi->fullName = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->fullName, keyword);
+ break;
+ case FAMILYNAME:
+ keyword = linetoken(fp);
+ gfi->familyName = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->familyName, keyword);
+ break;
+ case WEIGHT:
+ keyword = linetoken(fp);
+ gfi->weight = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->weight, keyword);
+ break;
+ case ITALICANGLE:
+ keyword = token(fp);
+ gfi->italicAngle = atof(keyword);
+ if (errno == ERANGE) error = parseError;
+ break;
+ case ISFIXEDPITCH:
+ keyword = token(fp);
+ if (MATCH(keyword, False))
+ gfi->isFixedPitch = 0;
+ else
+ gfi->isFixedPitch = 1;
+ break;
+ case UNDERLINEPOSITION:
+ keyword = token(fp);
+ gfi->underlinePosition = atoi(keyword);
+ break;
+ case UNDERLINETHICKNESS:
+ keyword = token(fp);
+ gfi->underlineThickness = atoi(keyword);
+ break;
+ case VERSION:
+ keyword = linetoken(fp);
+ gfi->version = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->version, keyword);
+ break;
+ case NOTICE:
+ keyword = linetoken(fp);
+ gfi->notice = (char *) malloc(strlen(keyword) + 1);
+ strcpy(gfi->notice, keyword);
+ break;
+ case FONTBBOX:
+ keyword = token(fp);
+ gfi->fontBBox.llx = atoi(keyword);
+ keyword = token(fp);
+ gfi->fontBBox.lly = atoi(keyword);
+ keyword = token(fp);
+ gfi->fontBBox.urx = atoi(keyword);
+ keyword = token(fp);
+ gfi->fontBBox.ury = atoi(keyword);
+ break;
+ case CAPHEIGHT:
+ keyword = token(fp);
+ gfi->capHeight = atoi(keyword);
+ break;
+ case XHEIGHT:
+ keyword = token(fp);
+ gfi->xHeight = atoi(keyword);
+ break;
+ case DESCENDER:
+ keyword = token(fp);
+ gfi->descender = atoi(keyword);
+ break;
+ case ASCENDER:
+ keyword = token(fp);
+ gfi->ascender = atoi(keyword);
+ break;
+ case STARTCHARMETRICS:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ T1_PrintLog( "parseGlobals()", "Unknown Keyword: %s", T1LOG_WARNING, keyword);
+ break;
+ } /* switch */
+ } /* while */
+
+ return(error);
+
+} /* parseGlobals */
+
+
+
+/************************* initializeArray ************************/
+
+/* Unmapped character codes are (at Adobe Systems) assigned the
+ * width of the space character (if one exists) else they get the
+ * value of 250 ems. This function initializes all entries in the
+ * char widths array to have this value. Then any mapped character
+ * codes will be replaced with the width of the appropriate character
+ * when parsing the character metric section.
+
+ * This function parses the Character Metrics Section looking
+ * for a space character (by comparing character names). If found,
+ * the width of the space character will be used to initialize the
+ * values in the array of character widths.
+ *
+ * Before returning, the position of the read/write pointer of the
+ * file is reset to be where it was upon entering this function.
+ */
+
+/* We comment out the following function since it is not needed in t1lib
+ and we don't want compiler warnings */
+/*
+static int initializeArray(fp, cwi)
+ FILE *fp;
+ register int *cwi;
+{
+ BOOL cont = T1LIB_TRUE, found = T1LIB_FALSE;
+ long opos = ftell(fp);
+ int code = 0, width = 0, i = 0, error = 0;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+ if (keyword == NULL)
+ {
+ error = earlyEOF;
+ break;
+ }
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case CODE:
+ code = atoi(token(fp));
+ break;
+ case XWIDTH:
+ width = atoi(token(fp));
+ break;
+ case CHARNAME:
+ keyword = token(fp);
+ if (MATCH(keyword, Space))
+ {
+ cont = T1LIB_FALSE;
+ found = T1LIB_TRUE;
+ }
+ break;
+ case ENDCHARMETRICS:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ }
+ }
+
+ if (!found)
+ width = 250;
+
+ for (i = 0; i < 256; ++i)
+ cwi[i] = width;
+
+ fseek(fp, opos, 0);
+
+ return(error);
+
+}
+*/
+
+/************************* parseCharWidths **************************/
+
+/* This function is called by "parseFile". It will parse the AFM File
+ * up to the "EndCharMetrics" keyword. It will save the character
+ * width info (as opposed to all of the character metric information)
+ * if requested by the caller of parseFile. Otherwise, it will just
+ * parse through the section without saving any information.
+ *
+ * If data is to be saved, parseCharWidths is passed in a pointer
+ * to an array of widths that has already been initialized by the
+ * standard value for unmapped character codes. This function parses
+ * the Character Metrics section only storing the width information
+ * for the encoded characters into the array using the character code
+ * as the index into that array.
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static int parseCharWidths(fp, cwi)
+ FILE *fp;
+ register int *cwi;
+{
+ BOOL cont = T1LIB_TRUE, save = (cwi != NULL);
+ int pos = 0, error = ok;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+ /* Have reached an early and unexpected EOF. */
+ /* Set flag and stop parsing */
+ if (keyword == NULL)
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ if (!save)
+ /* get tokens until the end of the Char Metrics section without */
+ /* saving any of the data*/
+ switch (recognize(keyword))
+ {
+ case ENDCHARMETRICS:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ default:
+ break;
+ } /* switch */
+ else
+ /* otherwise parse entire char metrics section, saving */
+ /* only the char x-width info */
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case CODE:
+ keyword = token(fp);
+ pos = atoi(keyword);
+ break;
+ case XYWIDTH:
+ /* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */
+ keyword = token(fp); keyword = token(fp); /* eat values */
+ error = parseError;
+ break;
+ case XWIDTH:
+ keyword = token(fp);
+ if (pos >= 0) /* ignore unmapped chars */
+ cwi[pos] = atoi(keyword);
+ break;
+ case ENDCHARMETRICS:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case CHARNAME: /* eat values (so doesn't cause parseError) */
+ keyword = token(fp);
+ break;
+ case CHARBBOX:
+ keyword = token(fp); keyword = token(fp);
+ keyword = token(fp); keyword = token(fp);
+ break;
+ case LIGATURE:
+ keyword = token(fp); keyword = token(fp);
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ } /* switch */
+ } /* while */
+
+ return(error);
+
+} /* parseCharWidths */
+
+
+/************************* parseCharMetrics ************************/
+
+/* This function is called by parseFile if the caller of parseFile
+ * requested that all character metric information be saved
+ * (as opposed to only the character width information).
+ *
+ * parseCharMetrics is passed in a pointer to an array of records
+ * to hold information on a per character basis. This function
+ * parses the Character Metrics section storing all character
+ * metric information for the ALL characters (mapped and unmapped)
+ * into the array.
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static int parseCharMetrics(fp, fi)
+ FILE *fp;
+ register FontInfo *fi;
+{
+ BOOL cont = T1LIB_TRUE, firstTime = T1LIB_TRUE;
+ int error = ok, count = 0;
+ register CharMetricInfo *temp = fi->cmi;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+ if (keyword == NULL)
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case CODE:
+ if (count < fi->numOfChars)
+ {
+ if (firstTime) firstTime = T1LIB_FALSE;
+ else temp++;
+ temp->code = atoi(token(fp));
+ count++;
+ }
+ else
+ {
+ error = parseError;
+ cont = T1LIB_FALSE;
+ }
+ break;
+ case XYWIDTH:
+ temp->wx = atoi(token(fp));
+ temp->wy = atoi(token(fp));
+ break;
+ case XWIDTH:
+ temp->wx = atoi(token(fp));
+ break;
+ case CHARNAME:
+ keyword = token(fp);
+ temp->name = (char *) malloc(strlen(keyword) + 1);
+ strcpy(temp->name, keyword);
+ break;
+ case CHARBBOX:
+ temp->charBBox.llx = atoi(token(fp));
+ temp->charBBox.lly = atoi(token(fp));
+ temp->charBBox.urx = atoi(token(fp));
+ temp->charBBox.ury = atoi(token(fp));
+ break;
+ case LIGATURE: {
+ Ligature **tail = &(temp->ligs);
+ Ligature *node = *tail;
+
+ if (*tail != NULL)
+ {
+ while (node->next != NULL)
+ node = node->next;
+ tail = &(node->next);
+ }
+
+ *tail = (Ligature *) calloc(1, sizeof(Ligature));
+ keyword = token(fp);
+ (*tail)->succ = (char *) malloc(strlen(keyword) + 1);
+ strcpy((*tail)->succ, keyword);
+ keyword = token(fp);
+ (*tail)->lig = (char *) malloc(strlen(keyword) + 1);
+ strcpy((*tail)->lig, keyword);
+ break; }
+ case ENDCHARMETRICS:
+ cont = T1LIB_FALSE;;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ } /* switch */
+ } /* while */
+
+ if ((error == ok) && (count != fi->numOfChars))
+ error = parseError;
+
+ return(error);
+
+} /* parseCharMetrics */
+
+
+
+/************************* parseTrackKernData ***********************/
+
+/* This function is called by "parseFile". It will parse the AFM File
+ * up to the "EndTrackKern" or "EndKernData" keywords. It will save the
+ * track kerning data if requested by the caller of parseFile.
+ *
+ * parseTrackKernData is passed in a pointer to the FontInfo record.
+ * If data is to be saved, the FontInfo record will already contain
+ * a valid pointer to storage for the track kerning data.
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static int parseTrackKernData(fp, fi)
+ FILE *fp;
+ register FontInfo *fi;
+{
+ BOOL cont = T1LIB_TRUE, save = (fi->tkd != NULL);
+ int pos = 0, error = ok, tcount = 0;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+
+ if (keyword == NULL)
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ if (!save)
+ /* get tokens until the end of the Track Kerning Data */
+ /* section without saving any of the data */
+ switch(recognize(keyword))
+ {
+ case ENDTRACKKERN:
+ case ENDKERNDATA:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ default:
+ break;
+ } /* switch */
+ else
+ /* otherwise parse entire Track Kerning Data section, */
+ /* saving the data */
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case TRACKKERN:
+ if (tcount < fi->numOfTracks)
+ {
+ keyword = token(fp);
+ fi->tkd[pos].degree = atoi(keyword);
+ keyword = token(fp);
+ fi->tkd[pos].minPtSize = atof(keyword);
+ if (errno == ERANGE) error = parseError;
+ keyword = token(fp);
+ fi->tkd[pos].minKernAmt = atof(keyword);
+ if (errno == ERANGE) error = parseError;
+ keyword = token(fp);
+ fi->tkd[pos].maxPtSize = atof(keyword);
+ if (errno == ERANGE) error = parseError;
+ keyword = token(fp);
+ fi->tkd[pos++].maxKernAmt = atof(keyword);
+ if (errno == ERANGE) error = parseError;
+ tcount++;
+ }
+ else
+ {
+ error = parseError;
+ cont = T1LIB_FALSE;
+ }
+ break;
+ case ENDTRACKKERN:
+ case ENDKERNDATA:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ } /* switch */
+ } /* while */
+
+ if (error == ok && tcount != fi->numOfTracks)
+ error = parseError;
+
+ return(error);
+
+} /* parseTrackKernData */
+
+
+/************************* parsePairKernData ************************/
+
+/* This function is called by "parseFile". It will parse the AFM File
+ * up to the "EndKernPairs" or "EndKernData" keywords. It will save
+ * the pair kerning data if requested by the caller of parseFile.
+ *
+ * parsePairKernData is passed in a pointer to the FontInfo record.
+ * If data is to be saved, the FontInfo record will already contain
+ * a valid pointer to storage for the pair kerning data.
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static int parsePairKernData(fp, fi)
+ FILE *fp;
+ register FontInfo *fi;
+{
+ BOOL cont = T1LIB_TRUE, save = (fi->pkd != NULL);
+ int pos = 0, error = ok, pcount = 0;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+
+ if (keyword == NULL)
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ if (!save)
+ /* get tokens until the end of the Pair Kerning Data */
+ /* section without saving any of the data */
+ switch(recognize(keyword))
+ {
+ case ENDKERNPAIRS:
+ case ENDKERNDATA:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ default:
+ break;
+ } /* switch */
+ else
+ /* otherwise parse entire Pair Kerning Data section, */
+ /* saving the data */
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case KERNPAIR:
+ if (pcount < fi->numOfPairs)
+ {
+ keyword = token(fp);
+ fi->pkd[pos].name1 = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->pkd[pos].name1, keyword);
+ keyword = token(fp);
+ fi->pkd[pos].name2 = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->pkd[pos].name2, keyword);
+ keyword = token(fp);
+ fi->pkd[pos].xamt = atoi(keyword);
+ keyword = token(fp);
+ fi->pkd[pos++].yamt = atoi(keyword);
+ pcount++;
+ }
+ else
+ {
+ error = parseError;
+ cont = T1LIB_FALSE;
+ }
+ break;
+ case KERNPAIRXAMT:
+ if (pcount < fi->numOfPairs)
+ {
+ keyword = token(fp);
+ fi->pkd[pos].name1 = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->pkd[pos].name1, keyword);
+ keyword = token(fp);
+ fi->pkd[pos].name2 = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->pkd[pos].name2, keyword);
+ keyword = token(fp);
+ fi->pkd[pos++].xamt = atoi(keyword);
+ pcount++;
+ }
+ else
+ {
+ error = parseError;
+ cont = T1LIB_FALSE;
+ }
+ break;
+ case ENDKERNPAIRS:
+ case ENDKERNDATA:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ } /* switch */
+ } /* while */
+
+ if (error == ok && pcount != fi->numOfPairs)
+ error = parseError;
+
+ return(error);
+
+} /* parsePairKernData */
+
+
+/************************* parseCompCharData **************************/
+
+/* This function is called by "parseFile". It will parse the AFM File
+ * up to the "EndComposites" keyword. It will save the composite
+ * character data if requested by the caller of parseFile.
+ *
+ * parseCompCharData is passed in a pointer to the FontInfo record, and
+ * a boolean representing if the data should be saved.
+ *
+ * This function will create the appropriate amount of storage for
+ * the composite character data and store a pointer to the storage
+ * in the FontInfo record.
+ *
+ * This function returns an error code specifying whether there was
+ * a premature EOF or a parsing error. This return value is used by
+ * parseFile to determine if there is more file to parse.
+ */
+
+static int parseCompCharData(fp, fi)
+ FILE *fp;
+ register FontInfo *fi;
+{
+ BOOL cont = T1LIB_TRUE, firstTime = T1LIB_TRUE, save = (fi->ccd != NULL);
+ int pos = 0, j = 0, error = ok, ccount = 0, pcount = 0;
+ register char *keyword;
+
+ while (cont)
+ {
+ keyword = token(fp);
+ if (keyword == NULL)
+ /* Have reached an early and unexpected EOF. */
+ /* Set flag and stop parsing */
+ {
+ error = earlyEOF;
+ break; /* get out of loop */
+ }
+ if (ccount > fi->numOfComps)
+ {
+ error = parseError;
+ break; /* get out of loop */
+ }
+ if (!save)
+ /* get tokens until the end of the Composite Character info */
+ /* section without saving any of the data */
+ switch(recognize(keyword))
+ {
+ case ENDCOMPOSITES:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ default:
+ break;
+ } /* switch */
+ else
+ /* otherwise parse entire Composite Character info section, */
+ /* saving the data */
+ switch(recognize(keyword))
+ {
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case COMPCHAR:
+ if (ccount < fi->numOfComps)
+ {
+ keyword = token(fp);
+ if (pcount != fi->ccd[pos].numOfPieces)
+ error = parseError;
+ pcount = 0;
+ if (firstTime) firstTime = T1LIB_FALSE;
+ else pos++;
+ fi->ccd[pos].ccName = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->ccd[pos].ccName, keyword);
+ keyword = token(fp);
+ fi->ccd[pos].numOfPieces = atoi(keyword);
+ fi->ccd[pos].pieces = (Pcc *)
+ calloc(fi->ccd[pos].numOfPieces, sizeof(Pcc));
+ j = 0;
+ ccount++;
+ }
+ else
+ {
+ error = parseError;
+ cont = T1LIB_FALSE;
+ }
+ break;
+ case COMPCHARPIECE:
+ if (pcount < fi->ccd[pos].numOfPieces)
+ {
+ keyword = token(fp);
+ fi->ccd[pos].pieces[j].pccName = (char *)
+ malloc(strlen(keyword) + 1);
+ strcpy(fi->ccd[pos].pieces[j].pccName, keyword);
+ keyword = token(fp);
+ fi->ccd[pos].pieces[j].deltax = atoi(keyword);
+ keyword = token(fp);
+ fi->ccd[pos].pieces[j++].deltay = atoi(keyword);
+ pcount++;
+ }
+ else
+ error = parseError;
+ break;
+ case ENDCOMPOSITES:
+ cont = T1LIB_FALSE;
+ break;
+ case ENDFONTMETRICS:
+ cont = T1LIB_FALSE;
+ error = normalEOF;
+ break;
+ case NOPE:
+ default:
+ error = parseError;
+ break;
+ } /* switch */
+ } /* while */
+
+ if (error == ok && ccount != fi->numOfComps)
+ error = parseError;
+
+ return(error);
+
+} /* parseCompCharData */
+
+
+
+
+/*************************** 'PUBLIC' FUNCTION ********************/
+
+
+/*************************** parseFile *****************************/
+
+/* parseFile is the only 'public' procedure available. It is called
+ * from an application wishing to get information from an AFM file.
+ * The caller of this function is responsible for locating and opening
+ * an AFM file and handling all errors associated with that task.
+ *
+ * parseFile expects 3 parameters: a vaild file pointer, a pointer
+ * to a (FontInfo *) variable (for which storage will be allocated and
+ * the data requested filled in), and a mask specifying which
+ * data from the AFM File should be saved in the FontInfo structure.
+ *
+ * The file will be parsed and the requested data will be stored in
+ * a record of type FontInfo (refer to ParseAFM.h).
+ *
+ * parseFile returns an error code as defined in parseAFM.h.
+ *
+ * The position of the read/write pointer associated with the file
+ * pointer upon return of this function is undefined.
+ */
+
+/* Note: function renamed to T1lib_parseFile in order to avoid name clushes
+ with other libraries that also use the Adobe parseAFM-package (RMz) */
+int T1lib_parseFile (fp, fi, flags)
+ FILE *fp;
+ FontInfo **fi;
+ FLAGS flags;
+{
+
+ int code = ok; /* return code from each of the parsing routines */
+ int error = ok; /* used as the return code from this function */
+
+ register char *keyword; /* used to store a token */
+
+
+ /* storage data for the global variable ident */
+ ident = (char *) calloc(MAX_NAME, sizeof(char));
+ if (ident == NULL) {error = storageProblem; return(error);}
+
+ (*fi) = (FontInfo *) calloc(1, sizeof(FontInfo));
+ if ((*fi) == NULL) {error = storageProblem; return(error);}
+
+ if (flags & P_G)
+ {
+ (*fi)->gfi = (GlobalFontInfo *) calloc(1, sizeof(GlobalFontInfo));
+ if ((*fi)->gfi == NULL) {error = storageProblem; return(error);}
+ }
+
+ /* The AFM File begins with Global Font Information. This section */
+ /* will be parsed whether or not information should be saved. */
+ code = parseGlobals(fp, (*fi)->gfi);
+
+ if (code < 0) error = code;
+
+ /* The Global Font Information is followed by the Character Metrics */
+ /* section. Which procedure is used to parse this section depends on */
+ /* how much information should be saved. If all of the metrics info */
+ /* is wanted, parseCharMetrics is called. If only the character widths */
+ /* is wanted, parseCharWidths is called. parseCharWidths will also */
+ /* be called in the case that no character data is to be saved, just */
+ /* to parse through the section. */
+
+ if ((code != normalEOF) && (code != earlyEOF))
+ {
+ (*fi)->numOfChars = atoi(token(fp));
+ if (flags & (P_M ^ P_W))
+ {
+ (*fi)->cmi = (CharMetricInfo *)
+ calloc((*fi)->numOfChars, sizeof(CharMetricInfo));
+ if ((*fi)->cmi == NULL) {error = storageProblem; return(error);}
+ code = parseCharMetrics(fp, *fi);
+ }
+ else
+ {
+ if (flags & P_W)
+ {
+ (*fi)->cwi = (int *) calloc(256, sizeof(int));
+ if ((*fi)->cwi == NULL)
+ {
+ error = storageProblem;
+ return(error);
+ }
+ }
+ /* parse section regardless */
+ code = parseCharWidths(fp, (*fi)->cwi);
+ } /* else */
+ } /* if */
+
+ if ((error != earlyEOF) && (code < 0)) error = code;
+
+ /* The remaining sections of the AFM are optional. This code will */
+ /* look at the next keyword in the file to determine what section */
+ /* is next, and then allocate the appropriate amount of storage */
+ /* for the data (if the data is to be saved) and call the */
+ /* appropriate parsing routine to parse the section. */
+
+ while ((code != normalEOF) && (code != earlyEOF)) {
+ keyword = token(fp);
+ if (keyword == NULL)
+ /* Have reached an early and unexpected EOF. */
+ /* Set flag and stop parsing */
+ {
+ code = earlyEOF;
+ break; /* get out of loop */
+ }
+ switch(recognize(keyword))
+ {
+ /* this case has been added for t1lib because otherwise comment line
+ between (i.e., outside) the main sections would lead to parse
+ errors. The Adobe spec does not seem to forbid comments at
+ such locations (2001-05-14, RMz) */
+ case COMMENT:
+ keyword = linetoken(fp);
+ break;
+ case STARTKERNDATA:
+ break;
+ case ENDKERNDATA:
+ break;
+ case STARTTRACKKERN:
+ keyword = token(fp);
+ if (flags & P_T)
+ {
+ (*fi)->numOfTracks = atoi(keyword);
+ (*fi)->tkd = (TrackKernData *)
+ calloc((*fi)->numOfTracks, sizeof(TrackKernData));
+ if ((*fi)->tkd == NULL)
+ {
+ error = storageProblem;
+ return(error);
+ }
+ } /* if */
+ code = parseTrackKernData(fp, *fi);
+ break;
+ case STARTKERNPAIRS:
+ keyword = token(fp);
+ if (flags & P_P)
+ {
+ (*fi)->numOfPairs = atoi(keyword);
+ (*fi)->pkd = (PairKernData *)
+ calloc((*fi)->numOfPairs, sizeof(PairKernData));
+ if ((*fi)->pkd == NULL)
+ {
+ error = storageProblem;
+ return(error);
+ }
+ } /* if */
+ code = parsePairKernData(fp, *fi);
+ break;
+ case STARTCOMPOSITES:
+ keyword = token(fp);
+ if (flags & P_C)
+ {
+ (*fi)->numOfComps = atoi(keyword);
+ (*fi)->ccd = (CompCharData *)
+ calloc((*fi)->numOfComps, sizeof(CompCharData));
+ if ((*fi)->ccd == NULL)
+ {
+ error = storageProblem;
+ return(error);
+ }
+ } /* if */
+ code = parseCompCharData(fp, *fi);
+ break;
+ case ENDFONTMETRICS:
+ code = normalEOF;
+ break;
+ case NOPE:
+ default:
+ code = parseError;
+ break;
+ } /* switch */
+
+ if ((error != earlyEOF) && (code < 0)) error = code;
+
+ } /* while */
+
+ if ((error != earlyEOF) && (code < 0)) error = code;
+
+ if (ident != NULL) { free(ident); ident = NULL; }
+
+ return(error);
+
+} /* parseFile */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.h
new file mode 100644
index 00000000000..9b583a19ac8
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/parseAFM.h
@@ -0,0 +1,354 @@
+/*--------------------------------------------------------------------------
+ ----- File: parseAFM.h
+ ----- Author: Adobe Systems Inc., modifications by
+ Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-04-01
+ ----- Description: This file is part of the t1-library. It is the original
+ parseAFM.h modified at a few points.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+/*
+ * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
+ *
+ * This file may be freely copied and redistributed as long as:
+ * 1) This entire notice continues to be included in the file,
+ * 2) If the file has been modified in any way, a notice of such
+ * modification is conspicuously indicated.
+ *
+ * PostScript, Display PostScript, and Adobe are registered trademarks of
+ * Adobe Systems Incorporated.
+ *
+ * ************************************************************************
+ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+ * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+ * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
+ * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
+ * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
+ * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * ************************************************************************
+ */
+
+/* ParseAFM.h
+ *
+ * This header file is used in conjuction with the parseAFM.c file.
+ * Together these files provide the functionality to parse Adobe Font
+ * Metrics files and store the information in predefined data structures.
+ * It is intended to work with an application program that needs font metric
+ * information. The program can be used as is by making a procedure call to
+ * parse an AFM file and have the data stored, or an application developer
+ * may wish to customize the code.
+ *
+ * This header file defines the data structures used as well as the key
+ * strings that are currently recognized by this version of the AFM parser.
+ * This program is based on the document "Adobe Font Metrics Files,
+ * Specification Version 2.0".
+ *
+ * AFM files are separated into distinct sections of different data. Because
+ * of this, the parseAFM program can parse a specified file to only save
+ * certain sections of information based on the application's needs. A record
+ * containing the requested information will be returned to the application.
+ *
+ * AFM files are divided into five sections of data:
+ * 1) The Global Font Information
+ * 2) The Character Metrics Information
+ * 3) The Track Kerning Data
+ * 4) The Pair-Wise Kerning Data
+ * 5) The Composite Character Data
+ *
+ * Basically, the application can request any of these sections independent
+ * of what other sections are requested. In addition, in recognizing that
+ * many applications will want ONLY the x-width of characters and not all
+ * of the other character metrics information, there is a way to receive
+ * only the width information so as not to pay the storage cost for the
+ * unwanted data. An application should never request both the
+ * "quick and dirty" char metrics (widths only) and the Character Metrics
+ * Information since the Character Metrics Information will contain all
+ * of the character widths as well.
+ *
+ * There is a procedure in parseAFM.c, called parseFile, that can be
+ * called from any application wishing to get information from the AFM File.
+ * This procedure expects 3 parameters: a vaild file descriptor, a pointer
+ * to a (FontInfo *) variable (for which space will be allocated and then
+ * will be filled in with the data requested), and a mask specifying
+ * which data from the AFM File should be saved in the FontInfo structure.
+ *
+ * The flags that can be used to set the appropriate mask are defined below.
+ * In addition, several commonly used masks have already been defined.
+ *
+ * History:
+ * original: DSM Thu Oct 20 17:39:59 PDT 1988
+ * modified: DSM Mon Jul 3 14:17:50 PDT 1989
+ * - added 'storageProblem' return code
+ * - fixed typos
+ */
+
+#include <stdio.h>
+
+
+
+/* your basic constants */
+#define T1LIB_TRUE 1
+#define T1LIB_FALSE 0
+#define EOL '\n' /* end-of-line indicator */
+#define MAX_NAME 4096 /* max length for identifiers */
+#define BOOL int
+#define FLAGS int
+
+
+
+/* Flags that can be AND'ed together to specify exactly what
+ * information from the AFM file should be saved.
+ */
+#define P_G 0x01 /* 0000 0001 */ /* Global Font Info */
+#define P_W 0x02 /* 0000 0010 */ /* Character Widths ONLY */
+#define P_M 0x06 /* 0000 0110 */ /* All Char Metric Info */
+#define P_P 0x08 /* 0000 1000 */ /* Pair Kerning Info */
+#define P_T 0x10 /* 0001 0000 */ /* Track Kerning Info */
+#define P_C 0x20 /* 0010 0000 */ /* Composite Char Info */
+
+
+/* Commonly used flags
+ */
+#define P_GW (P_G | P_W)
+#define P_GM (P_G | P_M)
+#define P_GMP (P_G | P_M | P_P)
+#define P_GMK (P_G | P_M | P_P | P_T)
+#define P_ALL (P_G | P_M | P_P | P_T | P_C)
+
+
+
+/* Possible return codes from the parseFile procedure.
+ *
+ * ok means there were no problems parsing the file.
+ *
+ * parseError means that there was some kind of parsing error, but the
+ * parser went on. This could include problems like the count for any given
+ * section does not add up to how many entries there actually were, or
+ * there was a key that was not recognized. The return record may contain
+ * vaild data or it may not.
+ *
+ * earlyEOF means that an End of File was encountered before expected. This
+ * may mean that the AFM file had been truncated, or improperly formed.
+ *
+ * storageProblem means that there were problems allocating storage for
+ * the data structures that would have contained the AFM data.
+ */
+#define ok 0
+#define parseError -1
+#define earlyEOF -2
+#define storageProblem -3
+
+
+
+/************************* TYPES *********************************/
+/* Below are all of the data structure definitions. These structures
+ * try to map as closely as possible to grouping and naming of data
+ * in the AFM Files.
+ */
+
+
+/* Bounding box definition. Used for the Font BBox as well as the
+ * Character BBox.
+ */
+typedef struct
+{
+ int llx; /* lower left x-position */
+ int lly; /* lower left y-position */
+ int urx; /* upper right x-position */
+ int ury; /* upper right y-position */
+} BBox;
+
+
+/* Global Font information.
+ * The key that each field is associated with is in comments. For an
+ * explanation about each key and its value please refer to the AFM
+ * documentation (full title & version given above).
+ */
+typedef struct
+{
+ char *afmVersion; /* key: StartFontMetrics */
+ char *fontName; /* key: FontName */
+ char *fullName; /* key: FullName */
+ char *familyName; /* key: FamilyName */
+ char *weight; /* key: Weight */
+ float italicAngle; /* key: ItalicAngle */
+ BOOL isFixedPitch; /* key: IsFixedPitch */
+ BBox fontBBox; /* key: FontBBox */
+ int underlinePosition; /* key: UnderlinePosition */
+ int underlineThickness; /* key: UnderlineThickness */
+ char *version; /* key: Version */
+ char *notice; /* key: Notice */
+ char *encodingScheme; /* key: EncodingScheme */
+ int capHeight; /* key: CapHeight */
+ int xHeight; /* key: XHeight */
+ int ascender; /* key: Ascender */
+ int descender; /* key: Descender */
+} GlobalFontInfo;
+
+
+/* Ligature definition is a linked list since any character can have
+ * any number of ligatures.
+ */
+typedef struct _t_ligature
+{
+ char *succ, *lig;
+ struct _t_ligature *next;
+} Ligature;
+
+
+/* Character Metric Information. This structure is used only if ALL
+ * character metric information is requested. If only the character
+ * widths is requested, then only an array of the character x-widths
+ * is returned.
+ *
+ * The key that each field is associated with is in comments. For an
+ * explanation about each key and its value please refer to the
+ * Character Metrics section of the AFM documentation (full title
+ * & version given above).
+ */
+typedef struct
+{
+ int code, /* key: C */
+ wx, /* key: WX */
+ wy; /* together wx and wy are associated with key: W */
+ char *name; /* key: N */
+ BBox charBBox; /* key: B */
+ Ligature *ligs; /* key: L (linked list; not a fixed number of Ls */
+} CharMetricInfo;
+
+
+/* Track kerning data structure.
+ * The fields of this record are the five values associated with every
+ * TrackKern entry.
+ *
+ * For an explanation about each value please refer to the
+ * Track Kerning section of the AFM documentation (full title
+ * & version given above).
+ */
+typedef struct
+{
+ int degree;
+ float minPtSize,
+ minKernAmt,
+ maxPtSize,
+ maxKernAmt;
+} TrackKernData;
+
+
+/* Pair Kerning data structure.
+ * The fields of this record are the four values associated with every
+ * KP entry. For KPX entries, the yamt will be zero.
+ *
+ * For an explanation about each value please refer to the
+ * Pair Kerning section of the AFM documentation (full title
+ * & version given above).
+ */
+typedef struct
+{
+ char *name1;
+ char *name2;
+ int xamt,
+ yamt;
+} PairKernData;
+
+
+/* PCC is a piece of a composite character. This is a sub structure of a
+ * compCharData described below.
+ * These fields will be filled in with the values from the key PCC.
+ *
+ * For an explanation about each key and its value please refer to the
+ * Composite Character section of the AFM documentation (full title
+ * & version given above).
+ */
+typedef struct
+{
+ char *pccName;
+ int deltax,
+ deltay;
+} Pcc;
+
+
+/* Composite Character Information data structure.
+ * The fields ccName and numOfPieces are filled with the values associated
+ * with the key CC. The field pieces points to an array (size = numOfPieces)
+ * of information about each of the parts of the composite character. That
+ * array is filled in with the values from the key PCC.
+ *
+ * For an explanation about each key and its value please refer to the
+ * Composite Character section of the AFM documentation (full title
+ * & version given above).
+
+ structure extended for use with t1lib. The fields "width" and bbox store
+ the composite characters escapement and its bounding box (2001-05-027, RMz)
+ */
+typedef struct
+{
+ int wx; /* these two will be filled by T1_LoadFont() */
+ BBox charBBox;
+ char *ccName;
+ int numOfPieces;
+ Pcc *pieces;
+} CompCharData;
+
+
+/* FontInfo
+ * Record type containing pointers to all of the other data
+ * structures containing information about a font.
+ * A a record of this type is filled with data by the
+ * parseFile function.
+ */
+typedef struct
+{
+ GlobalFontInfo *gfi; /* ptr to a GlobalFontInfo record */
+ int *cwi; /* ptr to 256 element array of just char widths */
+ int numOfChars; /* number of entries in char metrics array */
+ CharMetricInfo *cmi; /* ptr to char metrics array */
+ int numOfTracks; /* number to entries in track kerning array */
+ TrackKernData *tkd; /* ptr to track kerning array */
+ int numOfPairs; /* number to entries in pair kerning array */
+ PairKernData *pkd; /* ptr to pair kerning array */
+ int numOfComps; /* number to entries in comp char array */
+ CompCharData *ccd; /* ptr to comp char array */
+} FontInfo;
+
+
+
+/************************* PROCEDURES ****************************/
+
+/* Call this procedure to do the grunt work of parsing an AFM file.
+ *
+ * "fp" should be a valid file pointer to an AFM file.
+ *
+ * "fi" is a pointer to a pointer to a FontInfo record sturcture
+ * (defined above). Storage for the FontInfo structure will be
+ * allocated in parseFile and the structure will be filled in
+ * with the requested data from the AFM File.
+ *
+ * "flags" is a mask with bits set representing what data should
+ * be saved. Defined above are valid flags that can be used to set
+ * the mask, as well as a few commonly used masks.
+ *
+ * The possible return codes from parseFile are defined above.
+ */
+
+extern int T1lib_parseFile ( FILE *fp, FontInfo **fi, FLAGS flags );
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/sysconf.h.in b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/sysconf.h.in
new file mode 100644
index 00000000000..1809d651b9e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/sysconf.h.in
@@ -0,0 +1,40 @@
+/*--------------------------------------------------------------------------
+ ----- File: sysconf.h.in
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-04-01
+ ----- Description: This file is part of the t1-library. Some system
+ dependent definitions are stored here. sysconf.h
+ is generated from this file automatically by the
+ configure-script.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#undef __CHAR_UNSIGNED__
+#define SIZEOF_CHAR 0
+#define SIZEOF_SHORT 0
+#define SIZEOF_INT 0
+#define SIZEOF_LONG 0
+#define SIZEOF_LONG_LONG 0
+#define SIZEOF_FLOAT 0
+#define SIZEOF_DOUBLE 0
+#define SIZEOF_LONG_DOUBLE 0
+#define SIZEOF_VOID_P 0
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.c
new file mode 100644
index 00000000000..86adc766620
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.c
@@ -0,0 +1,1905 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1aaset.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ Subsampling based on code by Raph Levien (raph@acm.org)
+ ----- Date: 2007-12-21
+ ----- Description: This file is part of the t1-library. It contains
+ functions for antialiased setting of characters
+ and strings of characters.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1AASET_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1aaset.h"
+#include "t1set.h"
+#include "t1load.h"
+#include "t1finfo.h"
+#include "t1misc.h"
+#include "t1base.h"
+#include "t1outline.h"
+
+
+#define DEFAULTBPP 8
+
+
+/* As a fall back */
+#ifndef T1_AA_TYPE16
+#define T1_AA_TYPE16 short
+#endif
+#ifndef T1_AA_TYPE32
+#define T1_AA_TYPE32 int
+#endif
+
+
+/* In the following arrays take the gray values. Entry 0 is associated
+ with the white (background) value and the max entry is the
+ black (foreground) value. */
+static unsigned T1_AA_TYPE32 gv[5]={0,0,0,0,0};
+static unsigned T1_AA_TYPE32 gv_h[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+static unsigned T1_AA_TYPE32 gv_n[2]={0,0};
+
+static int T1aa_level=T1_AA_LOW; /* The default value */
+static T1_AA_TYPE32 T1aa_lut[625];
+static int T1aa_count[256];
+static T1_AA_TYPE32 T1aa_h_lut[289];
+static int T1aa_h_count[256];
+static T1_AA_TYPE32 T1aa_n_lut[64];
+
+/* This global is for querying the current bg from other parts
+ of t1lib */
+unsigned T1_AA_TYPE32 T1aa_bg=0;
+
+/* The limit values for smart antialiasing */
+float T1aa_smartlimit1=T1_AA_SMARTLIMIT1;
+float T1aa_smartlimit2=T1_AA_SMARTLIMIT2;
+int T1aa_SmartOn=0; /* We do not enable smart AA by default */
+
+/* T1_AAInit: This function must be called whenever the T1aa_gray_val
+ or T1aa_bpp variables change, or the level changes. */
+static int T1_AAInit ( int level )
+{
+ int i;
+ int i0, i1, i2, i3;
+ int movelow=0, movehigh=0, indlow=0, indhigh=0;
+
+ /* Note: movelow, movehigh, indlow and indhigh take care for proper
+ byte swapping in dependence of endianess for level=4 */
+ if (level==T1_AA_NONE){
+ if (T1aa_bpp==8){
+ if (pFontBase->endian){
+ movelow=3;
+ movehigh=2;
+ }
+ else{
+ movelow=0;
+ movehigh=1;
+ }
+ }
+ else if (T1aa_bpp==16){
+ if (pFontBase->endian){
+ movelow=1;
+ movehigh=0;
+ }
+ else{
+ movelow=0;
+ movehigh=1;
+ }
+ }
+ }
+
+ if (level==T1_AA_HIGH){
+
+ if (T1aa_bpp==8){
+ if (pFontBase->endian){
+ indlow=17;
+ indhigh=1;
+ movelow=3;
+ movehigh=2;
+ }
+ else{
+ indlow=1;
+ indhigh=17;
+ movelow=0;
+ movehigh=1;
+ }
+ }
+ else if (T1aa_bpp==16){
+ if (pFontBase->endian){
+ indlow=17;
+ indhigh=1;
+ movelow=1;
+ movehigh=0;
+ }
+ else{
+ indlow=1;
+ indhigh=17;
+ movelow=0;
+ movehigh=1;
+ }
+ }
+ else if (T1aa_bpp==32){
+ indlow=1;
+ indhigh=17;
+ }
+ for (i = 0; i < 256; i++) {
+ T1aa_h_count[i] = 0;
+ if (i & 0x80) T1aa_h_count[i] += indhigh;
+ if (i & 0x40) T1aa_h_count[i] += indhigh;
+ if (i & 0x20) T1aa_h_count[i] += indhigh;
+ if (i & 0x10) T1aa_h_count[i] += indhigh;
+ if (i & 0x08) T1aa_h_count[i] += indlow;
+ if (i & 0x04) T1aa_h_count[i] += indlow;
+ if (i & 0x02) T1aa_h_count[i] += indlow;
+ if (i & 0x01) T1aa_h_count[i] += indlow;
+ }
+ }
+
+ if (level == 2 && T1aa_bpp == 8) {
+ for (i0 = 0; i0 < 5; i0++)
+ for (i1 = 0; i1 < 5; i1++)
+ for (i2 = 0; i2 < 5; i2++)
+ for (i3 = 0; i3 < 5; i3++) {
+ ((char *)T1aa_lut)[(((i0 * 5 + i1) * 5 + i2) * 5 + i3) * 4] = gv[i3];
+ ((char *)T1aa_lut)[(((i0 * 5 + i1) * 5 + i2) * 5 + i3) * 4 + 1] = gv[i2];
+ ((char *)T1aa_lut)[(((i0 * 5 + i1) * 5 + i2) * 5 + i3) * 4 + 2] = gv[i1];
+ ((char *)T1aa_lut)[(((i0 * 5 + i1) * 5 + i2) * 5 + i3) * 4 + 3] = gv[i0];
+ }
+ for (i = 0; i < 256; i++) {
+ T1aa_count[i] = 0;
+ if (i & 0x80) T1aa_count[i] += 125;
+ if (i & 0x40) T1aa_count[i] += 125;
+ if (i & 0x20) T1aa_count[i] += 25;
+ if (i & 0x10) T1aa_count[i] += 25;
+ if (i & 0x08) T1aa_count[i] += 5;
+ if (i & 0x04) T1aa_count[i] += 5;
+ if (i & 0x02) T1aa_count[i] += 1;
+ if (i & 0x01) T1aa_count[i] += 1;
+ }
+ return(0);
+ } else if (level == 2 && T1aa_bpp == 16) {
+ for (i0 = 0; i0 < 5; i0++)
+ for (i1 = 0; i1 < 5; i1++) {
+ ((T1_AA_TYPE16 *)T1aa_lut)[(i0 * 5 + i1) * 2] = gv[i1];
+ ((T1_AA_TYPE16 *)T1aa_lut)[(i0 * 5 + i1) * 2 + 1] = gv[i0];
+ }
+ for (i = 0; i < 256; i++) {
+ T1aa_count[i] = 0;
+ if (i & 0x80) T1aa_count[i] += 160;
+ if (i & 0x40) T1aa_count[i] += 160;
+ if (i & 0x20) T1aa_count[i] += 32;
+ if (i & 0x10) T1aa_count[i] += 32;
+ if (i & 0x08) T1aa_count[i] += 5;
+ if (i & 0x04) T1aa_count[i] += 5;
+ if (i & 0x02) T1aa_count[i] += 1;
+ if (i & 0x01) T1aa_count[i] += 1;
+ }
+ return(0);
+ } else if (level == 2 && T1aa_bpp == 32) {
+ for (i0 = 0; i0 < 5; i0++)
+ ((T1_AA_TYPE32 *)T1aa_lut)[i0] = gv[i0];
+ for (i = 0; i < 256; i++) {
+ T1aa_count[i] = 0;
+ if (i & 0x80) T1aa_count[i] += 512;
+ if (i & 0x40) T1aa_count[i] += 512;
+ if (i & 0x20) T1aa_count[i] += 64;
+ if (i & 0x10) T1aa_count[i] += 64;
+ if (i & 0x08) T1aa_count[i] += 8;
+ if (i & 0x04) T1aa_count[i] += 8;
+ if (i & 0x02) T1aa_count[i] += 1;
+ if (i & 0x01) T1aa_count[i] += 1;
+ }
+ return(0);
+ }
+ else if (level == 4 && T1aa_bpp == 8) {
+ for (i0 = 0; i0 < 17; i0++){ /* i0 indexes higher nibble */
+ for (i1 = 0; i1 < 17; i1++){ /* i1 indixes lower nibble */
+ ((char *)T1aa_h_lut)[(i0 * 17 + i1) * 4 + movelow] = gv_h[i1];
+ ((char *)T1aa_h_lut)[(i0 * 17 + i1) * 4 + movehigh] = gv_h[i0];
+ }
+ }
+ return(0);
+ }
+ else if (level == 4 && T1aa_bpp == 16) {
+ for (i0 = 0; i0 < 17; i0++){ /* i0 indexes higher nibble */
+ for (i1 = 0; i1 < 17; i1++){ /* i1 indixes lower nibble */
+ ((T1_AA_TYPE16 *)T1aa_h_lut)[(i0 * 17 + i1) * 2 + movelow] = gv_h[i1];
+ ((T1_AA_TYPE16 *)T1aa_h_lut)[(i0 * 17 + i1) * 2 + movehigh] = gv_h[i0];
+ }
+ }
+ return(0);
+ }
+ else if (level == 4 && T1aa_bpp == 32) {
+ for (i0 = 0; i0 < 17; i0++){ /* i0 indexes higher nibble */
+ for (i1 = 0; i1 < 17; i1++){ /* i1 indixes lower nibble */
+ ((T1_AA_TYPE32 *)T1aa_h_lut)[(i0 * 17 + i1)] = gv_h[i1];
+ }
+ }
+ return(0);
+ }
+ else if (level == 1 && T1aa_bpp == 8) {
+ for (i0=0; i0<16; i0++) {
+ ((char *)T1aa_n_lut)[i0*4+movelow]=gv_n[i0 & 0x01];
+ ((char *)T1aa_n_lut)[i0*4+movelow+1]=gv_n[(i0>>1) & 0x01];
+ ((char *)T1aa_n_lut)[i0*4+movelow+2]=gv_n[(i0>>2) & 0x01];
+ ((char *)T1aa_n_lut)[i0*4+movelow+3]=gv_n[(i0>>3) & 0x01];
+ }
+ return(0);
+ }
+ else if (level == 1 && T1aa_bpp == 16) {
+ for (i0=0; i0<4; i0++) {
+ ((T1_AA_TYPE16 *)T1aa_n_lut)[i0*2]=gv_n[i0 & 0x01];
+ ((T1_AA_TYPE16 *)T1aa_n_lut)[i0*2+1]=gv_n[(i0>>1) & 0x01];
+ }
+ return(0);
+ }
+ else if (level == 1 && T1aa_bpp == 32) {
+ for ( i0=0; i0<2; i0++) {
+ ((T1_AA_TYPE32 *)T1aa_n_lut)[i0]=gv_n[i0];
+ }
+ return(0);
+ }
+ else {
+ /* unsupported combination of level and bpp -> we set T1_errno and
+ put an entry into the logfile! */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ sprintf( err_warn_msg_buf,
+ "Unsupported AA specification: level=%d, bpp=%d",
+ level, T1aa_bpp);
+ T1_PrintLog( "T1_AAInit()", err_warn_msg_buf, T1LOG_WARNING);
+ }
+ return(1);
+}
+
+
+/* T1_AADoLine: Create a single scanline of antialiased output. The
+ (x, y) arguments refer to the number of pixels in the input image
+ to convert down. The width argument is the number of bytes
+ separating scanlines in the input. The quantity hcorr describes the
+ number of subpixels. It is the shift of the oversampled bitmap to
+ the right */
+static void T1_AADoLine ( int level, int x, int y, int width,
+ char *c_in_ptr, char *target_ptr, int hcorr )
+{
+ int i=0;
+ int size;
+ int count=0;
+ int mod;
+
+ unsigned char bcarry1=0, bcarry2=0, bcarry3=0, bcarry4=0;
+
+ static char *align_buf = NULL;
+ static int align_buf_size = 0;
+ unsigned char *in_ptr;
+
+ int new_size=55;
+ register char *optr;
+
+
+
+ /* We convert the input pointer to unsigned since we use it as index! */
+ in_ptr=(unsigned char*)c_in_ptr;
+
+
+ if ((long)target_ptr & 3){
+ /* calculate new_size (size in bytes of output buffer */
+ if (level == T1_AA_LOW){
+ new_size=((x + hcorr + 1) >> 1) * (T1aa_bpp >> 3);
+ }
+ else{ /* T1_AA_HIGH */
+ new_size = ((x + hcorr + 3) >> 2) * (T1aa_bpp >> 3);
+ }
+ if (new_size > align_buf_size)
+ {
+ if (align_buf)
+ free (align_buf);
+ /* Note: we allocate 12 more than necessary to have tolerance
+ at the end of line */
+ align_buf = (char *)malloc(new_size+12);
+ align_buf_size = new_size;
+ }
+ optr = align_buf;
+ }
+ else
+ optr = target_ptr;
+
+
+ /* size: The number of valid byte in the input string, i.e., the number of bytes
+ partially filled with pixels before shifting with hcorr.
+ mod: Is 1 if after shifting with hcorr the last byte in the input line has an
+ overflow.
+ */
+
+ if (level == T1_AA_LOW) {
+ size=(x+7)>>3;
+ mod=(x+hcorr)>(size*8) ? 1 : 0;
+
+ if (T1aa_bpp == 8) {
+ if (y == 2){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_lut[(T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ }
+ }
+ else if (y == 1){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_lut[(T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ }
+ }
+ if (mod) {
+ if (y == 2)
+ ((T1_AA_TYPE32 *)optr)[i]=T1aa_lut[(T1aa_count[bcarry1] +
+ T1aa_count[bcarry2])];
+ else if (y == 1)
+ ((T1_AA_TYPE32 *)optr)[i]=T1aa_lut[(T1aa_count[bcarry1])];
+ }
+ }
+ else if (T1aa_bpp == 16) {
+ if (y == 2){
+ for (i = 0; i < size; i++) {
+ count = T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)]
+ + T1aa_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)];
+ ((T1_AA_TYPE32 *)optr)[i * 2] = T1aa_lut[count & 31];
+ ((T1_AA_TYPE32 *)optr)[i * 2 + 1] = T1aa_lut[count >> 5];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ }
+ }
+ else if (y == 1){
+ for (i = 0; i < size; i++) {
+ count = T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)];
+ ((T1_AA_TYPE32 *)optr)[i * 2] = T1aa_lut[count & 31];
+ ((T1_AA_TYPE32 *)optr)[i * 2 + 1] = T1aa_lut[count >> 5];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ }
+ }
+ if (mod){
+ if (y == 2)
+ count = T1aa_count[bcarry1] +
+ T1aa_count[bcarry2];
+ else if (y == 1)
+ count = T1aa_count[bcarry1];
+ ((T1_AA_TYPE32 *)optr)[i * 2] = T1aa_lut[count & 31];
+ ((T1_AA_TYPE32 *)optr)[i * 2 + 1] = T1aa_lut[count >> 5];
+ }
+ }
+ else if (T1aa_bpp == 32) {
+ if (y == 2){
+ for (i = 0; i < size; i++) {
+ count = T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_count[(unsigned char)((in_ptr[i+width]<<hcorr)|bcarry2)];
+ ((T1_AA_TYPE32 *)optr)[i * 4] = T1aa_lut[count & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 1] = T1aa_lut[(count >> 3) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 2] = T1aa_lut[(count >> 6) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 3] = T1aa_lut[(count >> 9) & 7];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ }
+ }
+ else if (y == 1) {
+ for (i = 0; i < size; i++) {
+ count = T1aa_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)];
+ ((T1_AA_TYPE32 *)optr)[i * 4] = T1aa_lut[count & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 1] = T1aa_lut[(count >> 3) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 2] = T1aa_lut[(count >> 6) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 3] = T1aa_lut[(count >> 9) & 7];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ }
+ }
+ if(mod) {
+ if (y == 2){
+ count = T1aa_count[bcarry1] +
+ T1aa_count[bcarry2];
+ }
+ else if (y == 1){
+ count = T1aa_count[bcarry1];
+ }
+ ((T1_AA_TYPE32 *)optr)[i * 4] = T1aa_lut[count & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 1] = T1aa_lut[(count >> 3) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 2] = T1aa_lut[(count >> 6) & 7];
+ ((T1_AA_TYPE32 *)optr)[i * 4 + 3] = T1aa_lut[(count >> 9) & 7];
+ }
+ }
+ }
+ else if (level==T1_AA_HIGH){
+ size=(x+7)>>3;
+ mod=(x+hcorr)>(size*8) ? 1 : 0;
+
+ if (T1aa_bpp == 8) {
+ if (y == 4){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 3*width]<<hcorr)|bcarry4)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ bcarry3=in_ptr[i+2*width]>>(8-hcorr);
+ bcarry4=in_ptr[i+3*width]>>(8-hcorr);
+ }
+ }
+ else if (y == 3){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ bcarry3=in_ptr[i+2*width]>>(8-hcorr);
+ }
+ }
+ else if (y == 2){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ }
+ else if (y == 1){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ }
+ if (mod) {
+ if (y == 4)
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3] +
+ T1aa_h_count[bcarry4])];
+ else if (y == 3)
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3])];
+ else if (y == 2)
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2])];
+ else if (y == 1)
+ ((T1_AA_TYPE16 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1])];
+ }
+ } else if (T1aa_bpp == 16) {
+ if (y == 4){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 3*width]<<hcorr)|bcarry4)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ bcarry3=in_ptr[i+2*width]>>(8-hcorr);
+ bcarry4=in_ptr[i+3*width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ bcarry3=in_ptr[2*width]<<hcorr;
+ bcarry4=in_ptr[3*width]<<hcorr;
+ }
+ }
+ else if (y == 3){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+2*width]>>(8-hcorr);
+ bcarry3=in_ptr[i+3*width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ bcarry3=in_ptr[2*width]<<hcorr;
+ }
+ }
+ else if (y == 2){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ }
+ }
+ else if (y == 1){
+ for (i = 0; i < size; i++) {
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)])];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ }
+ }
+ if (mod) {
+ if (y == 4)
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3] +
+ T1aa_h_count[bcarry4])];
+ else if (y == 3)
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3])];
+ else if (y == 2)
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2])];
+ else if (y == 1)
+ ((T1_AA_TYPE32 *)optr)[i] =
+ T1aa_h_lut[(T1aa_h_count[bcarry1])];
+ }
+ }
+ else if (T1aa_bpp == 32) {
+ if (y == 4){
+ for (i = 0; i < size; i++) {
+ count=T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 3*width]<<hcorr)|bcarry4)];
+ ((T1_AA_TYPE32 *)optr)[2*i] = T1aa_h_lut[count % 17];
+ ((T1_AA_TYPE32 *)optr)[2*i+1] = T1aa_h_lut[count / 17];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ bcarry3=in_ptr[i+2*width]>>(8-hcorr);
+ bcarry4=in_ptr[i+3*width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ bcarry3=in_ptr[2*width]<<hcorr;
+ bcarry4=in_ptr[3*width]<<hcorr;
+ }
+ }
+ else if (y == 3){
+ for (i = 0; i < size; i++) {
+ count=T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + 2*width]<<hcorr)|bcarry3)];
+ ((T1_AA_TYPE32 *)optr)[2*i] = T1aa_h_lut[count % 17];
+ ((T1_AA_TYPE32 *)optr)[2*i+1] = T1aa_h_lut[count / 17];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ bcarry3=in_ptr[i+2*width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ bcarry3=in_ptr[2*width]<<hcorr;
+ }
+ }
+ else if (y == 2){
+ for (i = 0; i < size; i++) {
+ count=T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)] +
+ T1aa_h_count[(unsigned char)((in_ptr[i + width]<<hcorr)|bcarry2)];
+ ((T1_AA_TYPE32 *)optr)[2*i] = T1aa_h_lut[count % 17];
+ ((T1_AA_TYPE32 *)optr)[2*i+1] = T1aa_h_lut[count / 17];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ bcarry2=in_ptr[i+width]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ bcarry2=in_ptr[width]<<hcorr;
+ }
+ }
+ else if (y == 1){
+ for (i = 0; i < size; i++) {
+ count=T1aa_h_count[(unsigned char)((in_ptr[i]<<hcorr)|bcarry1)];
+ ((T1_AA_TYPE32 *)optr)[2*i] = T1aa_h_lut[count % 17];
+ ((T1_AA_TYPE32 *)optr)[2*i+1] = T1aa_h_lut[count / 17];
+ bcarry1=in_ptr[i]>>(8-hcorr);
+ }
+ if (size==0){
+ bcarry1=in_ptr[0]<<hcorr;
+ }
+ }
+ if (mod) {
+ if (y == 4){
+ count=T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3] +
+ T1aa_h_count[bcarry4];
+ }
+ else if (y == 3)
+ count=T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2] +
+ T1aa_h_count[bcarry3];
+ else if (y == 2)
+ count=T1aa_h_count[bcarry1] +
+ T1aa_h_count[bcarry2];
+ else if (y == 1)
+ count=T1aa_h_count[bcarry1];
+ ((T1_AA_TYPE32 *)optr)[2*i] = T1aa_h_lut[count % 17];
+ ((T1_AA_TYPE32 *)optr)[2*i+1] = T1aa_h_lut[count / 17];
+ }
+ }
+ }
+
+ /* Copy to target if necessary */
+ if ((long)target_ptr & 3){
+ memcpy (target_ptr, align_buf, new_size);
+ }
+
+}
+
+
+
+/* T1_DoLine(): Generate a scanline of bytes from a scanline of bits */
+static void T1_DoLine ( long wd, long paddedW, char *ptr, register char *target_ptr )
+{
+ register int j;
+ register unsigned char *in_ptr;
+ T1_AA_TYPE16 *starget_ptr;
+ T1_AA_TYPE32 *ltarget_ptr;
+
+ in_ptr=(unsigned char *)ptr;
+
+ if (T1aa_bpp==8) {
+ for ( j=0; j<wd; j++ ){
+ *target_ptr++=T1aa_n_lut[((in_ptr[j/8])>>j%8)&0x0F];
+ }
+ }
+ else if (T1aa_bpp==16) {
+ starget_ptr=(T1_AA_TYPE16 *)target_ptr;
+ for ( j=0; j<wd; j++){
+ *starget_ptr++=T1aa_n_lut[((in_ptr[j/8])>>j%8)&0x03];
+ }
+ }
+ else if (T1aa_bpp==32) {
+ ltarget_ptr=(T1_AA_TYPE32 *)target_ptr;
+ for ( j=0; j<wd; j++)
+ *ltarget_ptr++=T1aa_n_lut[((in_ptr[j/8])>>j%8)&0x01];
+ }
+ return;
+}
+
+
+
+/* T1_AASetChar(...): Generate the anti-aliased bitmap for a character */
+GLYPH *T1_AASetChar( int FontID, char charcode, float size,
+ T1_TMATRIX *transform)
+{
+
+ GLYPH *glyph; /* pointer to bitmap glyph */
+ static GLYPH aaglyph={NULL,{0,0,0,0,0,0},NULL,DEFAULTBPP};/* The anti-aliased glyph */
+ long asc, dsc, ht, wd;
+ long i;
+ long n_horz, n_horz_pad, n_vert, n_asc, n_dsc;
+ long v_start, v_end;
+ char *target_ptr;
+ long offset;
+ char *ptr;
+ int y;
+ long lsb, aalsb, aahstart;
+ int memsize;
+ LONG paddedW;
+ int savelevel;
+ FONTSIZEDEPS *font_ptr=NULL;
+ unsigned char ucharcode;
+
+
+ /* Reset character glyph, if necessary */
+ if (aaglyph.bits!=NULL){
+ free(aaglyph.bits);
+ aaglyph.bits=NULL;
+ }
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=0;
+ aaglyph.metrics.advanceY=0;
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ aaglyph.bpp=T1aa_bpp;
+
+
+ ucharcode=charcode;
+
+ /* Check for smart antialiasing */
+ savelevel=T1aa_level;
+ if (T1aa_SmartOn){
+ if (size>=T1aa_smartlimit2) {
+ T1aa_level=T1_AA_NONE;
+ }
+ else if (size>=T1aa_smartlimit1) {
+ T1aa_level=T1_AA_LOW;
+ }
+ else {
+ T1aa_level=T1_AA_HIGH;
+ }
+ }
+
+
+ /* The following code is only exectued if caching of antialiased
+ chracters is enabled. */
+ /* Check if char is in cache */
+ if ((pFontBase->t1lib_flags & T1_AA_CACHING)) {
+ if (transform==NULL){
+ /* if size/aa is not existent we create it */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, T1aa_level))==NULL){
+ /* We create the required size struct and leave the rest
+ for T1_SetChar() */
+ font_ptr=T1int_CreateNewFontSize( FontID, size, T1aa_level);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ }
+ else {/* size is already existent in cache */
+ if (font_ptr->pFontCache[ucharcode].bits != NULL){
+ /* Character is already in Chache -> create a copy of cache
+ and return a pointer to the result: */
+ memcpy( &aaglyph, &(font_ptr->pFontCache[ucharcode]), sizeof(GLYPH));
+ memsize = (aaglyph.metrics.ascent-aaglyph.metrics.descent) *
+ PAD((aaglyph.metrics.rightSideBearing-aaglyph.metrics.leftSideBearing) *
+ T1aa_bpp,pFontBase->bitmap_pad)/8;
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (aaglyph.bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ memcpy( aaglyph.bits, font_ptr->pFontCache[ucharcode].bits, memsize);
+ return(&(aaglyph));
+ }
+ }
+ } /* (transform==NULL) */
+ } /* T1_AA_CACHING */
+
+
+ /* First, call routine to rasterize character, all error checking is
+ done in this function: */
+ if ((glyph=T1_SetChar( FontID, charcode, T1aa_level*size, transform))==NULL){
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL); /* An error occured */
+ }
+
+ /* In case there are no black pixels, we simply set the dimensions and
+ then return */
+ if ( glyph->bits == NULL) {
+ aaglyph.bits=NULL;
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ /* restore level and return */
+ T1aa_level=savelevel;
+ return(&aaglyph);
+ }
+
+ /* Get dimensions of bitmap: */
+ asc=glyph->metrics.ascent;
+ dsc=glyph->metrics.descent;
+ lsb=glyph->metrics.leftSideBearing;
+ ht=asc-dsc;
+ wd=glyph->metrics.rightSideBearing-lsb;
+
+
+
+ if (T1aa_level==T1_AA_NONE){
+ /* we only convert bitmap to bytemap */
+ aaglyph=*glyph;
+ aaglyph.bpp=T1aa_bpp;
+ /* Compute scanline length and such */
+ n_horz_pad=PAD( wd*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*ht*8;
+ /* aaglyph.bits = (char *)malloc(memsize*sizeof( char)); */
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ paddedW=PAD(wd,pFontBase->bitmap_pad)>>3;
+ ptr=glyph->bits;
+ target_ptr=aaglyph.bits;
+ for (i = 0; i < ht; i++) {
+ T1_DoLine ( wd, paddedW, ptr, target_ptr );
+ ptr += paddedW;
+ target_ptr += n_horz_pad;
+ }
+ /* restore level */
+ T1aa_level=savelevel;
+ return(&aaglyph);
+ }
+
+
+ /* Set some looping parameters for subsampling */
+ if (lsb<0){
+ aalsb=lsb/T1aa_level-1;
+ aahstart=T1aa_level+(lsb%T1aa_level);
+ }
+ else{
+ aalsb=lsb/T1aa_level;
+ aahstart=lsb%T1aa_level;
+ }
+
+ /* The horizontal number of steps: */
+ n_horz=(wd+aahstart+T1aa_level-1)/T1aa_level;
+ /* And the padded value */
+ n_horz_pad=PAD( n_horz*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+
+ /* vertical number of steps: */
+ if (asc % T1aa_level){ /* not aligned */
+ if ( asc > 0){
+ n_asc=asc/T1aa_level+1;
+ v_start=asc % T1aa_level;
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level + (asc % T1aa_level);
+ }
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level;
+ }
+ if (dsc % T1aa_level){ /* not aligned */
+ if ( dsc < 0){
+ n_dsc=dsc/T1aa_level-1;
+ v_end=-(dsc % T1aa_level);
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level - (dsc % T1aa_level);
+ }
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level;
+ }
+ /* the total number of lines: */
+ n_vert=n_asc-n_dsc;
+
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*n_vert;
+
+ /* Note: we allocate 12 bytes more than necessary */
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char) +12);
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+
+
+ paddedW=PAD(wd,pFontBase->bitmap_pad)/8;
+ offset=0;
+ target_ptr=aaglyph.bits;
+
+ /* We must check for n_vert==1 because then both v_start and v_end could / will
+ affect the same AA scan line. Because I'm forgetful, a reminder:
+
+ v_end | 000000000000000000000
+ | 111111111111111111111 ^
+ Y 111111111111111111111 |
+ 000000000000000000000 | v_start
+
+ In order to count the v_end from bottom to top, we express it as (T1aa_level-v_end).
+ The number of rows to take into account is then v_start-(T1aa_level-v_end).
+ */
+ if (n_vert==1) {
+ v_start=v_start - (T1aa_level - v_end);
+ }
+
+ ptr = glyph->bits;
+ for (i = 0; i < n_vert; i++) {
+ if (i==0)
+ y=v_start;
+ else if (i==n_vert-1)
+ y=v_end;
+ else
+ y=T1aa_level;
+ T1_AADoLine ( T1aa_level, wd, y, paddedW, ptr, target_ptr, aahstart );
+ ptr += y * paddedW;
+ target_ptr += n_horz_pad;
+ }
+
+ /* .. and set them in aaglyph */
+ aaglyph.metrics.leftSideBearing=aalsb;
+ aaglyph.metrics.rightSideBearing=aalsb + n_horz;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=n_asc;
+ aaglyph.metrics.descent=n_dsc;
+ aaglyph.pFontCacheInfo=NULL;
+
+
+ if ((pFontBase->t1lib_flags & T1_AA_CACHING) && (transform==NULL)) {
+ /* Put char into cache area */
+ memcpy( &(font_ptr->pFontCache[ucharcode]), &aaglyph, sizeof(GLYPH));
+ font_ptr->pFontCache[ucharcode].bits = (char *)malloc(memsize*sizeof( char));
+ if (font_ptr->pFontCache[ucharcode].bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ memcpy( font_ptr->pFontCache[ucharcode].bits, aaglyph.bits, memsize);
+ }
+
+ /* restore level */
+ T1aa_level=savelevel;
+
+ return(&aaglyph);
+}
+
+
+
+/* T1_AASetString(...): Generate the antialiased bitmap for a
+ string of characters */
+GLYPH *T1_AASetString( int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform)
+{
+ GLYPH *glyph; /* pointer to bitmap glyph */
+ static GLYPH aastring_glyph={NULL,{0,0,0,0,0,0},NULL,DEFAULTBPP};/* The anti-aliased glyph */
+ long asc, dsc, ht, wd;
+ long i;
+ long n_horz, n_horz_pad, n_vert, n_asc, n_dsc;
+ long v_start, v_end;
+ char *target_ptr;
+ long offset;
+ char *ptr;
+ int y;
+ long lsb, aalsb, aahstart;
+ int memsize;
+ LONG paddedW;
+ int savelevel;
+
+
+ /* Reset character glyph, if necessary */
+ if (aastring_glyph.bits!=NULL){
+ free(aastring_glyph.bits);
+ aastring_glyph.bits=NULL;
+ }
+ aastring_glyph.metrics.leftSideBearing=0;
+ aastring_glyph.metrics.rightSideBearing=0;
+ aastring_glyph.metrics.advanceX=0;
+ aastring_glyph.metrics.advanceY=0;
+ aastring_glyph.metrics.ascent=0;
+ aastring_glyph.metrics.descent=0;
+ aastring_glyph.pFontCacheInfo=NULL;
+ aastring_glyph.bpp=T1aa_bpp;
+
+
+ /* Check for smart antialiasing */
+ savelevel=T1aa_level;
+ if (T1aa_SmartOn){
+ if (size>=T1aa_smartlimit2) {
+ T1aa_level=T1_AA_NONE;
+ }
+ else if (size>=T1aa_smartlimit1) {
+ T1aa_level=T1_AA_LOW;
+ }
+ else {
+ T1aa_level=T1_AA_HIGH;
+ }
+ }
+
+ /* First, call routine to rasterize character, all error checking is
+ done in this function: */
+ if ((glyph=T1_SetString( FontID, string, len, spaceoff,
+ modflag, T1aa_level*size, transform))==NULL){
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL); /* An error occured */
+ }
+
+ /* In case there are no black pixels, we simply set the dimensions and
+ then return */
+ if ( glyph->bits == NULL) {
+ aastring_glyph.bits=NULL;
+ aastring_glyph.metrics.leftSideBearing=0;
+ aastring_glyph.metrics.rightSideBearing=0;
+ aastring_glyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aastring_glyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aastring_glyph.metrics.ascent=0;
+ aastring_glyph.metrics.descent=0;
+ aastring_glyph.pFontCacheInfo=NULL;
+ /* restore level and return */
+ T1aa_level=savelevel;
+ return(&aastring_glyph);
+ }
+
+
+ /* Get dimensions of bitmap: */
+ asc=glyph->metrics.ascent;
+ dsc=glyph->metrics.descent;
+ lsb=glyph->metrics.leftSideBearing;
+ ht=asc-dsc;
+ wd=glyph->metrics.rightSideBearing-lsb;
+
+ if (T1aa_level==T1_AA_NONE){
+ /* we only convert bitmap to bytemap */
+ aastring_glyph=*glyph;
+ aastring_glyph.bpp=T1aa_bpp;
+ /* Compute scanline length and such */
+ n_horz_pad=PAD( wd*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*ht*8;
+ aastring_glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (aastring_glyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ paddedW=PAD(wd,pFontBase->bitmap_pad)>>3;
+ ptr=glyph->bits;
+ target_ptr=aastring_glyph.bits;
+ for (i = 0; i < ht; i++) {
+ T1_DoLine ( wd, paddedW, ptr, target_ptr );
+ ptr += paddedW;
+ target_ptr += n_horz_pad;
+ }
+ /* restore level */
+ T1aa_level=savelevel;
+ return(&aastring_glyph);
+ }
+
+
+ /* Set some looping parameters for subsampling */
+ if (lsb<0){
+ aalsb=lsb/T1aa_level-1;
+ aahstart=T1aa_level+(lsb%T1aa_level);
+ }
+ else{
+ aalsb=lsb/T1aa_level;
+ aahstart=lsb%T1aa_level;
+ }
+
+ /* The horizontal number of steps: */
+ n_horz=(wd+aahstart+T1aa_level-1)/T1aa_level;
+ /* And the padded value */
+ n_horz_pad=PAD( n_horz*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+
+ /* vertical number of steps: */
+ if (asc % T1aa_level){ /* not aligned */
+ if ( asc > 0){
+ n_asc=asc/T1aa_level+1;
+ v_start=asc % T1aa_level;
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level + (asc % T1aa_level);
+ }
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level;
+ }
+ if (dsc % T1aa_level){ /* not aligned */
+ if ( dsc < 0){
+ n_dsc=dsc/T1aa_level-1;
+ v_end=-(dsc % T1aa_level);
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level - (dsc % T1aa_level);
+ }
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level;
+ }
+ /* the total number of lines: */
+ n_vert=n_asc-n_dsc;
+
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*n_vert;
+
+ /* Note: we allocate 12 bytes more than necessary */
+ aastring_glyph.bits = (char *)malloc(memsize*sizeof( char) +12);
+ if (aastring_glyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ paddedW=PAD(wd,pFontBase->bitmap_pad)/8;
+ offset=0;
+ target_ptr=aastring_glyph.bits;
+
+ /* We must check for n_vert==1 because then both v_start and v_end could / will
+ affect the same AA scan line.
+ */
+ if (n_vert==1) {
+ v_start=v_start - (T1aa_level - v_end);
+ }
+
+ ptr = glyph->bits;
+ for (i = 0; i < n_vert; i++) {
+ if (i==0)
+ y=v_start;
+ else if (i==n_vert-1)
+ y=v_end;
+ else
+ y=T1aa_level;
+ T1_AADoLine ( T1aa_level, wd, y, paddedW, ptr, target_ptr, aahstart );
+ ptr += y * paddedW;
+ target_ptr += n_horz_pad;
+ }
+
+ /* .. and set them in aastring_glyph */
+ aastring_glyph.metrics.leftSideBearing=aalsb;
+ aastring_glyph.metrics.rightSideBearing=aalsb + n_horz;
+ aastring_glyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aastring_glyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aastring_glyph.metrics.ascent=n_asc;
+ aastring_glyph.metrics.descent=n_dsc;
+ aastring_glyph.pFontCacheInfo=NULL;
+
+ /* restore level */
+ T1aa_level=savelevel;
+
+ return(&aastring_glyph);
+}
+
+
+
+/* T1_AASetRect(): Raster a rectangle, whose size is given in charspace units.
+ The resulting glyph does not cause any escapement. */
+GLYPH* T1_AASetRect( int FontID, float size,
+ float width, float height, T1_TMATRIX *transform)
+{
+ GLYPH *glyph; /* pointer to bitmap glyph */
+ static GLYPH aaglyph={NULL,{0,0,0,0,0,0},NULL,DEFAULTBPP};/* The anti-aliased glyph */
+ long asc, dsc, ht, wd;
+ long i;
+ long n_horz, n_horz_pad, n_vert, n_asc, n_dsc;
+ long v_start, v_end;
+ char *target_ptr;
+ long offset;
+ char *ptr;
+ int y;
+ long lsb, aalsb, aahstart;
+ int memsize;
+ LONG paddedW;
+ int savelevel;
+
+
+ /* Reset character glyph, if necessary */
+ if (aaglyph.bits!=NULL){
+ free(aaglyph.bits);
+ aaglyph.bits=NULL;
+ }
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=0;
+ aaglyph.metrics.advanceY=0;
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ aaglyph.bpp=T1aa_bpp;
+
+
+ /* Check for smart antialiasing */
+ savelevel=T1aa_level;
+ if (T1aa_SmartOn){
+ if (size>=T1aa_smartlimit2) {
+ T1aa_level=T1_AA_NONE;
+ }
+ else if (size>=T1aa_smartlimit1) {
+ T1aa_level=T1_AA_LOW;
+ }
+ else {
+ T1aa_level=T1_AA_HIGH;
+ }
+ }
+
+
+ /* First, call routine to rasterize character, all error checking is
+ done in this function: */
+ if ((glyph=T1_SetRect( FontID, T1aa_level*size, width, height, transform))==NULL){
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL); /* An error occured */
+ }
+
+ /* In case there are no black pixels, we simply set the dimensions and
+ then return */
+ if ( glyph->bits == NULL) {
+ aaglyph.bits=NULL;
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ /* restore level and return */
+ T1aa_level=savelevel;
+ return(&aaglyph);
+ }
+
+ /* Get dimensions of bitmap: */
+ asc=glyph->metrics.ascent;
+ dsc=glyph->metrics.descent;
+ lsb=glyph->metrics.leftSideBearing;
+ ht=asc-dsc;
+ wd=glyph->metrics.rightSideBearing-lsb;
+
+ if (T1aa_level==T1_AA_NONE){
+ /* we only convert bitmap to bytemap */
+ aaglyph=*glyph;
+ aaglyph.bpp=T1aa_bpp;
+ /* Compute scanline length and such */
+ n_horz_pad=PAD( wd*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*ht*8;
+ /* aaglyph.bits = (char *)malloc(memsize*sizeof( char)); */
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+ paddedW=PAD(wd,pFontBase->bitmap_pad)>>3;
+ ptr=glyph->bits;
+ target_ptr=aaglyph.bits;
+ for (i = 0; i < ht; i++) {
+ T1_DoLine ( wd, paddedW, ptr, target_ptr );
+ ptr += paddedW;
+ target_ptr += n_horz_pad;
+ }
+ /* restore level */
+ T1aa_level=savelevel;
+ return(&aaglyph);
+ }
+
+
+ /* Set some looping parameters for subsampling */
+ if (lsb<0){
+ aalsb=lsb/T1aa_level-1;
+ aahstart=T1aa_level+(lsb%T1aa_level);
+ }
+ else{
+ aalsb=lsb/T1aa_level;
+ aahstart=lsb%T1aa_level;
+ }
+
+ /* The horizontal number of steps: */
+ n_horz=(wd+aahstart+T1aa_level-1)/T1aa_level;
+ /* And the padded value */
+ n_horz_pad=PAD( n_horz*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+
+ /* vertical number of steps: */
+ if (asc % T1aa_level){ /* not aligned */
+ if ( asc > 0){
+ n_asc=asc/T1aa_level+1;
+ v_start=asc % T1aa_level;
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level + (asc % T1aa_level);
+ }
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level;
+ }
+ if (dsc % T1aa_level){ /* not aligned */
+ if ( dsc < 0){
+ n_dsc=dsc/T1aa_level-1;
+ v_end=-(dsc % T1aa_level);
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level - (dsc % T1aa_level);
+ }
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level;
+ }
+ /* the total number of lines: */
+ n_vert=n_asc-n_dsc;
+
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*n_vert;
+
+ /* Note: we allocate 12 bytes more than necessary */
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char) +12);
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* restore level */
+ T1aa_level=savelevel;
+ return(NULL);
+ }
+
+
+ paddedW=PAD(wd,pFontBase->bitmap_pad)/8;
+ offset=0;
+ target_ptr=aaglyph.bits;
+
+ /* We must check for n_vert==1 because then both v_start and v_end could / will
+ affect the same AA scan line.
+ */
+ if (n_vert==1) {
+ v_start=v_start - (T1aa_level - v_end);
+ }
+
+ ptr = glyph->bits;
+ for (i = 0; i < n_vert; i++) {
+ if (i==0)
+ y=v_start;
+ else if (i==n_vert-1)
+ y=v_end;
+ else
+ y=T1aa_level;
+ T1_AADoLine ( T1aa_level, wd, y, paddedW, ptr, target_ptr, aahstart );
+ ptr += y * paddedW;
+ target_ptr += n_horz_pad;
+ }
+
+ /* .. and set them in aaglyph */
+ aaglyph.metrics.leftSideBearing=aalsb;
+ aaglyph.metrics.rightSideBearing=aalsb + n_horz;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=n_asc;
+ aaglyph.metrics.descent=n_dsc;
+ aaglyph.pFontCacheInfo=NULL;
+
+ /* restore level */
+ T1aa_level=savelevel;
+
+ return(&aaglyph);
+
+}
+
+
+
+/* T1_AASetGrayValues(): Sets the byte values that are put into the
+ pixel position for the respective entries:
+ Returns 0 if successfull.
+ */
+int T1_AASetGrayValues(unsigned long white,
+ unsigned long gray75,
+ unsigned long gray50,
+ unsigned long gray25,
+ unsigned long black)
+{
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ gv[4]=(unsigned T1_AA_TYPE32)black; /* black value */
+ gv[3]=(unsigned T1_AA_TYPE32)gray25; /* gray 25% value */
+ gv[2]=(unsigned T1_AA_TYPE32)gray50; /* gray 50% value */
+ gv[1]=(unsigned T1_AA_TYPE32)gray75; /* gray 75% value */
+ gv[0]=(unsigned T1_AA_TYPE32)white; /* white value */
+
+ T1aa_bg=white;
+
+ if ((T1_AAInit( T1_AA_LOW)))
+ return(-1);
+ return(0);
+
+}
+
+
+
+/* T1_AAHSetGrayValues(): Sets the byte values that are put into the
+ pixel position for the respective entries (for 17 gray levels):
+ Returns 0 if successfull.
+ */
+int T1_AAHSetGrayValues( unsigned long *grayvals)
+{
+ int i;
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ /* 0==white(background) ... 16==black(foreground) */
+ for (i=0; i<17; i++){
+ gv_h[i]=(unsigned T1_AA_TYPE32)grayvals[i];
+ }
+
+
+ T1aa_bg=grayvals[0];
+
+ if ((T1_AAInit( T1_AA_HIGH)))
+ return(-1);
+ return(0);
+
+}
+
+
+
+/* T1_AANSetGrayValues(): Sets the byte values that are put into the
+ pixel position for the respective entries (for 2 gray levels):
+ Returns 0 if successfull. This is for the case the non-antialiased
+ "bytemaps" should be generated.
+ */
+int T1_AANSetGrayValues( unsigned long bg, unsigned long fg)
+{
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ gv_n[0]=bg;
+ gv_n[1]=fg;
+
+ T1aa_bg=bg;
+
+ if ((T1_AAInit( T1_AA_NONE)))
+ return(-1);
+ return(0);
+
+}
+
+
+
+/* Get the current setting of graylevels for 2x antialiasing. The 5
+ values are stored at address pgrayvals in order from background to
+ foreground */
+int T1_AAGetGrayValues( long *pgrayvals)
+{
+ int i;
+
+ if (T1_CheckForInit()) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ if (pgrayvals==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ for ( i=0; i<5; i++) { /* bg (i=0) to fg (i=4) */
+ pgrayvals[i]=gv[i];
+ }
+ return( 0);
+
+}
+
+
+
+/* Get the current setting of graylevels for 4x antialiasing. The 17
+ values are stored at address pgrayvals in order from background to
+ foreground */
+int T1_AAHGetGrayValues( long *pgrayvals)
+{
+ int i;
+
+ if (T1_CheckForInit()) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ if (pgrayvals==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ for ( i=0; i<17; i++) { /* bg (i=0) to fg (i=16) */
+ pgrayvals[i]=gv_h[i];
+ }
+ return( 0);
+}
+
+
+
+/* Get the current setting of graylevels for no antialiasing. The 2
+ values are stored at address pgrayvals in order from background to
+ foreground */
+int T1_AANGetGrayValues( long *pgrayvals)
+{
+
+ if (T1_CheckForInit()) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ if (pgrayvals==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+ pgrayvals[0]=gv_n[0]; /* background */
+ pgrayvals[1]=gv_n[1]; /* foreground */
+ return( 0);
+}
+
+
+/* T1_AASetBitsPerPixel(): Sets the depths of the antialiased glyph
+ pixel. Returns 0 if bpp is valid and -1 otherwise. If 24 is
+ specified, meaning to be the depth rather than the bpp-value,
+ automatically 32 bpp is chosen. */
+int T1_AASetBitsPerPixel( int bpp)
+{
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+
+ /* T1aa_level = 0; */
+
+ if (bpp==8){
+ T1aa_bpp=8;
+ return(0);
+ }
+ if (bpp==16){
+ T1aa_bpp=16;
+ return(0);
+ }
+ if ((bpp==32)|(bpp==24)){
+ T1aa_bpp=32;
+ return(0);
+ }
+
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+}
+
+
+/* T1_AAGetBitsPerPixel(): Return the number of bits per pixel set in
+ t1lib.
+*/
+int T1_AAGetBitsPerPixel( void)
+{
+ return( T1aa_bpp);
+
+}
+
+
+/* Set the Subsampling level for subsequent operations: */
+int T1_AASetLevel( int level)
+{
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ if (level==T1_AA_LOW){
+ T1aa_level=T1_AA_LOW;
+ return(0);
+ }
+ else if (level==T1_AA_HIGH){
+ T1aa_level=T1_AA_HIGH;
+ return(0);
+ }
+ else if (level==T1_AA_NONE){
+ T1aa_level=T1_AA_NONE;
+ return(0);
+ }
+
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+
+}
+
+
+/* Get the current subsampling level */
+int T1_AAGetLevel( void)
+{
+ return( T1aa_level);
+}
+
+
+/* T1_AAFillOutline(): Create a filled glyph from an outline description */
+GLYPH *T1_AAFillOutline( T1_OUTLINE *path, int modflag)
+{
+
+ GLYPH *glyph; /* pointer to bitmap glyph */
+ static GLYPH aaglyph={NULL,{0,0,0,0,0,0},NULL,DEFAULTBPP};/* The anti-aliased glyph */
+ long asc, dsc, ht, wd;
+ long i;
+ long n_horz, n_horz_pad, n_vert, n_asc, n_dsc;
+ long v_start, v_end;
+ char *target_ptr;
+ long offset;
+ char *ptr;
+ int y;
+ long lsb, aalsb, aahstart;
+ int memsize;
+ LONG paddedW;
+
+
+ /* Reset character glyph, if necessary */
+ if (aaglyph.bits!=NULL){
+ free(aaglyph.bits);
+ aaglyph.bits=NULL;
+ }
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=0;
+ aaglyph.metrics.advanceY=0;
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ aaglyph.bpp=T1aa_bpp;
+
+
+ /* First, scale outline appropriately: */
+ path=T1_ScaleOutline( path, T1aa_level);
+
+ /* Second, call routine to fill outline, all error checking is
+ done in this function: */
+ if ((glyph=T1_FillOutline( path, modflag))==NULL)
+ return(NULL); /* An error occured */
+
+ /* In case there are no black pixels, we simply set the dimensions and
+ then return */
+ if ( glyph->bits == NULL) {
+ aaglyph.bits=NULL;
+ aaglyph.metrics.leftSideBearing=0;
+ aaglyph.metrics.rightSideBearing=0;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=0;
+ aaglyph.metrics.descent=0;
+ aaglyph.pFontCacheInfo=NULL;
+ return(&aaglyph);
+ }
+
+ /* Get dimensions of bitmap: */
+ asc=glyph->metrics.ascent;
+ dsc=glyph->metrics.descent;
+ lsb=glyph->metrics.leftSideBearing;
+ ht=asc-dsc;
+ wd=glyph->metrics.rightSideBearing-lsb;
+
+
+ if (T1aa_level==T1_AA_NONE){
+ /* we only convert bitmap to bytemap */
+ aaglyph=*glyph;
+ aaglyph.bpp=T1aa_bpp;
+ /* Compute scanline length and such */
+ n_horz_pad=PAD( wd*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+ /* Allocate memory for glyph, we alloc 12 bytes more to simplify
+ subsampling! */
+ memsize = n_horz_pad*ht*8;
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char) +12);
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ paddedW=PAD(wd,pFontBase->bitmap_pad)>>3;
+ ptr=glyph->bits;
+ target_ptr=aaglyph.bits;
+ for (i = 0; i < ht; i++) {
+ T1_DoLine ( wd, paddedW, ptr, target_ptr );
+ ptr += paddedW;
+ target_ptr += n_horz_pad;
+ }
+ return(&aaglyph);
+ }
+
+
+ /* Set some looping parameters for subsampling */
+ if (lsb<0){
+ aalsb=lsb/T1aa_level-1;
+ aahstart=T1aa_level+(lsb%T1aa_level);
+ }
+ else{
+ aalsb=lsb/T1aa_level;
+ aahstart=lsb%T1aa_level;
+ }
+
+ /* The horizontal number of steps: */
+ n_horz=(wd+aahstart+T1aa_level-1)/T1aa_level;
+ /* And the padded value */
+ n_horz_pad=PAD( n_horz*T1aa_bpp, pFontBase->bitmap_pad )>>3;
+
+ /* vertical number of steps: */
+ if (asc % T1aa_level){ /* not aligned */
+ if ( asc > 0){
+ n_asc=asc/T1aa_level+1;
+ v_start=asc % T1aa_level;
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level + (asc % T1aa_level);
+ }
+ }
+ else{
+ n_asc=asc/T1aa_level;
+ v_start=T1aa_level;
+ }
+ if (dsc % T1aa_level){ /* not aligned */
+ if ( dsc < 0){
+ n_dsc=dsc/T1aa_level-1;
+ v_end=-(dsc % T1aa_level);
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level - (dsc % T1aa_level);
+ }
+ }
+ else{
+ n_dsc=dsc/T1aa_level;
+ v_end=T1aa_level;
+ }
+ /* the total number of lines: */
+ n_vert=n_asc-n_dsc;
+
+ /* Allocate memory for glyph */
+ memsize = n_horz_pad*n_vert;
+
+ aaglyph.bits = (char *)malloc(memsize*sizeof( char)+12);
+ if (aaglyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ paddedW=PAD(wd,pFontBase->bitmap_pad)/8;
+ offset=0;
+ target_ptr=aaglyph.bits;
+
+ /* We must check for n_vert==1 because then both v_start and v_end could / will
+ affect the same AA scan line.
+ */
+ if (n_vert==1) {
+ v_start=v_start - (T1aa_level - v_end);
+ }
+
+ ptr = glyph->bits;
+ for (i = 0; i < n_vert; i++) {
+ if (i==0)
+ y=v_start;
+ else if (i==n_vert-1)
+ y=v_end;
+ else
+ y=T1aa_level;
+ T1_AADoLine ( T1aa_level, wd, y, paddedW, ptr, target_ptr, aahstart );
+ ptr += y * paddedW;
+ target_ptr += n_horz_pad;
+ }
+
+ /* .. and set them in aaglyph */
+ aaglyph.metrics.leftSideBearing=aalsb;
+ aaglyph.metrics.rightSideBearing=aalsb + n_horz;
+ aaglyph.metrics.advanceX=(int) floor(glyph->metrics.advanceX/(float)T1aa_level+0.5);
+ aaglyph.metrics.advanceY=(int) floor(glyph->metrics.advanceY/(float)T1aa_level+0.5);
+ aaglyph.metrics.ascent=n_asc;
+ aaglyph.metrics.descent=n_dsc;
+ aaglyph.pFontCacheInfo=NULL;
+
+ return(&aaglyph);
+}
+
+
+
+/* T1_AASetSmartLimits(): Set the limit-values for smart
+ antialiasing. Returns 0 if OK, and -1 else. */
+int T1_AASetSmartLimits( float limit1, float limit2)
+{
+
+ if (limit1 > 0.0 && limit2 > 0.0 && limit2 >= limit2) {
+ T1aa_smartlimit1=limit1;
+ T1aa_smartlimit2=limit2;
+ return( 0);
+ }
+ else{
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( -1);
+ }
+}
+
+
+
+/* T1_AASetSmartMode(): Enable or disable smart anialiasing */
+int T1_AASetSmartMode( int smart)
+{
+
+ if (smart==T1_YES) {
+ T1aa_SmartOn=1;
+ }
+ else if (smart==T1_NO) {
+ T1aa_SmartOn=0;
+ }
+ else {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( -1);
+ }
+ return( 0);
+}
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.h
new file mode 100644
index 00000000000..1415ee5ce28
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1aaset.h
@@ -0,0 +1,85 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1aaset.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-01-02
+ ----- Description: This file is part of the t1-library. It contains
+ definitions and declarations for t1set.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1AASET_C
+
+GLYPH *T1_AASetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_AASetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+GLYPH* T1_AASetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+int T1_AASetGrayValues( unsigned long white,
+ unsigned long gray75,
+ unsigned long gray50,
+ unsigned long gray25,
+ unsigned long black);
+int T1_AAHSetGrayValues( unsigned long *grayvals);
+int T1_AANSetGrayValues( unsigned long fg, unsigned long bg);
+int T1_AAGetGrayValues( long *pgrayvals);
+int T1_AAHGetGrayValues( long *pgrayvals);
+int T1_AANGetGrayValues( long *pgrayvals);
+int T1_AASetBitsPerPixel( int bpp);
+int T1_AAGetBitsPerPixel( void);
+int T1_AASetLevel( int level);
+int T1_AAGetLevel( void);
+GLYPH *T1_AAFillOutline( T1_OUTLINE *path, int modflag);
+int T1_AASetSmartLimits( float limit1, float limit2);
+int T1_AASetSmartMode( int smart);
+
+#else
+
+extern GLYPH *T1_AASetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH* T1_AASetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern int T1_AASetGrayValues( unsigned long white,
+ unsigned long gray75,
+ unsigned long gray50,
+ unsigned long gray25,
+ unsigned long black);
+extern int T1_AAHSetGrayValues( unsigned long *grayvals);
+extern int T1_AANSetGrayValues( unsigned long bg, unsigned long fg);
+extern int T1_AAGetGrayValues( long *pgrayvals);
+extern int T1_AAHGetGrayValues( long *pgrayvals);
+extern int T1_AANGetGrayValues( long *pgrayvals);
+extern int T1_AASetBitsPerPixel( int bpp);
+extern int T1_AAGetBitsPerPixel( void);
+extern int T1_AASetLevel( int level);
+extern int T1_AAGetLevel( void);
+extern GLYPH *T1_AAFillOutline( T1_OUTLINE *path, int modflag);
+extern int T1_AASetSmartLimits( float limit1, float limit2);
+extern int T1_AASetSmartMode( int smart);
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.c
new file mode 100644
index 00000000000..9a1fae36377
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.c
@@ -0,0 +1,589 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1afmtool.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2007-12-23
+ ----- Description: This file is part of the t1-library. It contains
+ functions for generating a fallback set of afm data
+ from type 1 font files.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1AFMTOOL_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+#include "../type1/blues.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1finfo.h"
+#include "t1base.h"
+#include "t1misc.h"
+#include "t1set.h"
+#include "t1load.h"
+#include "t1afmtool.h"
+
+
+#define DELTA_MAX 30
+#define ENCODINGSIZE (int) 256
+#ifndef T1LIB_IDENT
+#define T1LIB_IDENT "???.???"
+#endif
+
+
+extern char *t1_get_abort_message( int number);
+
+
+/* T1_GenerateAFMFallbackInfo(): Generate fallback information from
+ Type 1 font file by rasterizing every character at 1000 bp. Returns
+ a pointer to a generated FontInfo struct or NULL in case of an error.
+ */
+FontInfo *T1_GenerateAFMFallbackInfo( int FontID)
+{
+ int i, j;
+ struct region *area;
+ struct XYspace *S;
+ int mode=0;
+ char **charnames;
+ int nochars=0;
+ FontInfo *pAFMData;
+
+ /* When generaing fallback info, we accumulate a font bounding box that
+ could be useful when the font's definition is missing or trivial. */
+ int acc_llx=0;
+ int acc_lly=0;
+ int acc_urx=0;
+ int acc_ury=0;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ sprintf( err_warn_msg_buf,
+ "Can't generate AFM Info from Font %d (invalid ID)\n", FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* Setup apropriate charspace matrix */
+ S=(struct XYspace *)IDENTITY;
+ /* Make this permanent so that scaling it in fontfcnB_ByName will
+ make a duplicate of it, and this duplicate can thus be safely
+ destroyed. Fixes the somewhat smaller memory leak */
+ S=(struct XYspace *)Permanent
+ (Transform(S, pFontBase->pFontArray[FontID].FontTransform[0],
+ pFontBase->pFontArray[FontID].FontTransform[1],
+ pFontBase->pFontArray[FontID].FontTransform[2],
+ pFontBase->pFontArray[FontID].FontTransform[3]));
+
+ /* Alloc memory for FontInfo: */
+ if ((pAFMData=(FontInfo *)malloc( sizeof(FontInfo)))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Failed to allocate memory for FontInfo in Font %d!", FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return( NULL);
+ }
+ /* Initialize pointers */
+ pAFMData->gfi=NULL;
+ pAFMData->cwi=NULL;
+ pAFMData->numOfChars=0;
+ pAFMData->cmi=NULL;
+ pAFMData->numOfTracks=0;
+ pAFMData->tkd=NULL;
+ pAFMData->numOfPairs=0;
+ pAFMData->pkd=NULL;
+ pAFMData->numOfComps=0;
+ pAFMData->ccd=NULL;
+
+ /* Get list of character name */
+ charnames=T1_GetAllCharNames( FontID);
+ /* and count number of characters */
+ nochars=0;
+
+ while (charnames[nochars]!=NULL)
+ nochars++;
+ pAFMData->numOfChars=nochars;
+ /* Allocate memory for CharMetricInfo area */
+ if ((pAFMData->cmi=(CharMetricInfo *)
+ malloc( nochars * sizeof( CharMetricInfo)))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Failed to allocate memory for CharMetricsInfo area in Font %d!",
+ FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ free( pAFMData);
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return( NULL);
+ }
+ /* Get metrics values */
+ for (i=0; i<nochars; i++){
+ area=fontfcnB_ByName( FontID, 0, S, charnames[i], &mode,
+ pFontBase->pFontArray[FontID].pType1Data, DO_RASTER);
+
+ if (area==NULL){
+ sprintf( err_warn_msg_buf,
+ "Could not get charspace representation of character %d (%s) Font %d!",
+ i, charnames[i], FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ /* Return since we don't know how to fill the values */
+ for (j=i-1; j>=0; j--)
+ free( pAFMData->cmi[j].name);
+ if (pAFMData->cmi!=NULL)
+ free( pAFMData->cmi);
+ if (pAFMData!=NULL)
+ free( pAFMData);
+ T1_errno=mode;
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return( NULL);
+ }
+ else if ((pAFMData->cmi[i].name=(char *)
+ malloc( (size_t)(strlen( charnames[i])+1)))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Failed to allocate memory for CharName %d (%s) Font %d!",
+ i, charnames[i], FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ /* NULL-ptr in charnames is prone to SIGSEGV-errors, thus,
+ we have to return: */
+ for (j=i; j>=0; j--)
+ free( pAFMData->cmi[j].name);
+ free( pAFMData->cmi);
+ free( pAFMData);
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return( NULL);
+ }
+ else{
+ strcpy( pAFMData->cmi[i].name, charnames[i]);
+ pAFMData->cmi[i].code=T1_GetEncodingIndex( FontID, charnames[i]);
+ pAFMData->cmi[i].wx=NEARESTPEL(area->ending.x);
+ pAFMData->cmi[i].wy=NEARESTPEL(area->ending.y);
+ /* We check for a valid BBox and set it to zero otherwise */
+ if ((int)area->xmax > (int)area->xmin){
+ pAFMData->cmi[i].charBBox.llx =(int)area->xmin;
+ pAFMData->cmi[i].charBBox.urx =(int)area->xmax;
+ pAFMData->cmi[i].charBBox.lly =(int)area->ymin;
+ pAFMData->cmi[i].charBBox.ury =(int)area->ymax;
+ }
+ else{
+ pAFMData->cmi[i].charBBox.llx =0;
+ pAFMData->cmi[i].charBBox.urx =0;
+ pAFMData->cmi[i].charBBox.lly =0;
+ pAFMData->cmi[i].charBBox.ury =0;
+ }
+ pAFMData->cmi[i].ligs=NULL;
+
+ /* Accumulate bounding box of font */
+ if ( pAFMData->cmi[i].charBBox.llx < acc_llx ) {
+ acc_llx=pAFMData->cmi[i].charBBox.llx;
+ }
+ if ( pAFMData->cmi[i].charBBox.lly < acc_lly ) {
+ acc_lly=pAFMData->cmi[i].charBBox.lly;
+ }
+ if ( pAFMData->cmi[i].charBBox.urx > acc_urx ) {
+ acc_urx=pAFMData->cmi[i].charBBox.urx;
+ }
+ if ( pAFMData->cmi[i].charBBox.ury > acc_ury ) {
+ acc_ury=pAFMData->cmi[i].charBBox.ury;
+ }
+
+ /* We are done with area, so get rid of it. Solves the REALLY
+ HUGE memory leak */
+ KillRegion (area);
+ }
+ }
+ sprintf( err_warn_msg_buf,
+ "Generated metric information for %d characters of font %d!",
+ nochars, FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_STATISTIC);
+
+ /* Check whether the bounding box we computed could be better than that
+ specified in the font file itself. Id so, we overwrite it. */
+ if ( pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[0].data.integer == 0 &&
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[1].data.integer == 0 &&
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[2].data.integer == 0 &&
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[3].data.integer == 0 ) {
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[0].data.integer = acc_llx;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[1].data.integer = acc_lly;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[2].data.integer = acc_urx;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[3].data.integer = acc_ury;
+
+ sprintf( err_warn_msg_buf,
+ "Substituted accumulated FontBBox [%d,%d,%d,%d] for trivial FontBBox of font %d!",
+ acc_llx, acc_lly, acc_urx, acc_ury, FontID);
+ T1_PrintLog( "T1_GenerateAFMFallbackInfo()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ }
+
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return( pAFMData);
+}
+
+
+/* T1_WriteAFMFallbackFile(): Write a fallback AFM-file from AFM data
+ genarated for font FontID. returns
+ 0 if successful
+ -1 if afm-data was loaded from existent AFM-file
+ -2 if font is not loaded (invalid FontID)
+ -3 if for some reason the fonts' AFM-data has not been generated
+ -4 if the file could not be openend
+ -5 if an error occurred during write
+ -6 other error.
+ */
+int T1_WriteAFMFallbackFile( int FontID)
+{
+
+ int i, j, k, l;
+
+ int nochars;
+ int capheight, ascender, xheight, descender;
+ int min=0, delta;
+ time_t s_clock, *tp;
+
+ char *afmfilename;
+ FILE *afmfile;
+ CharMetricInfo **cmi;
+
+
+ /* Check for valid font */
+ if (T1_CheckForFontID(FontID)!=1){
+ sprintf( err_warn_msg_buf,
+ "Warning: Invalid FontID, font %d not loaded!",
+ FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-2);
+ }
+
+ /* Check for AFM-data to be existent */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL){
+ sprintf( err_warn_msg_buf,
+ "Warning: No AFM-Data available for font %d",
+ FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ return(-3);
+ }
+
+ /* Check if AFM data has been generated from existent afm file -->
+ no need to generate a new one. */
+ if ((pFontBase->pFontArray[FontID].info_flags & AFM_SUCCESS)
+ || (pFontBase->pFontArray[FontID].info_flags & AFM_SLOPPY_SUCCESS)){
+ sprintf( err_warn_msg_buf,
+ "Alert: Available AFM-Data for font %d is generated from existent AFM-file!",
+ FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_STATISTIC);
+ return(-1);
+ }
+
+ /* Construct AFM-filename */
+ i=strlen(pFontBase->pFontArray[FontID].pFontFileName);
+ if ((afmfilename=(char *)malloc((size_t)(i + 1) ))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Memory allocation error (fontID = %d)",
+ FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-6);
+ }
+ strcpy( afmfilename, pFontBase->pFontArray[FontID].pFontFileName);
+ while (afmfilename[i]!='.')
+ i--;
+ afmfilename[i+1]='a';
+ afmfilename[i+2]='f';
+ afmfilename[i+3]='m';
+
+ if ((afmfile=fopen( afmfilename, "wb"))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Could not open %s, (FontID = %d)",
+ afmfilename, FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ free( afmfilename);
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(-4);
+ }
+
+ /* Set the creation time of afm file */
+ tp=&s_clock;
+ s_clock=time( tp);
+
+ /* Allocate a pointer-array to the metrics information,
+ of the size 256 + number of characters. */
+ nochars=pFontBase->pFontArray[FontID].pAFMData->numOfChars;
+ if ((cmi=(CharMetricInfo **)calloc( nochars+ENCODINGSIZE,
+ sizeof(CharMetricInfo *)))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Memory allocation error (fontID = %d)",
+ FontID);
+ T1_PrintLog( "T1_WriteAFMFallbackFile()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-6);
+ }
+ /* Reset area */
+ for ( i=0; i<(nochars+ENCODINGSIZE); i++)
+ cmi[i]=NULL;
+ /* First half of array is dedicated to encoded characters, the
+ second half for unencoded characters */
+ k=ENCODINGSIZE;
+ for ( i=0; i<nochars; i++){
+ j=T1_GetEncodingIndex( FontID,
+ pFontBase->pFontArray[FontID].pAFMData->cmi[i].name);
+ if (j>=0)
+ cmi[j]=&(pFontBase->pFontArray[FontID].pAFMData->cmi[i]);
+ else
+ cmi[k++]=&(pFontBase->pFontArray[FontID].pAFMData->cmi[i]);
+ }
+
+ fprintf(afmfile, "StartFontMetrics 4.0\n");
+ fprintf(afmfile, "Comment This is %s created from %s by t1lib V. %s.\n",
+ afmfilename, pFontBase->pFontArray[FontID].pFontFileName,
+ T1LIB_IDENT);
+ fprintf(afmfile, "Comment File creation date: %s", ctime(&s_clock));
+ fprintf(afmfile, "Comment t1lib is copyright (c) Rainer Menzner, 1996-2001.\n");
+ fprintf(afmfile, "Comment t1lib is distributed under the GNU General Public Library License (LGPL)\n");
+ fprintf(afmfile, "FontName %s\n", T1_GetFontName( FontID));
+ fprintf(afmfile, "FullName %s\n", T1_GetFullName( FontID));
+ fprintf(afmfile, "FamilyName %s\n", T1_GetFamilyName( FontID));
+ fprintf(afmfile, "Weight %s\n", T1_GetWeight( FontID));
+ fprintf(afmfile, "ItalicAngle %d\n", (int)T1_GetItalicAngle( FontID));
+ fprintf(afmfile, "IsFixedPitch %s\n", T1_GetIsFixedPitch( FontID) ? "true" : "false" );
+ fprintf(afmfile, "FontBBox %d %d %d %d\n",
+ T1_GetFontBBox( FontID).llx,
+ T1_GetFontBBox( FontID).lly,
+ T1_GetFontBBox( FontID).urx,
+ T1_GetFontBBox( FontID).ury);
+ fprintf(afmfile, "UnderlinePosition %d\n",
+ (int)T1_GetUnderlinePosition( FontID));
+ fprintf(afmfile, "UnderlineThickness %d\n",
+ (int)T1_GetUnderlineThickness( FontID));
+
+ fprintf(afmfile, "Version %s\n", T1_GetVersion( FontID));
+ fprintf(afmfile, "Notice %s\n", T1_GetNotice( FontID));
+ /* Encoding */
+ if (pFontBase->pFontArray[FontID].pFontEnc==NULL){
+ if (pFontBase->pFontArray[FontID].info_flags & USES_STANDARD_ENCODING){
+ fprintf( afmfile, "EncodingScheme AdobeStandardEncoding\n");
+ }
+ else{
+ fprintf( afmfile, "EncodingScheme FontSpecific\n");
+ }
+ }
+ else
+ fprintf( afmfile, "EncodingScheme FontSpecific\n");
+ /* Values like capheight ascender xheight and descender */
+ /* We start with the overshoot positions */
+ i=pFontBase->pFontArray[FontID].pType1Data->BluesP->numBlueValues;
+ if (i>0){
+ /* Capheight */
+ if ((k=T1_GetEncodingIndex( FontID, "H"))!=-1){
+ l=T1_GetCharBBox( FontID, (char) k).ury;
+ delta=10000;
+ for (j=0; j<i; j++){
+ if (delta > abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l)){
+ min=j;
+ delta=abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l);
+ }
+ }
+ if (min % 2) /* index is odd */
+ min--;
+ /* Check for plausibility */
+ if (abs( pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min] - l)
+ > DELTA_MAX) /* We probably did not found the right position */
+ capheight=0;
+ else
+ capheight=pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min];
+ }
+ else
+ capheight=0;
+ /* XHeight */
+ if ((k=T1_GetEncodingIndex( FontID, "x"))!=-1){
+ l=T1_GetCharBBox( FontID, (char) k).ury;
+ delta=10000;
+ for (j=0; j<i; j++){
+ if (delta > abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l)){
+ min=j;
+ delta=abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l);
+ }
+ }
+ if (min % 2) /* index is odd */
+ min--;
+ /* Check for plausibility */
+ if (abs( pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min] - l)
+ > DELTA_MAX) /* We probably did not found the right position */
+ xheight=0;
+ else
+ xheight=pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min];
+ }
+ else{
+ xheight=0;
+ }
+ /* Ascender */
+ if ((k=T1_GetEncodingIndex( FontID, "d"))!=-1){
+ l=T1_GetCharBBox( FontID, (char) k).ury;
+ delta=10000;
+ for (j=0; j<i; j++){
+ if (delta > abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l)){
+ min=j;
+ delta=abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[j] - l);
+ }
+ }
+ if (min % 2) /* index is odd */
+ min--;
+ /* Check for plausibility */
+ if (abs( pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min] - l)
+ > DELTA_MAX) /* We probably did not found the right position */
+ ascender=0;
+ else
+ ascender=pFontBase->pFontArray[FontID].pType1Data->BluesP->BlueValues[min];
+ }
+ else{
+ ascender=0;
+ }
+ }
+ else{
+ capheight=0;
+ xheight=0;
+ ascender=0;
+ }
+ /* And now comes under shoot alignment position */
+ i=pFontBase->pFontArray[FontID].pType1Data->BluesP->numOtherBlues;
+ if (i>0){
+ /* Descender */
+ if ((k=T1_GetEncodingIndex( FontID, "p"))!=-1){
+ l=T1_GetCharBBox( FontID, (char) k).lly;
+ delta=10000;
+ for (j=0; j<i; j++){
+ if (delta > abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->OtherBlues[j] - l)){
+ min=j;
+ delta=abs(pFontBase->pFontArray[FontID].pType1Data->BluesP->OtherBlues[j] - l);
+ }
+ }
+ if ((min % 2)==0) /* index is even */
+ min++;
+ /* Check for plausibility */
+ if (abs( pFontBase->pFontArray[FontID].pType1Data->BluesP->OtherBlues[min] - l)
+ > DELTA_MAX) /* We probably did not found the right position */
+ descender=0;
+ else
+ descender=pFontBase->pFontArray[FontID].pType1Data->BluesP->OtherBlues[min];
+ }
+ else{
+ descender=0;
+ }
+ }
+ else{
+ descender=0;
+ }
+ if (capheight != 0)
+ fprintf( afmfile, "CapHeight %d\n", capheight);
+ if (xheight != 0)
+ fprintf( afmfile, "XHeight %d\n", xheight);
+ if (ascender != 0)
+ fprintf( afmfile, "Ascender %d\n", ascender);
+ if (descender != 0)
+ fprintf( afmfile, "Descender %d\n", descender);
+ if (pFontBase->pFontArray[FontID].pType1Data->BluesP->StdHW != 0.0)
+ fprintf( afmfile, "StdHW %d\n",
+ (int) pFontBase->pFontArray[FontID].pType1Data->BluesP->StdHW);
+ if (pFontBase->pFontArray[FontID].pType1Data->BluesP->StdVW != 0.0)
+ fprintf( afmfile, "StdVW %d\n",
+ (int) pFontBase->pFontArray[FontID].pType1Data->BluesP->StdVW);
+
+ /* Now fill in the values (we omit the .notdef) */
+ fprintf(afmfile, "StartCharMetrics %d\n", nochars-1);
+ for ( i=0; i<(nochars+ENCODINGSIZE); i++){
+ if (cmi[i]!=NULL && strcmp(cmi[i]->name,".notdef"))
+ fprintf( afmfile, "C %3d ; WX %4d ; N %-20s ; B %5d %5d %5d %5d ;\n",
+ cmi[i]->code, cmi[i]->wx, cmi[i]->name,
+ cmi[i]->charBBox.llx, cmi[i]->charBBox.lly,
+ cmi[i]->charBBox.urx, cmi[i]->charBBox.ury);
+ }
+ fprintf(afmfile, "EndCharMetrics\nEndFontMetrics\n");
+
+ free(cmi);
+ fclose( afmfile);
+ return(0);
+}
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.h
new file mode 100644
index 00000000000..6d54751d98a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1afmtool.h
@@ -0,0 +1,43 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1afmtool.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-04-01
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1afmtool.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1AFMTOOL_C
+
+FontInfo *T1_GenerateAFMFallbackInfo( int FontID);
+int T1_WriteAFMFallbackFile( int FontID);
+extern struct region *fontfcnB_ByName( int FontID, int modflag,
+ struct XYspace *S,
+ char *charname,
+ int *mode, psfont *Font_Ptr,
+ int do_raster);
+
+#else
+
+extern FontInfo *T1_GenerateAFMFallbackInfo( int FontID);
+extern int T1_WriteAFMFallbackFile( int FontID);
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.c
new file mode 100644
index 00000000000..269d2aa2dd1
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.c
@@ -0,0 +1,1400 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1base.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-17
+ ----- Description: This file is part of the t1-library. It contains basic
+ routines to initialize the data structures used
+ by the t1-library.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#define T1BASE_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "sysconf.h"
+#include "t1base.h"
+#include "t1types.h"
+#include "t1global.h"
+#include "t1env.h"
+#include "t1delete.h"
+
+
+static int test_for_t1_file( char *buffer );
+static int T1_pad=0;
+
+/* A fix for Encoding Vector problem. Initialization / Deinitialization
+ is now done in T1_InitLib() / T1-CloseLib. */
+extern boolean Init_BuiltInEncoding( void);
+extern psobj *StdEncArrayP;
+
+static const char* T1errmsg[] = {
+ "", /* -10 */
+ "", /* -9 */
+ "", /* -8 */
+ "", /* -7 */
+ "", /* -6 */
+ "Attempt to Load Multiple Master Font", /* T1ERR_SCAN_FONT_FORMAT -5 */
+ "Type 1 Font File Open Error", /* T1ERR_SCAN_FILE_OPEN_ERR -4 */
+ "Virtual Memory Exceeded", /* T1ERR_SCAN_OUT_OF_MEMORY -3 */
+ "Syntactical Error Scanning Font File", /* T1ERR_SCAN_ERROR -2 */
+ "Premature End of Font File Encountered", /* T1ERR_SCAN_FILE_EOF -1 */
+ "", /* 0 */
+ "Path Construction Error", /* T1ERR_PATH_ERROR 1 */
+ "Font is Corrupt", /* T1ERR_PARSE_ERROR 2 */
+ "Rasterization Aborted", /* T1ERR_TYPE1_ABORT 3 */
+ "", /* 4 */
+ "", /* 5 */
+ "", /* 6 */
+ "", /* 7 */
+ "", /* 8 */
+ "", /* 9 */
+ "Font ID Invalid in this Context", /* T1ERR_INVALID_FONTID 10 */
+ "Invalid Argument in Function Call", /* T1ERR_INVALID_PARAMETER 11 */
+ "Operation not Permitted", /* T1ERR_OP_NOT_PERMITTED 12 */
+ "Memory Allocation Error", /* T1ERR_ALLOC_MEM 13 */
+ "Error Opening File", /* T1ERR_FILE_OPEN_ERR 14 */
+ "Unspecified T1Lib Error", /* T1ERR_UNSPECIFIED 15 */
+ "Missing AFM Data", /* T1ERR_NO_AFM_DATA 16 */
+ "X11 Interface Error", /* T1ERR_X11 17 */
+ "Missing Component of Composite Character" /* T1ERR_COMPOSITE_CHAR 18 */
+ "Error Scanning Encoding File", /* T1ERR_SCAN_ENCODING 19 */
+ "", /* 20 */
+};
+
+
+/* T1_StrError(): Return an error message corresponding to the value of
+ t1err. */
+const char *T1_StrError( int t1err)
+{
+ int errind;
+
+ errind = t1err + 10;
+
+ if ( errind < 0 )
+ errind = 0;
+ if ( errind > 29 )
+ errind = 0;
+
+ return T1errmsg[errind];
+}
+
+
+
+/* This function is to be called by the user to initialize
+ the font mechanism */
+void *T1_InitLib( int log)
+{
+ int result;
+ int i;
+
+ char *usershome=NULL;
+ char *logfilepath=NULL;
+ char *envlogreq=NULL;
+ int usrforcelog=0;
+
+ /* Check against multiple initialization. */
+ if ( T1_Up != 0 ) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return NULL;
+ }
+
+ /* Reset T1_errno */
+ T1_errno=0;
+
+ /* Assign pointer to global struct and set entry padding: */
+ pFontBase=&FontBase;
+ if (T1_pad)
+ pFontBase->bitmap_pad=T1_pad;
+ else
+ pFontBase->bitmap_pad=T1GLYPH_PAD;
+
+ pFontBase->pFontArray = NULL;
+ pFontBase->t1lib_flags=0;
+ /* Check for AA-caching */
+ if ((log & T1_AA_CACHING)){
+ pFontBase->t1lib_flags |= T1_AA_CACHING;
+ }
+ /* Check for AFM disable */
+ if ((log & T1_NO_AFM)) {
+ pFontBase->t1lib_flags |= T1_NO_AFM;
+ }
+
+ /* Check environment variable ENV_LOG_STRING. By this means, a user may
+ generate a log file even if at compile time log file creation has
+ been suppressed. Of course, if the loglevel is reduced after
+ initialization by the programmer, this environment variable takes
+ no effect! */
+ if ((envlogreq=getenv(ENV_LOG_STRING))!=NULL) {
+ if (strcmp( envlogreq, "logDebug")==0)
+ T1_SetLogLevel( T1LOG_DEBUG);
+ else if (strcmp( envlogreq, "logStatistic")==0)
+ T1_SetLogLevel( T1LOG_STATISTIC);
+ else if (strcmp( envlogreq, "logWarning")==0)
+ T1_SetLogLevel( T1LOG_WARNING);
+ else if (strcmp( envlogreq, "logError")==0)
+ T1_SetLogLevel( T1LOG_ERROR);
+ usrforcelog=1;
+ }
+
+ /* Open log-file: */
+ t1lib_log_file=NULL;
+ if ((log & LOGFILE) || (usrforcelog!=0)) {
+ pFontBase->t1lib_flags |= LOGFILE;
+ /* Try first opening in current directory: */
+ if ((t1lib_log_file=fopen( T1_LOG_FILE, "wb"))==NULL) {
+ if ((usershome=getenv("HOME"))!=NULL) {
+ logfilepath=(char *)malloc((strlen(usershome) +
+ strlen(T1_LOG_FILE) + 2
+ ) * sizeof(char));
+ strcpy( logfilepath, usershome);
+ strcat( logfilepath, DIRECTORY_SEP);
+ strcat( logfilepath, T1_LOG_FILE);
+ if ((t1lib_log_file=fopen( logfilepath, "wb"))==NULL){
+ t1lib_log_file=stderr;
+ }
+ free( logfilepath);
+ }
+ else {
+ t1lib_log_file=stderr;
+ }
+ }
+ if (t1lib_log_file==stderr) {
+ T1_PrintLog( "T1_InitLib()", "Unable to open a logfile, using stderr",
+ T1LOG_ERROR);
+ }
+ }
+
+ T1_PrintLog( "T1_InitLib()", "Initialization started",
+ T1LOG_STATISTIC);
+ /* Check for representation of data in memory: */
+ if ((pFontBase->endian=T1_CheckEndian())){
+ T1_PrintLog( "T1_InitLib()", "Using Big Endian data presentation (MSBFirst)",
+ T1LOG_DEBUG);
+ pFontBase->endian=1;
+ }
+ else{
+ T1_PrintLog( "T1_InitLib()", "Using Little Endian data presentation (LSBFirst)",
+ T1LOG_DEBUG);
+ pFontBase->endian=0;
+ }
+
+ /* Save version identifier */
+ sprintf( err_warn_msg_buf, "Version Identifier: %s", T1LIB_IDENT);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ /* Save how t1lib is initialized */
+ sprintf( err_warn_msg_buf, "Initialization flags: 0x%X", log);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ /* Save padding value in log file */
+ sprintf( err_warn_msg_buf, "Glyphs are padded to %d bits",
+ pFontBase->bitmap_pad);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+#ifdef __CHAR_UNSIGNED__
+ T1_PrintLog( "T1_InitLib()", "System-Info: char is unsigned",
+ T1LOG_DEBUG);
+#else
+ T1_PrintLog( "T1_InitLib()", "System-Info: char is signed",
+ T1LOG_DEBUG);
+#endif
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(char): %d",
+ SIZEOF_CHAR);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(short): %d",
+ SIZEOF_SHORT);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(int): %d",
+ SIZEOF_INT);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(long): %d",
+ SIZEOF_LONG);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(long long): %d",
+ SIZEOF_LONG_LONG);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(float): %d",
+ SIZEOF_FLOAT);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(double): %d",
+ SIZEOF_DOUBLE);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(long double): %d",
+ SIZEOF_LONG_DOUBLE);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "System-Info: sizeof(void *): %d",
+ SIZEOF_VOID_P);
+ T1_PrintLog( "T1_InitLib()", err_warn_msg_buf, T1LOG_DEBUG);
+
+ intT1_SetupDefaultSearchPaths();
+ if (log & IGNORE_CONFIGFILE) {
+ pFontBase->t1lib_flags |= IGNORE_CONFIGFILE;
+ T1_PrintLog( "T1_InitLib()", "Skipping configuration file search!",
+ T1LOG_STATISTIC);
+ }
+ else {
+ if ((result=intT1_ScanConfigFile())==0)
+ T1_PrintLog( "T1_InitLib()", "Warning t1lib configuration file not found!",
+ T1LOG_WARNING);
+ }
+
+ /* Initialize builtin Standard Encoding */
+ if ( !(Init_BuiltInEncoding()) ) {
+ T1_PrintLog( "T1_InitLib()", "Unable initialize internal StandardEncoding!",
+ T1LOG_ERROR);
+ }
+
+ /* Set the default encoding to the fonts' internal encoding */
+ pFontBase->default_enc=NULL;
+
+ /* Initialize the no_fonts... values */
+ pFontBase->no_fonts=0;
+ pFontBase->no_fonts_ini=pFontBase->no_fonts;
+ pFontBase->no_fonts_limit=pFontBase->no_fonts;
+
+
+ /* Check whether to read font database */
+ if ((log & IGNORE_FONTDATABASE)){
+ pFontBase->t1lib_flags |= IGNORE_FONTDATABASE;
+
+ T1_Up=1; /* System has been initialized ! */
+ T1_PrintLog( "T1_InitLib()", "Initialization successfully finished (Database empty)",
+ T1LOG_STATISTIC);
+
+ return((void *) pFontBase);
+ }
+
+ result=0;
+ /* Read fontdatabase(s) */
+ i=0;
+ while (T1_FDB_ptr[i]!=NULL) {
+ if ((result=intT1_scanFontDBase(T1_FDB_ptr[i]))==-1){
+ T1_PrintLog( "T1_InitLib()", "Fatal error scanning Font Database File %s",
+ T1LOG_WARNING, T1_FDB_ptr[i]);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ i++;
+ }
+ if ( (result == 0) && (i != 0)){
+ T1_PrintLog( "T1_InitLib()", "No fonts from Font Database File(s) found (T1_errno=%d)",
+ T1LOG_ERROR, T1_errno);
+ return(NULL);
+ }
+
+ result=0;
+ /* Read XLFD fontdatabase(s) */
+ i=0;
+ while (T1_FDBXLFD_ptr[i]!=NULL) {
+ if ((result=intT1_scanFontDBaseXLFD(T1_FDBXLFD_ptr[i]))==-1){
+ T1_PrintLog( "T1_InitLib()", "Fatal error scanning XLFD Font Database File %s",
+ T1LOG_WARNING, T1_FDB_ptr[i]);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ i++;
+ }
+ if ( (result == 0) && (i != 0)){
+ T1_PrintLog( "T1_InitLib()", "No fonts from XLFD Font Database File(s) found (T1_errno=%d)",
+ T1LOG_ERROR, T1_errno);
+ return(NULL);
+ }
+
+ /* Initialize the no_fonts... values */
+ pFontBase->no_fonts_ini=pFontBase->no_fonts;
+ pFontBase->no_fonts_limit=pFontBase->no_fonts;
+
+ T1_Up=1; /* System has been initialized ! */
+ T1_PrintLog( "T1_InitLib()", "Initialization successfully finished",
+ T1LOG_STATISTIC);
+
+ return((void *) pFontBase);
+}
+
+
+
+/* intT1_scanFontDBase():
+ - opens the file with the font definitions,
+ - reads the number of fonts defined and saves this in FontBase,
+ - allocates memory for all the filenames of the Type1 files
+ - tests for .pfa und .pfb files and saves the name found
+ - initializes an array that allows to acces these names by an
+ index number, the font_ID
+ - returns -1 on fatal error and the number of fonts located
+ successfully
+ */
+int intT1_scanFontDBase( char *filename)
+{
+ int fd;
+ int filesize, i, j, k, m;
+ int found=0, located=0;
+ char *filebuffer;
+ int nofonts=0;
+ FONTPRIVATE* fontarrayP=NULL;
+
+#ifndef O_BINARY
+# define O_BINARY 0x0
+#endif
+
+ if ((fd=open( filename, O_RDONLY | O_BINARY))<3){
+ T1_PrintLog( "intT1_scanFontDBase()", "Font Database File %s not found!",
+ T1LOG_WARNING, filename);
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(-1);
+ }
+
+ /* Get the file size */
+ filesize=lseek( fd, 0, 2);
+ /* Reset fileposition to start */
+ lseek (fd, 0, 0);
+
+ if ((filebuffer=(char *)malloc(filesize*sizeof(char)
+ )) == NULL){
+ T1_PrintLog( "intT1_scanFontDBase()",
+ "Couldn't allocate memory for loading font database file %s",
+ T1LOG_ERROR, filename);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+
+ i=read( fd, filebuffer, filesize);
+ close(fd); /* Close font database file */
+
+ i=j=m=0;
+
+ while (i<filesize) {
+ if (filebuffer[i]=='\n'){ /* We are at the end of line */
+ if (j==0) { /* Read the first line as the number of fonts */
+ filebuffer[i]=0;
+ sscanf( &filebuffer[0], "%d", &nofonts);
+ filebuffer[i]='\n'; /* Because it gives a better feeling */
+ /* (Re)Allocate memory for 'no_fonts' structures: */
+ if ((FontBase.pFontArray=(FONTPRIVATE *)
+ realloc( FontBase.pFontArray, (FontBase.no_fonts+nofonts)*sizeof(FONTPRIVATE))) == NULL) {
+ T1_PrintLog( "inT1_scanFontDBase()",
+ "Failed to allocate memory for FONTPRIVATE-area while scanning %s",
+ T1LOG_ERROR, filename);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* setup pointer to newly allocated area and do a reset */
+ fontarrayP=&(FontBase.pFontArray[FontBase.no_fonts]);
+ memset(fontarrayP, 0, nofonts*sizeof(FONTPRIVATE));
+ located=1; /* In order to increment m */
+ }
+ else { /* We are in the second or higher line */
+ k=i;
+ while (isspace((int)filebuffer[k])){
+ k--;
+ }
+ /* We are at the last printable character of a line; let's
+ step back (over the [afm/sfm]) to the period and replace it
+ by an ASCII 0 */
+ while ((filebuffer[k]!='.') && (!isspace((int)filebuffer[k])) ){
+ k--;
+ }
+ if (filebuffer[k]=='.'){ /* We have a name terminated with . */
+ filebuffer[k]=0; /* termination for string reading */
+ while (!isspace((int)filebuffer[k])){
+ k--;
+ }
+ }
+ else { /* The filename was without . and / or the first on the line */
+ ;
+ }
+ sscanf( &(filebuffer[k+1]), "%s", &(linebuf[0]));
+ /* We print error string before testing because after the call
+ to test_for_t1_file() filename is substituted by an emty
+ string if the file was not found: */
+ sprintf( err_warn_msg_buf, "Type 1 Font file %s.[pfa/pfb] not found (FontID=%d, SearchPath=%s)",
+ linebuf, m-1, T1_GetFileSearchPath(T1_PFAB_PATH));
+ if ((test_for_t1_file( &linebuf[0]))){
+ T1_PrintLog( "intT1_scanFontDBase()", err_warn_msg_buf, T1LOG_WARNING);
+ located=0;
+ }
+ else{
+ /* linebuf contains now the valid Type1 filename; let's
+ now copy this string into the appropriate place in the
+ FONTPRIVATE-struct: */
+ found++;
+ located=1;
+ if ((fontarrayP[m-1].pFontFileName=(char *)
+ calloc( strlen( &linebuf[0])+1, sizeof(char))) == NULL){
+ T1_PrintLog( "intT1_scanFontDBase()",
+ "Failed to allocate memory for Filename %s (FontID=%d)",
+ T1LOG_ERROR, &linebuf[0], m-1);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( fontarrayP[m-1].pFontFileName, &linebuf[0]);
+ }
+ }
+ j++; /* Advance line counter */
+ if ((located))
+ m++;
+ }
+ if (j>nofonts) /* to ignore especially white space at end */
+ break;
+ i++; /* Step further in file position */
+ }
+ /* Return the memory for file reading */
+ free(filebuffer);
+
+ return( found);
+}
+
+
+/* intT1_scanFontDBaseXLFD():
+ - opens the file with the font definitions,
+ - reads the number of fonts defined and saves this in FontBase,
+ - allocates memory for all the filenames of the Type1 files
+ - tests for .pfa und .pfb files and saves the name found
+ - initializes an array that allows to acces these names by an
+ index number, the font_ID
+ - returns -1 on fatal error and the number of fonts located
+ successfully.
+
+ This function is identical to intT1_scanFontDBase() with the
+ difference that it expects the database file to be in XLFD format,
+ that is, the font's name comes in the first place stead of in
+ the last.
+ */
+int intT1_scanFontDBaseXLFD( char *filename)
+{
+ int fd;
+ int filesize, i, j, l, m;
+ int found=0, located=0;
+ char *filebuffer;
+ int nofonts=0;
+ FONTPRIVATE* fontarrayP=NULL;
+
+#ifndef O_BINARY
+# define O_BINARY 0x0
+#endif
+
+ if ((fd=open( filename, O_RDONLY | O_BINARY))<3){
+ T1_PrintLog( "intT1_scanFontDBaseXLFD()", "XLFD Font Database File %s not found!",
+ T1LOG_WARNING, filename);
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(-1);
+ }
+
+ /* Get the file size */
+ filesize=lseek( fd, 0, 2);
+ /* Reset fileposition to start */
+ lseek (fd, 0, 0);
+
+ if ((filebuffer=(char *)malloc(filesize*sizeof(char)
+ )) == NULL){
+ T1_PrintLog( "intT1_scanFontDBaseXLFD()",
+ "Couldn't allocate memory for loading XLFD font database file %s",
+ T1LOG_ERROR, filename);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+
+ i=read( fd, filebuffer, filesize);
+ close(fd); /* Close XLFD font database file */
+
+ i=j=l=m=0;
+
+ while (i<filesize) {
+ if (filebuffer[i]=='\n'){ /* We are at the end of line */
+ if (j==0) { /* Read the first line as the number of fonts */
+ filebuffer[i]=0;
+ sscanf( &filebuffer[0], "%d", &nofonts);
+ filebuffer[i]='\n'; /* Because it gives a better feeling */
+ /* (Re)Allocate memory for 'no_fonts' structures: */
+ if ((FontBase.pFontArray=(FONTPRIVATE *)
+ realloc( FontBase.pFontArray, (FontBase.no_fonts+nofonts)*sizeof(FONTPRIVATE))) == NULL) {
+ T1_PrintLog( "inT1_scanFontDBaseXLFD()",
+ "Failed to allocate memory for FONTPRIVATE-area while scanning %s",
+ T1LOG_ERROR, filename);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* setup pointer to newly allocated area and do a reset */
+ fontarrayP=&(FontBase.pFontArray[FontBase.no_fonts]);
+ memset(fontarrayP, 0, nofonts*sizeof(FONTPRIVATE));
+ located=1; /* In order to increment m */
+ }
+ else { /* We are in the second or higher line */
+ /* l indexes the beginning of the line */
+ while (isspace((int)filebuffer[l])){
+ l++;
+ }
+ /* We are at the first printable character of a line;
+ scan the first white space terminated string as font
+ file name. */
+ sscanf( &(filebuffer[l]), "%s", &(linebuf[0]));
+ /* We print error string before testing because after the call
+ to test_for_t1_file() filename is substituted by an emty
+ string if the file was not found: */
+ sprintf( err_warn_msg_buf, "Type 1 Font file %s.[pfa/pfb] not found (FontID=%d, SearchPath=%s)",
+ linebuf, m-1, T1_GetFileSearchPath(T1_PFAB_PATH));
+ if ((test_for_t1_file( &linebuf[0]))){
+ T1_PrintLog( "intT1_scanFontDBase()", err_warn_msg_buf, T1LOG_WARNING);
+ located=0;
+ }
+ else{
+ /* linebuf contains now the valid Type1 filename; let's
+ now copy this string into the appropriate place in the
+ FONTPRIVATE-struct: */
+ found++;
+ located=1;
+ if ((fontarrayP[m-1].pFontFileName=(char *)
+ calloc( strlen( &linebuf[0])+1, sizeof(char))) == NULL){
+ T1_PrintLog( "intT1_scanFontDBaseXLFD()",
+ "Failed to allocate memory for Filename %s (FontID=%d)",
+ T1LOG_ERROR, &linebuf[0], m-1);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( fontarrayP[m-1].pFontFileName, &linebuf[0]);
+ }
+ }
+ j++; /* Advance line counter */
+ if ((located))
+ m++;
+ /* Store index to new line */
+ l = i + 1;
+ }
+ if (j>nofonts) /* to ignore especially white space at end */
+ break;
+ i++; /* Step further in file position */
+ }
+ /* Return the memory for file reading */
+ free(filebuffer);
+
+ return( found);
+}
+
+
+/* T1_CloseLib(): Close the library and free all associated memory */
+int T1_CloseLib( void)
+{
+
+ int i, j, error=0;
+
+ if ( T1_Up != 0 ) {
+ for (i=pFontBase->no_fonts; i; i--){
+ /* Free filename only if not NULL and if the font is physical!
+ Do it before removing the font since the physical information
+ is no more available afterwards. If necessary, an explicitly
+ specified AFM filename is also freed.
+ */
+ if ((pFontBase->pFontArray[i-1].pFontFileName!=NULL)
+ && (pFontBase->pFontArray[i-1].physical==1)){
+ free( pFontBase->pFontArray[i-1].pFontFileName);
+ pFontBase->pFontArray[i-1].pFontFileName=NULL;
+ if (pFontBase->pFontArray[i-1].pAfmFileName!=NULL){
+ free( pFontBase->pFontArray[i-1].pAfmFileName);
+ pFontBase->pFontArray[i-1].pAfmFileName=NULL;
+ }
+ }
+
+ /* Now, remove font: */
+ if ((j=T1_DeleteFont( i-1))){
+ error=1;
+ sprintf( err_warn_msg_buf, "T1_DeleteFont() returned %d for Font %d",
+ j, i-1);
+ T1_PrintLog( "T1_CloseLib()", err_warn_msg_buf, T1LOG_ERROR);
+ }
+ }
+ /* Free the FONTPRIVATE area */
+ if (pFontBase->pFontArray)
+ free( pFontBase->pFontArray);
+ else
+ error=1;
+
+ /* Get rid of internal StandardEncoding vector */
+ if ( StdEncArrayP != NULL ) {
+ free( StdEncArrayP);
+ StdEncArrayP = NULL;
+ }
+
+ /* Free search paths */
+ intT1_FreeSearchPaths();
+
+ /* Reset the flags */
+ pFontBase->t1lib_flags=0;
+
+ /* Indicate Library is no longer initialized */
+ pFontBase=NULL;
+ T1_Up=0;
+ T1_PrintLog( "T1_CloseLib()", "Library closed", T1LOG_STATISTIC);
+ if ((t1lib_log_file!=NULL) && (t1lib_log_file!=stderr))
+ fclose(t1lib_log_file);
+ t1lib_log_file=NULL;
+ }
+
+ return( error);
+}
+
+
+/* T1_AddFont(): Add a new fontfile to the fontdatabase.
+ Return values: >0: Assigned FontID
+ -1: Fontfile not found
+ -2: Error allocating memory for FONTPRIVATE-area
+ -3: No memory for saving font filename
+ */
+int T1_AddFont( char *fontfilename)
+{
+
+ char *FullName;
+ FONTPRIVATE *save_ptr;
+ int i;
+ int new_ID;
+
+
+ if (fontfilename==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ /* Check for existence of fontfile */
+ if ((FullName=intT1_Env_GetCompletePath(fontfilename,T1_PFAB_ptr))==NULL) {
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(-1);
+ }
+ free(FullName);
+
+ /* Check if free space for a new FONTPRIVATE is available; if not,
+ realloc memory some amount larger */
+ save_ptr=pFontBase->pFontArray;
+ if (pFontBase->no_fonts==pFontBase->no_fonts_limit){
+ if (pFontBase->pFontArray == NULL) {
+ /* In case this is the first font */
+ pFontBase->pFontArray=(FONTPRIVATE *)calloc(pFontBase->no_fonts_limit
+ + ADVANCE_FONTPRIVATE,
+ sizeof(FONTPRIVATE));
+ }
+ else {
+ /* We already have some fonts */
+ pFontBase->pFontArray=(FONTPRIVATE *)realloc(pFontBase->pFontArray,
+ (pFontBase->no_fonts_limit
+ + ADVANCE_FONTPRIVATE)
+ * sizeof(FONTPRIVATE));
+ if (pFontBase->pFontArray==NULL){
+ /* Restore pointer */
+ pFontBase->pFontArray=save_ptr;
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-2); /* No memory available */
+ }
+ }
+ pFontBase->no_fonts_limit += ADVANCE_FONTPRIVATE;
+ /* First, initialize newly allocated to be not used */
+ for ( i=pFontBase->no_fonts;
+ i<pFontBase->no_fonts+ADVANCE_FONTPRIVATE; i++){
+ pFontBase->pFontArray[i].pFontFileName=NULL;
+ pFontBase->pFontArray[i].pAfmFileName=NULL;
+ pFontBase->pFontArray[i].pAFMData=NULL;
+ pFontBase->pFontArray[i].pType1Data=NULL;
+ pFontBase->pFontArray[i].pEncMap=NULL;
+ pFontBase->pFontArray[i].pKernMap=NULL;
+ pFontBase->pFontArray[i].pFontEnc=NULL;
+ pFontBase->pFontArray[i].pFontSizeDeps=NULL;
+ pFontBase->pFontArray[i].vm_base=NULL;
+ pFontBase->pFontArray[i].FontMatrix[0]=0.0;
+ pFontBase->pFontArray[i].FontMatrix[1]=0.0;
+ pFontBase->pFontArray[i].FontMatrix[2]=0.0;
+ pFontBase->pFontArray[i].FontMatrix[3]=0.0;
+ pFontBase->pFontArray[i].FontTransform[0]=0.0;
+ pFontBase->pFontArray[i].FontTransform[1]=0.0;
+ pFontBase->pFontArray[i].FontTransform[2]=0.0;
+ pFontBase->pFontArray[i].FontTransform[3]=0.0;
+ pFontBase->pFontArray[i].slant=0.0;
+ pFontBase->pFontArray[i].extend=0.0;
+ pFontBase->pFontArray[i].physical=0;
+ pFontBase->pFontArray[i].refcount=0;
+ pFontBase->pFontArray[i].space_position=0;
+ pFontBase->pFontArray[i].info_flags=0;
+ }
+ }
+ /* no_fonts-1 was the largest allowed font ID */
+ new_ID=pFontBase->no_fonts;
+ pFontBase->no_fonts++;
+
+ if ((FontBase.pFontArray[new_ID].pFontFileName=(char *)
+ calloc( strlen( fontfilename)+1, sizeof(char))) == NULL){
+ T1_PrintLog( "T1_AddFont()",
+ "Failed to allocate memory for Filename %s (FontID=%d)",
+ T1LOG_ERROR, fontfilename, new_ID);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-3);
+ }
+ strcpy( FontBase.pFontArray[new_ID].pFontFileName, fontfilename);
+
+ /* Generate logfile entry */
+ sprintf( err_warn_msg_buf, "Assigned FontID %d to fontfile %s",
+ new_ID, FontBase.pFontArray[new_ID].pFontFileName);
+ T1_PrintLog( "T1_AddFont()", err_warn_msg_buf,
+ T1LOG_STATISTIC);
+ /* Return FontID of newly declared font */
+ return( new_ID);
+
+}
+
+
+/* T1_PrintLog() generates entries in the log file. msg_txt is subject to scan
+ conversion and ... signifies a accordingly lrge variable list. */
+void T1_PrintLog( char *func_ident, char *msg_txt, int level, ...)
+{
+ va_list vararg;
+ static char levelid[4]={ 'E', 'W', 'S', 'D'};
+ time_t s_clock, *tp;
+
+ if (t1lib_log_file==NULL)
+ return;
+ if ((level>t1lib_log_level) || (level<1)){
+ return;
+ }
+ else{
+ /* initialize argument list */
+ va_start( vararg, level);
+
+ tp=&s_clock;
+ s_clock=time( tp);
+ /*
+ fprintf( t1lib_log_file, "(%c) (%.24s) %s: ",
+ levelid[level-1], ctime(&s_clock), func_ident);
+ */
+ /* Don't print the time stamp */
+ fprintf( t1lib_log_file, "(%c) %s: ", levelid[level-1], func_ident );
+ vfprintf( t1lib_log_file, msg_txt, vararg );
+ fprintf( t1lib_log_file, "\n");
+ fflush( t1lib_log_file);
+
+ /* cleanup variable list */
+ va_end( vararg);
+
+ return;
+ }
+}
+
+
+/* T1_SetLogLevel(): Set the level which a message must have so
+ that it is printed into the logfile. This function may be called
+ before T1_InitLib(). */
+void T1_SetLogLevel( int level)
+{
+ if ((level>0) && (level<5))
+ t1lib_log_level=level;
+ return;
+}
+
+
+
+/* T1_CheckForInit(): If no initialization of font mechanism has been
+ done, return -1, indicating an error. */
+int T1_CheckForInit(void)
+{
+ if(T1_Up)
+ return(0);
+ else
+ return(-1);
+
+}
+
+
+
+/* T1_CheckForFontID(): Checks the font mechanism concerning the specified
+ ID. It returns:
+ 0 if font belonging to FontID has not yet been loaded
+ 1 if font belonging to FontID has already been loaded
+ -1 if FontID is an invalid specification or t1lib not
+ initialized
+ */
+int T1_CheckForFontID( int FontID)
+{
+
+ /* FontID is invalid */
+ if ((FontID<0)||(FontID>(pFontBase->no_fonts - 1))||(T1_Up==0))
+ return(-1);
+
+ if (pFontBase->pFontArray[FontID].pType1Data==NULL)
+ return(0); /* has not yet been loaded */
+ else
+ return(1); /* has already been loaded */
+}
+
+
+
+
+/* test_for_t1_file returns 0 if a file "name.pfa" or "name.pfb"
+ was found. Else, -1 is returned. If successful, buffer contains the
+ found filename string */
+static int test_for_t1_file( char *buffer )
+{
+ int i=0;
+ char *FullName;
+
+ /* First case: A PostScript Font ASCII File without extension
+ (according to some UNIX-conventions) */
+ if ((FullName=intT1_Env_GetCompletePath(buffer,T1_PFAB_ptr))!=NULL) {
+ free(FullName);
+ return(0);
+ }
+
+ while (buffer[i]!=0){
+ i++;
+ }
+ buffer[i]='.';
+ buffer[i+1]='p';
+ buffer[i+2]='f';
+ buffer[i+4]=0;
+
+
+ /* Second case: A PostScript Font ASCII File */
+ buffer[i+3]='a';
+ if ((FullName=intT1_Env_GetCompletePath(buffer,T1_PFAB_ptr))!=NULL) {
+ free(FullName);
+ return(0);
+ }
+ /* Third case: A PostScript Font Binary File */
+ buffer[i+3]='b';
+ if ((FullName=intT1_Env_GetCompletePath(buffer,T1_PFAB_ptr))!=NULL) {
+ free(FullName);
+ return(0);
+ }
+
+ /* If we get here no file was found => Set buffer
+ to an empty string and return -1 */
+
+ buffer[0]=0;
+ return(-1);
+}
+
+
+/* T1_GetFontFileName() returns a pointer to the filename of the font,
+ associated with FontID. This filename does not contain a full path.
+ */
+char *T1_GetFontFileName( int FontID)
+{
+
+ static char filename[MAXPATHLEN+1];
+
+ if (T1_CheckForInit())return(NULL);
+
+ /* Check first for valid FontID */
+ if ((FontID<0) || (FontID>FontBase.no_fonts)){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strcpy( filename, pFontBase->pFontArray[FontID].pFontFileName);
+
+ return( filename);
+
+}
+
+
+
+/* As suggested by Nicolai Langfeldt, we make it possible to specify
+ a completely independent path for the afm filename. This should
+ make t1lib usable in context with using the kpathsearch-library.
+ We allow setting those path´s after initialization, but before a
+ font is loaded.
+ returns 0: OK
+ -1: Operation could not be performed
+*/
+int T1_SetAfmFileName( int FontID, char *afm_name)
+{
+
+ if (T1_CheckForFontID(FontID)!=0){
+ /* Operation may not be applied because FontID is invalid
+ or font is loaded */
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+ if (afm_name==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+ if (pFontBase->pFontArray[FontID].pAfmFileName!=NULL){
+ /* we first free the current name */
+ free( pFontBase->pFontArray[FontID].pAfmFileName);
+ pFontBase->pFontArray[FontID].pAfmFileName=NULL;
+ }
+
+ if ((pFontBase->pFontArray[FontID].pAfmFileName=
+ (char *)malloc( (strlen(afm_name)+1)*sizeof( char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( -1);
+ }
+ strcpy( pFontBase->pFontArray[FontID].pAfmFileName, afm_name);
+
+ return(0);
+
+}
+
+
+
+/* We have a function for querying the name. Returns a pointer
+ to the string or NULL if name was not explicitly set .*/
+char *T1_GetAfmFileName( int FontID)
+{
+
+ static char filename[MAXPATHLEN+1];
+
+ if (T1_CheckForInit())return(NULL);
+
+ /* Check first for valid FontID */
+ if ((FontID<0) || (FontID>FontBase.no_fonts)){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ if (pFontBase->pFontArray[FontID].pAfmFileName==NULL) {
+ return( NULL);
+ }
+
+ strcpy( filename, pFontBase->pFontArray[FontID].pAfmFileName);
+ return( filename);
+
+}
+
+
+
+/* T1_GetNoFonts(): Return the number of declared fonts */
+int T1_GetNoFonts(void)
+{
+ if (T1_CheckForInit())
+ return(-1);
+ return(FontBase.no_fonts);
+}
+
+
+
+/* T1_SetDeviceResolutions( x_res, y_res): Set the device's physical
+ resolution in horizontal and vertical direction, mesured in DPI
+ (Dots Per Inch). This should be done before the first font is
+ loaded! */
+int T1_SetDeviceResolutions( float x_res, float y_res)
+{
+
+ int i;
+
+ if (T1_CheckForInit())
+ ; /* Not initialized -> no size dependent data -> OK */
+ else
+ /* Check if size-dependent data is existent */
+ for ( i=T1_GetNoFonts(); i; i--)
+ if (pFontBase->pFontArray[i-1].pFontSizeDeps!=NULL){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1); /* There's is size dependent data for a font */
+ }
+
+ /* Save resolutions and calculate horizontal and vertical
+ scale factors to map desired bp to device pixel */
+ DeviceSpecifics.x_resolution=(float) x_res;
+ DeviceSpecifics.y_resolution=(float) y_res;
+ DeviceSpecifics.scale_x=(float)(((float)x_res)/BIGPOINTSPERINCH);
+ DeviceSpecifics.scale_y=(float)(((float)y_res)/BIGPOINTSPERINCH);
+ return(0);
+}
+
+
+/* T1_QueryX11Support(): Check at runtime to see if t1lib was compiled
+ with X11 interface: */
+int T1_QueryX11Support( void)
+{
+#ifndef T1LIB_NO_X11_SUPPORT
+ return(1);
+#else
+ return(0);
+#endif
+}
+
+
+
+
+/* int T1_CopyFont(): Copies the font associated with FontID to another
+ location. The pointers to type1- , afm- and encoding data as well as
+ the matrices remain completely untouched. However, size dependent data
+ is not copied. The produced font is marked as a "logical" font.
+ If no memory is available in the FONTPRIVATE-array, there's realloc'ed
+ some more memory. The FontID which is assigned to the newly generated
+ font is given as the return value, or < 0 if an error occurs. Also,
+ the refcount entry of the source font is incremented by one.
+
+ Return value -1: invalid FontID specified
+ -2: source font is not a "physical" font
+ -3: no memory for reallocation of FONTPRIVATEs
+ -4: no memory for one of the mapping tables
+ */
+int T1_CopyFont( int FontID)
+{
+ FONTPRIVATE *save_ptr;
+ int k;
+ int new_ID;
+
+
+ /* Check for a valid source font */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+
+ /* Check if the font in question is a "physical" font, otherwise it may
+ not be copied */
+ if (pFontBase->pFontArray[FontID].physical==0){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-2);
+ }
+
+
+ /* Check if free space for a new FONTPRIVATE is available; if not,
+ realloc memory some amount larger */
+ save_ptr=pFontBase->pFontArray;
+ if (pFontBase->no_fonts==pFontBase->no_fonts_limit){
+ pFontBase->pFontArray=(FONTPRIVATE *)realloc(pFontBase->pFontArray,
+ (pFontBase->no_fonts_limit
+ + ADVANCE_FONTPRIVATE)
+ * sizeof(FONTPRIVATE));
+ if (pFontBase->pFontArray==NULL){
+ /* Restore pointer */
+ pFontBase->pFontArray=save_ptr;
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-3);
+ }
+ /* We zero the newly allocated memory */
+ if (pFontBase->pFontArray != NULL) {
+ memset( pFontBase->pFontArray + pFontBase->no_fonts_limit, 0,
+ ADVANCE_FONTPRIVATE * sizeof(FONTPRIVATE));
+ }
+ pFontBase->no_fonts_limit += ADVANCE_FONTPRIVATE;
+ }
+ /* no_fonts-1 was the largest allowed font ID */
+ new_ID=pFontBase->no_fonts;
+ /* Copy FONTPRIVATE-structure: */
+ pFontBase->pFontArray[new_ID]=pFontBase->pFontArray[FontID];
+ /* (Re)Set some values explicitly, others remain untouched: */
+ pFontBase->pFontArray[new_ID].pFontSizeDeps=NULL;
+ pFontBase->pFontArray[new_ID].physical=0;
+ /* AFM-mapping tables are to be setup for logical fonts separately
+ (if AFM data is there) */
+ /* first, kerning map */
+ if (pFontBase->pFontArray[new_ID].pAFMData) {
+ k=pFontBase->pFontArray[new_ID].pAFMData->numOfPairs;
+ if (k>0){ /* kern map exists only if kerning pairs exist! */
+ if ((pFontBase->pFontArray[new_ID].pKernMap=
+ (METRICS_ENTRY *)malloc( k*sizeof( METRICS_ENTRY)))==NULL){
+ sprintf( err_warn_msg_buf, "Error allocating memory for kerning map (new_ID=%d)",
+ new_ID);
+ T1_PrintLog( "T1_CopyFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-4);
+ }
+ memcpy( pFontBase->pFontArray[new_ID].pKernMap,
+ pFontBase->pFontArray[FontID].pKernMap,
+ k*sizeof( METRICS_ENTRY));
+ }
+ else { /* no kerning pairs, bu AFM data present */
+ pFontBase->pFontArray[new_ID].pKernMap=NULL;
+ }
+ }
+ else { /* AFM data not present at all */
+ pFontBase->pFontArray[new_ID].pKernMap=NULL;
+ }
+
+ /* second, encoding map */
+ if (pFontBase->pFontArray[FontID].pEncMap!=NULL) {
+ if ((pFontBase->pFontArray[new_ID].pEncMap=
+ (int *)calloc(256,sizeof(int)))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Error allocating memory for encoding map (new_ID=%d)",
+ new_ID);
+ T1_PrintLog( "T1_CopyFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-4);
+ }
+ memcpy( pFontBase->pFontArray[new_ID].pEncMap,
+ pFontBase->pFontArray[FontID].pEncMap,
+ 256*sizeof( int));
+ }
+
+ /* New font is logical --> indicate to which physical font it
+ refers by setting refcount: */
+ pFontBase->pFontArray[new_ID].refcount=FontID;
+
+ /* Now the struct is setup; increment no_fonts by 1 because
+ new_ID is a valid font specification from now on. */
+ pFontBase->no_fonts++;
+ /* Increment refcount in source font */
+ pFontBase->pFontArray[FontID].refcount++;
+
+ /* Generate logfile entry */
+ sprintf( err_warn_msg_buf, "Assigned FontID %d to fontfile %s",
+ new_ID, FontBase.pFontArray[new_ID].pFontFileName);
+ T1_PrintLog( "T1_CopyFont()", err_warn_msg_buf,
+ T1LOG_STATISTIC);
+ return(new_ID);
+}
+
+
+
+/* T1_SetBitmapPad(): Set the value to which bitmap-scanlines are padded.
+ This has to be done before initialization because it is a very
+ rudimentary operation.
+ */
+int T1_SetBitmapPad( int pad)
+{
+ if (T1_Up){
+ /* Library is initialized --> return error */
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+ else{
+ switch (pad){
+ case 8:
+ T1_pad=8;
+ return(0);
+ case 16:
+ T1_pad=16;
+ return(0);
+#ifdef T1_AA_TYPE64
+ case 32:
+ T1_pad=32;
+ return(0);
+#endif
+ default:
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+ }
+}
+
+
+
+/* T1_GetBitmapPad(): Read the value to which scanlines of bitmap are
+ padded. This can be done before or after initialization. */
+int T1_GetBitmapPad( void)
+{
+ if (pFontBase) /* T1lib initialized --> return value from struct */
+ return( pFontBase->bitmap_pad);
+ else{
+ if (T1_pad)
+ return(T1_pad); /* pad is explicitly set --> return that value */
+ else
+ return( T1GLYPH_PAD); /* not expl. set --> return compilation default */
+ }
+}
+
+
+
+/* CheckEndian(): Checks whether the current machine is of little or big
+ endian architecture. This is important for concatenating bitmaps.
+ Function returns 0 if LittleEndian and 1 if BigEndian representation
+ is used on the current hardware.
+ */
+int T1_CheckEndian()
+{
+ unsigned char *charptr;
+
+ /* Generate test value */
+ unsigned short test=0x0001;
+
+ /* Read out memory as unsigned char */
+ charptr=(unsigned char *)(&test)+1;
+
+ /* Return value will be 1 if Big- and 0 if Little Endian */
+ return((int) *charptr);
+
+}
+
+
+
+/* T1_GetLibIdent(): Return the identifier string for the current version
+ of t1lib */
+char *T1_GetLibIdent( void)
+{
+ static char buf[15];
+
+ sprintf( buf, "%s", T1LIB_IDENT);
+
+ return( (char *)buf);
+}
+
+
+
+/* T1_SetRasterFlags(): Enable/Disable certain features in
+ the rasterizer */
+extern void T1_SetRasterFlags( int flags)
+{
+
+ T1_Type1OperatorFlags=flags;
+ return;
+
+}
+
+
+
+/* T1_GetFontFileName(): returns a pointer to the complete path filename
+ of the font, associated with FontID as it is in use by t1lib.
+ */
+char *T1_GetFontFilePath( int FontID)
+{
+
+ static char filepath[MAXPATHLEN+1];
+ char *FileNamePath=NULL;
+
+ /* is initialzed? */
+ if (T1_CheckForInit()) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* Check first for valid FontID */
+ if ((FontID<0) || (FontID>FontBase.no_fonts)){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* lib is initialized and FontID is valid ->
+ we can really expect a name */
+ if ((FileNamePath=intT1_Env_GetCompletePath( pFontBase->pFontArray[FontID].pFontFileName,
+ T1_PFAB_ptr))==NULL) {
+ T1_PrintLog( "T1_GetFontFilePath()", "Couldn't locate font file for font %d in %s",
+ T1LOG_WARNING, FontID, T1_GetFileSearchPath(T1_PFAB_PATH));
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(NULL);
+ }
+
+ strcpy( filepath, FileNamePath);
+ free( FileNamePath);
+
+ return( filepath);
+
+}
+
+
+
+/* We have a function for querying the name. Returns a pointer
+ to the string or NULL if name was not explicitly set .*/
+char *T1_GetAfmFilePath( int FontID)
+{
+
+ static char filepath[MAXPATHLEN+1];
+ char *FontFileName;
+ char *AFMFilePath;
+ int i, j;
+
+ /* is initialized? */
+ if ((T1_CheckForInit())) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* Check first for valid FontID */
+ if ((FontID<0) || (FontID>FontBase.no_fonts)){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* Check wether AFM-file loading was suppressed on user's request */
+ if ((pFontBase->t1lib_flags & T1_NO_AFM)!=0) {
+ /* this is no error condition, we simply return (NULL) */
+ return( NULL);
+ }
+
+ /* Check for explicitly associated metrics filename (via
+ "T1_SetAfmFileName()"). If it exists, we return it! */
+ if (pFontBase->pFontArray[FontID].pAfmFileName!=NULL) {
+ strcpy( filepath, pFontBase->pFontArray[FontID].pAfmFileName);
+ sprintf( err_warn_msg_buf, "Returning explicitly specified path %s for Font %d",
+ filepath, FontID);
+ T1_PrintLog( "T1_GetAfmFilePath()", err_warn_msg_buf, T1LOG_DEBUG);
+ return( filepath);
+ }
+
+ /* we have the usual case that the name of the metrics file has to be
+ deduced from the font file name */
+ FontFileName=T1_GetFontFileName( FontID);
+ i=strlen(FontFileName);
+ j=i;
+ strcpy( filepath, FontFileName);
+ while ( filepath[i] != '.'){
+ if (i==0) break;
+ else i--;
+ }
+ if (i==0){
+ /* We have a filename without extension -> append extension */
+ filepath[j]='.';
+ filepath[j+1]='a';
+ filepath[j+2]='f';
+ filepath[j+3]='m';
+ filepath[j+4]='\0';
+ }
+ else{
+ /* we found a '.' -> replace extension */
+ filepath[i+1]='a';
+ filepath[i+2]='f';
+ filepath[i+3]='m';
+ filepath[i+4]='\0';
+ }
+ /* Get full path of the afm file (The case of a full path name
+ name specification is valid) */
+ if ((AFMFilePath=intT1_Env_GetCompletePath( filepath, T1_AFM_ptr)) == NULL) {
+ return NULL;
+ }
+
+ strcpy( filepath, AFMFilePath);
+ free( AFMFilePath);
+
+ return( filepath);
+
+}
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.h
new file mode 100644
index 00000000000..561abae429c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1base.h
@@ -0,0 +1,84 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1base.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-05-16
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1base.c
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1BASE_C
+
+void *T1_InitLib( int log);
+int intT1_scanFontDBase( char *filename);
+int intT1_scanFontDBaseXLFD( char *filename);
+int T1_CloseLib( void);
+int T1_AddFont( char *fontfilename);
+void T1_PrintLog( char *func_ident, char *msg_txt, int level, ...);
+void T1_SetLogLevel( int level);
+int T1_CheckForInit(void);
+int T1_CheckForFontID( int FontID);
+char *T1_GetFontFileName( int FontID);
+int T1_GetNoFonts(void);
+int T1_SetDeviceResolutions( float x_res, float y_res);
+int T1_CopyFont( int FontID);
+int T1_QueryX11Support( void);
+int T1_CheckEndian(void);
+int T1_SetBitmapPad( int pad);
+int T1_GetBitmapPad( void);
+char *T1_GetLibIdent( void);
+void T1_SetRasterFlags( int flags);
+char *T1_GetAfmFileName( int FontID);
+int T1_SetAfmFileName( int FontId, char *afm_name);
+char *T1_GetFontFilePath( int FontID);
+char *T1_GetAfmFilePath( int FontID);
+const char *T1_StrError( int t1err);
+
+extern int T1_Type1OperatorFlags;
+
+#else
+
+extern void *T1_InitLib( int log);
+extern int intT1_scanFontDBase( char *filename);
+extern int intT1_scanFontDBaseXLFD( char *filename);
+extern int T1_CloseLib( void);
+extern int T1_AddFont( char *fontfilename);
+extern void T1_PrintLog( char *func_ident, char *msg_txt, int level, ...);
+extern void T1_SetLogLevel( int level);
+extern int T1_CheckForInit(void);
+extern int T1_CheckForFontID( int FontID);
+extern char *T1_GetFontFileName( int FontID);
+extern int T1_GetNoFonts(void);
+extern int T1_SetDeviceResolutions( float x_res, float y_res);
+extern int T1_QueryX11Support( void);
+extern int T1_CopyFont( int FontID);
+extern int T1_CheckEndian(void);
+extern int T1_SetBitmapPad( int pad);
+extern int T1_GetBitmapPad( void);
+extern char *T1_GetLibIdent( void);
+extern void T1_SetRasterFlags( int flags);
+extern char *T1_GetAfmFileName( int FontID);
+extern int T1_SetAfmFileName( int FontId, char *afm_name);
+extern char *T1_GetFontFilePath( int FontID);
+extern char *T1_GetAfmFilePath( int FontID);
+extern const char *T1_StrError( int t1err);
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.c
new file mode 100644
index 00000000000..fea216b3222
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.c
@@ -0,0 +1,362 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1delete.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-12-02
+ ----- Description: This file is part of the t1-library. It contains
+ functions for giving free previously allocated
+ memory areas and similar things.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1DELETE_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+
+
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1delete.h"
+#include "t1load.h"
+#include "t1finfo.h"
+#include "t1base.h"
+
+
+
+/* T1_DeleteSize(): Gives back all the memory allocated for size to the
+ system. If size is somewhere in the middle of a linked list of sizes,
+ it further takes care that the remaining list is linked in a proper
+ way. Function returns 0 if successful and otherwise -1*/
+int T1_DeleteSize( int FontID, float size)
+{
+ int i, j;
+ FONTSIZEDEPS *ptr, *next_ptr, *prev_ptr;
+ int jobs=0;
+ int antialias;
+ int level[4]={0,T1_AA_NONE,T1_AA_LOW,T1_AA_HIGH};
+
+
+ for ( j=0; j<4; j++){
+ antialias=level[j];
+ /* Check if size exists; if not, return 1 */
+ if ((ptr=T1int_QueryFontSize( FontID, size, antialias))!=NULL){
+ /* We have to remove a size-> */
+ jobs++;
+ /* Get pointers to structure which is before/after the structure
+ to be deleted in the linked list and properly relink
+ structures */
+ next_ptr=((FONTSIZEDEPS *)ptr)->pNextFontSizeDeps;
+ prev_ptr=((FONTSIZEDEPS *)ptr)->pPrevFontSizeDeps;
+
+ if ((prev_ptr==NULL)&&(next_ptr==NULL)){
+ /* There's only one single size, no relink is necessary
+ => reset the initial pointer to indicate that no size
+ dependent data is available */
+ pFontBase->pFontArray[FontID].pFontSizeDeps=NULL;
+ }
+ else{
+ if (prev_ptr!=NULL)
+ /* We are at the first size of the linked list and
+ there are still some sizes left after removing the
+ current */
+ prev_ptr->pNextFontSizeDeps=next_ptr;
+ else
+ pFontBase->pFontArray[FontID].pFontSizeDeps=next_ptr;
+ if (next_ptr!=NULL)
+ /* We are at the end of an list of at least two sizes: */
+ next_ptr->pPrevFontSizeDeps=prev_ptr;
+ }
+
+ /* Now, that the list is properly linked, free the memory used by size: */
+ /* Free the bitmaps memory: */
+ for (i=0; i<256; i++)
+ if (ptr->pFontCache[i].bits)
+ free(ptr->pFontCache[i].bits);
+
+ /* Free memory for glyphs: */
+ free(ptr->pFontCache);
+ /* Free the structure itself: */
+ free(ptr);
+ /* Print log: */
+ sprintf( err_warn_msg_buf, "Size %f deleted for FontID %d (antialias=%d)",
+ size, FontID, antialias);
+ T1_PrintLog( "T1_DeleteSize()", err_warn_msg_buf, T1LOG_STATISTIC);
+ }
+ }
+
+ /* Return the appropriate value */
+ if (jobs==0)
+ return(-1);
+ else
+ return(0);
+
+}
+
+
+/* T1_DeleteAllSizes(): Gives back all the memory allocated for all sizes
+ to the system. Function returns the number of removed sizes or -1 if an
+ error ocurred. */
+int T1_DeleteAllSizes( int FontID)
+{
+ int sizecount;
+ float currsize;
+
+ FONTSIZEDEPS *ptr;
+
+ if (T1_CheckForFontID(FontID)!=1)
+ return(-1);
+
+ /* Start deleting at the end of the linked list: */
+ sizecount=0;
+ if ((ptr=T1int_GetLastFontSize( FontID))==NULL){
+ /* There has not been any size dependent data: */
+ return(0);
+ }
+
+ while (((ptr=T1int_GetLastFontSize(FontID)) != NULL)){
+ currsize=ptr->size;
+ T1_DeleteSize( FontID, currsize);
+ sizecount++;
+
+ }
+
+ return(sizecount);
+}
+
+
+/* T1_FreeGlyph(): Gives the memory used by a glyph back to the system. */
+int T1_FreeGlyph( GLYPH *glyph)
+{
+ if (glyph!=NULL) {
+ if (glyph->bits!=NULL) {
+ free(glyph->bits);
+ }
+ free(glyph);
+ }
+ return(0);
+}
+
+
+/* T1_FreeCompCharData(): Return emory used by a composite character
+ data information structure to the system */
+int T1_FreeCompCharData( T1_COMP_CHAR_INFO *cci)
+{
+
+ if (cci!=NULL) {
+ if (cci->pieces!=NULL) {
+ free( cci->pieces);
+ }
+ free( cci);
+ }
+ return( 0);
+}
+
+
+/* T1_DeleteFont(): Gives all memory used by a font back to the system.
+ If the font is successfully deinstalled 0 is returned. A positive value
+ indicates an error. */
+int T1_DeleteFont( int FontID)
+{
+
+ int result;
+
+
+ if (T1_CheckForFontID(FontID)==-1){ /* Invalid ID */
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ if (T1_CheckForFontID(FontID)==0) /* Font is not loaded */
+ return(0);
+
+ /* Memory freeing must be done hierachical, start with size dependent
+ data: */
+ result=T1_DeleteAllSizes(FontID);
+
+ /* Next we delete the AFM-mapping tables */
+ if (pFontBase->pFontArray[FontID].pEncMap!=NULL)
+ free( pFontBase->pFontArray[FontID].pEncMap);
+ if (pFontBase->pFontArray[FontID].pKernMap!=NULL)
+ free( pFontBase->pFontArray[FontID].pKernMap);
+
+ /* We do not touch the file name because this is only to be done by
+ T1_CloseLib(): */
+
+ /* The Type-1 area and tyhe AFM-area may only be free'ed, if the
+ font is a "physical" font and if its reference counter is 1, or
+ if it is a logical font. Otherwise, other logical font use this
+ physical one and it may not be free'ed. In this case, return the
+ number of logical fonts which refer to this physical font. */
+ if ((pFontBase->pFontArray[FontID].physical==1)&&
+ (pFontBase->pFontArray[FontID].refcount==1)){
+ /* Now handle the type 1 data: */
+ if (pFontBase->pFontArray[FontID].pType1Data!=NULL){
+ /* First: VM, which includes CharStrings, Private, .... */
+ free(pFontBase->pFontArray[FontID].vm_base);
+ /* .. then the struct itself: */
+ free(pFontBase->pFontArray[FontID].pType1Data);
+ pFontBase->pFontArray[FontID].pType1Data=NULL;
+ }
+
+ /* afm-data is yet there -> */
+ if (pFontBase->pFontArray[FontID].pAFMData!=NULL){
+ result=FreeAFMData(pFontBase->pFontArray[FontID].pAFMData);
+ pFontBase->pFontArray[FontID].pAFMData=NULL;
+ }
+ }
+ else{
+ if (pFontBase->pFontArray[FontID].physical==1){
+ /* font is physical and is referred to by other fonts ->
+ Do nothing further and return number of references: */
+
+ return(pFontBase->pFontArray[FontID].refcount - 1);
+ }
+ }
+
+ /* If we get here and the font is logical, we have to
+ decrement the refcount of the referred physical font */
+ if (pFontBase->pFontArray[FontID].physical==0){
+ pFontBase->pFontArray[pFontBase->pFontArray[FontID].refcount].refcount--;
+ }
+
+
+ /* Set remaining area explicitly to 0 (all but pFontFileName and
+ pAfmFileName!) */
+ pFontBase->pFontArray[FontID].pAFMData=NULL;
+ pFontBase->pFontArray[FontID].pType1Data=NULL;
+ pFontBase->pFontArray[FontID].pEncMap=NULL;
+ pFontBase->pFontArray[FontID].pKernMap=NULL;
+ pFontBase->pFontArray[FontID].pFontEnc=NULL;
+ pFontBase->pFontArray[FontID].pFontSizeDeps=NULL;
+ pFontBase->pFontArray[FontID].vm_base=NULL;
+ pFontBase->pFontArray[FontID].FontMatrix[0]=0.0;
+ pFontBase->pFontArray[FontID].FontMatrix[1]=0.0;
+ pFontBase->pFontArray[FontID].FontMatrix[2]=0.0;
+ pFontBase->pFontArray[FontID].FontMatrix[3]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[0]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[1]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[2]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[3]=0.0;
+ pFontBase->pFontArray[FontID].slant=0.0;
+ pFontBase->pFontArray[FontID].extend=0.0;
+ pFontBase->pFontArray[FontID].UndrLnPos=0.0;
+ pFontBase->pFontArray[FontID].UndrLnThick=0.0;
+ pFontBase->pFontArray[FontID].OvrLnPos=0.0;
+ pFontBase->pFontArray[FontID].OvrLnThick=0.0;
+ pFontBase->pFontArray[FontID].OvrStrkPos=0.0;
+ pFontBase->pFontArray[FontID].OvrStrkThick=0.0;
+ pFontBase->pFontArray[FontID].physical=0;
+ pFontBase->pFontArray[FontID].refcount=0;
+ pFontBase->pFontArray[FontID].space_position=0;
+ pFontBase->pFontArray[FontID].info_flags=0;
+
+ return(0);
+
+}
+
+
+
+/* FreeAFMData(): Give all memory used by afm-Information back to the
+ system. */
+int FreeAFMData( FontInfo *pAFMData)
+{
+ if (pAFMData != NULL){
+ if (pAFMData->gfi != NULL){
+ free(pAFMData->gfi->afmVersion); pAFMData->gfi->afmVersion = NULL;
+ free(pAFMData->gfi->fontName); pAFMData->gfi->fontName = NULL;
+ free(pAFMData->gfi->fullName); pAFMData->gfi->fullName = NULL;
+ free(pAFMData->gfi->familyName); pAFMData->gfi->familyName = NULL;
+ free(pAFMData->gfi->weight); pAFMData->gfi->weight = NULL;
+ free(pAFMData->gfi->version); pAFMData->gfi->version = NULL;
+ free(pAFMData->gfi->notice); pAFMData->gfi->notice = NULL;
+ free(pAFMData->gfi->encodingScheme); pAFMData->gfi->encodingScheme = NULL;
+ free(pAFMData->gfi); pAFMData->gfi = NULL;
+ }
+
+ if (pAFMData->cwi != NULL){
+ free(pAFMData->cwi); pAFMData->cwi = NULL;
+ }
+
+ if (pAFMData->cmi != NULL){
+ int i = 0;
+ CharMetricInfo *temp = pAFMData->cmi;
+ Ligature *node = temp->ligs;
+ for (i = 0; i < pAFMData->numOfChars; ++i){
+ for (node = temp->ligs; node != NULL; node = node->next){
+ free(node->succ); node->succ = NULL;
+ free(node->lig); node->lig = NULL;
+ }
+ free(temp->name); temp->name = NULL;
+ temp++;
+ }
+ free(pAFMData->cmi); pAFMData->cmi = NULL;
+ }
+
+ if (pAFMData->tkd != NULL){
+ free(pAFMData->tkd); pAFMData->tkd = NULL;
+ }
+
+ if (pAFMData->pkd != NULL){
+ int i = 0;
+ for (i = 0; i < pAFMData->numOfPairs; ++i){
+ free(pAFMData->pkd[i].name1); pAFMData->pkd[i].name1 = NULL;
+ free(pAFMData->pkd[i].name2); pAFMData->pkd[i].name2 = NULL;
+ }
+ free(pAFMData->pkd); pAFMData->pkd = NULL;
+ }
+
+ if (pAFMData->ccd != NULL){
+ int i = 0, j = 0;
+ CompCharData *ccd = pAFMData->ccd;
+ for (i = 0; i < pAFMData->numOfComps; ++i){
+ for (j = 0; j < ccd[i].numOfPieces; ++j){
+ free(ccd[i].pieces[j].pccName);
+ ccd[i].pieces[j].pccName = NULL;
+ }
+ free(ccd[i].ccName); ccd[i].ccName = NULL;
+ }
+ free(pAFMData->ccd); pAFMData->ccd = NULL;
+ }
+ free(pAFMData);
+ }
+ return(0);
+
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.h
new file mode 100644
index 00000000000..62c42aac818
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1delete.h
@@ -0,0 +1,49 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1delete.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-06-03
+ ----- Description: This file is part of the t1-library. It contains
+ functions for setting characters and strings of
+ characters.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1DELETE_C
+
+int T1_DeleteSize( int FontID, float size);
+int T1_DeleteAllSizes( int FontID);
+int T1_FreeGlyph( GLYPH *glyph);
+int T1_FreeCompCharData( T1_COMP_CHAR_INFO *cci);
+int T1_DeleteFont( int FontID);
+int FreeAFMData( FontInfo *pAFMData);
+
+#else
+
+extern int T1_DeleteSize( int FontID, float size);
+extern int T1_DeleteAllSizes( int FontID);
+extern int T1_FreeGlyph( GLYPH *glyph);
+extern int T1_FreeCompCharData( T1_COMP_CHAR_INFO *cci);
+extern int T1_DeleteFont( int FontID);
+extern int FreeAFMData( FontInfo *pAFMData);
+
+#endif
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.c
new file mode 100644
index 00000000000..2ec19592ac3
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.c
@@ -0,0 +1,808 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1enc.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions encoding handling at runtime.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1ENC_C
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <ctype.h>
+
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1enc.h"
+#include "t1env.h"
+#include "t1base.h"
+#include "t1finfo.h"
+
+
+static char defaultencodingname[]="Unspecified";
+
+/* This struct is retunred by the tokenizer. It contains indices
+ in linebuf for the first and the last character in a token */
+typedef struct
+{
+ int first;
+ int last;
+} CNTOKEN;
+
+
+
+/* ScanForWord(): Tokenizer for ScanEncodingFile.
+
+ - and return the first and last index in linebuf of the token
+
+ - skips whitespace and comments
+
+ - the vector marks [ and ] are considered token-delimiters
+ and also treated as independent tokens
+
+ - the literal escape char "/" is also considered as a token
+ delimiter but is not returned as a token.
+
+ This function leaves linebuf unmodified so that in case of a
+ failure, TryT1LibEncoding() will receive a clean buffer! */
+static CNTOKEN *ScanForWord( char *lb, int size)
+{
+ static int i=-1;
+ int j;
+ int comment;
+
+ static CNTOKEN currtoken={-1,-1};
+
+ /* Reset tokenizer */
+ if (lb==NULL) {
+ i=-1;
+ currtoken.first=-1;
+ currtoken.last=-1;
+ return NULL;
+ }
+
+ comment=0;
+ j=-1;
+
+ while (++i<size) {
+
+ /* Inside word */
+ if (j!=-1) {
+ /* Whitespace, comment, mark or literal ends word */
+ if ( (lb[i]=='%') ||
+ (lb[i]=='[') ||
+ (lb[i]==']') ||
+ (lb[i]=='/') ||
+ isspace((int)lb[i]) ) {
+ currtoken.last=i-1;
+ if ( (lb[i]=='[') ||
+ (lb[i]==']') ||
+ (lb[i]=='/') ) {
+ i--;
+ }
+ return &currtoken;
+ }
+ /* End not found, try next char */
+ continue;
+ }
+
+ /* first, check for special tokens */
+ if ( ( (lb[i]=='[') || (lb[i]==']')) ) {
+ currtoken.first=i;
+ currtoken.last=i;
+ return &currtoken;
+ }
+
+ /* Inside coment */
+ if (comment) {
+ if (lb[i]=='\n')
+ comment=0;
+ continue;
+ }
+ if (lb[i]=='%') {
+ comment=1;
+ continue;
+ }
+
+ /* **Whitespace */
+ if (isspace((int)lb[i]))
+ continue;
+
+ /* **Something else => word */
+ if (j==-1) {
+ j=i;
+ currtoken.first=j;
+ continue;
+ }
+ }
+
+ /* We're at the end of the buffer. Do we have a word? */
+ if (j!=-1) {
+ currtoken.last=i-1;
+ return &currtoken;
+ }
+
+ /* We have nothing */
+ return NULL;
+}
+
+
+/* tokcpy(): Copy a token from linebuf and append \0 */
+static char *tokcpy( char *dest, const char *src,
+ int first, int last)
+{
+ /* we do not do any range or error checking in this function */
+ memcpy( dest, &(src[first]), last-first+1);
+ dest[last-first+1]='\0';
+ return dest;
+}
+
+
+/* TryDVIPSEncoding(): Try to read an encoding file conforming to the
+ dvips specification. The file's contents is expected in a buffer
+ "linebuf" of size "filesize". Function returns the actual size of the
+ charnames memory or -1. */
+static int TryDVIPSEncoding( char *linebuf, int filesize, char *charnames)
+{
+
+ char token[256];
+ char *encname;
+ int charname_count=0;
+ int k=0;
+ CNTOKEN *currtokenP;
+
+
+ /* Initialize tokenizer */
+ currtokenP=ScanForWord( NULL, filesize);
+
+
+ currtokenP=ScanForWord(linebuf,filesize);
+ if ( (currtokenP!=NULL) &&
+ (linebuf[currtokenP->first]=='/')) {
+ /* / indicates start of postscript string literal, so this
+ could be a postscript .enc file */
+ if ((encname=(char *)malloc( (currtokenP->last - currtokenP->first + 1 + 1) *
+ sizeof( char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return -1;
+ }
+ else {
+ /* store encoding name */
+ if (currtokenP->first==currtokenP->last) {
+ /* PostScript encoding requires an identifier
+ so this does not seem to be a valid encoding file */
+ free( encname);
+ return( -1);
+ }
+ tokcpy( encname, linebuf, currtokenP->first+1, currtokenP->last);
+
+ }
+
+
+ /* Next, the PostScript "mark" character is expected */
+ if ( ((currtokenP=ScanForWord(linebuf,filesize))!=NULL) &&
+ (currtokenP->first==currtokenP->last) &&
+ (linebuf[currtokenP->first]!='[') ) {
+ /* Since we got up to here, there is a certain probability that
+ we have a PostScript encoding definition, but with invalid
+ syntax. So put log message. */
+ sprintf( err_warn_msg_buf,
+ "Expected encoding definition after %s, but did not find \"[\"-character",
+ encname);
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ if (encname!=NULL)
+ free( encname);
+ return( -1);
+ }
+
+ /* now, try to read 256 literal character names. We do not check
+ for charname count because this would bypass error checking. */
+ while((currtokenP=ScanForWord(linebuf,filesize))!=NULL) {
+
+ /* End of vector operator? */
+ if ( (currtokenP->first==currtokenP->last) && /* one character? */
+ (linebuf[currtokenP->first]==']')) {
+ break;
+ }
+ /* We drop the escape character if it is present. However,
+ non-literal name specifications are not allowed in
+ encoding vectors. */
+ if (linebuf[currtokenP->first]!='/') {
+ sprintf( err_warn_msg_buf,
+ "Found non-literal name (c=%c (first=%d, last=%d)) at slot %d while scanning encoding vector %s.",
+ linebuf[currtokenP->first],
+ currtokenP->first, currtokenP->last,
+ charname_count, encname);
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ if (encname!=NULL)
+ free( encname);
+ return( -1);
+ }
+ else {
+ /* OK, first char in token is "/". Does there follow a name? */
+ if ( currtokenP->first==currtokenP->last) {
+ sprintf( err_warn_msg_buf,
+ "Empty literal name at slot %d while scanning encoding vector %s.",
+ charname_count, encname);
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ if (encname!=NULL)
+ free( encname);
+ return( -1);
+ }
+ }
+
+ /* We seem to have a valid name -> copy name to *charnames-array */
+ tokcpy( &(charnames[k]), linebuf,
+ currtokenP->first+1, currtokenP->last);
+ k+=currtokenP->last-currtokenP->first+1; /* note: we have omitted "/"! */
+ /* Increment character counter */
+ charname_count++;
+ /* set index to start of next word/line */
+ } /* end of loop scanning character names */
+
+ if (currtokenP==NULL) {
+ /* In this case loop has been stopped because buffer end has been
+ reached. Since we did not alreay read the ]-character, this is
+ an error condition. */
+ sprintf( err_warn_msg_buf,
+ "Premature end of encoding definition encountered." );
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ free(encname);
+ return( -1);
+ }
+ /* Since the above loop has not been finished due to a NULL-ptr,
+ the token ] must have been encountered. Thus, read ahead and look
+ for def: */
+ if ((currtokenP=ScanForWord(linebuf,filesize))==NULL) {
+ sprintf( err_warn_msg_buf,
+ "Premature end of encoding definition encountered.");
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ free(encname);
+ return( -1);
+ }
+
+ if (strcmp(tokcpy( &(charnames[k]), linebuf,
+ currtokenP->first, currtokenP->last), "def")!=0) {
+ /* we store the current token in charnames only temporarily, so we
+ do not increment k! */
+ sprintf( err_warn_msg_buf,
+ "Closing token \"def\" expected but found \"%s\".",
+ &(charnames[k]));
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ free(encname);
+ return( -1);
+ }
+ /* Encoding definition is complete. we do not allow any further tokens
+ except comments. */
+ if ((currtokenP=ScanForWord(linebuf,filesize))!=NULL) {
+ tokcpy( token, linebuf, currtokenP->first, currtokenP->last);
+ sprintf( err_warn_msg_buf,
+ "Token \"%s\" after closing \"def\" in successfully scanned encoding file makes encoding definition file invalid", token);
+ T1_PrintLog( "TryDVIPSEncoding()", err_warn_msg_buf, T1LOG_WARNING);
+ free(encname);
+ return( -1);
+ }
+
+ /* we allow less than 256 character names. The missing ones are filled
+ now with .notdef */
+ for ( ; charname_count<256; charname_count++) {
+ tokcpy( &(charnames[k]), ".notdef", 0, 6);
+ k+=8;
+ }
+
+ /* Append the string for the encoding's name */
+ strcpy( &(charnames[k]), encname);
+ k +=strlen(encname)+1;
+
+ free(encname);
+
+ return( k);
+
+ } /* file does not start with / -> no dvips-encoding file */
+
+ return( -1);
+
+}
+
+
+
+/* TryT1LibEncoding(): Try to read an encoding file conforming to the
+ t1lib specification. The file's contents is expected in a buffer
+ "linebuf" of size "filesize". Function returns the actual size of the
+ charnames memory or -1. */
+static int TryT1LibEncoding( char *linebuf, int filesize, char *charnames)
+{
+ int i=0, j=0, k=0, l=0;
+
+ char save_char;
+ int charname_count=0;
+
+ while(i<filesize){
+ j=i; /* Save index of beginning of line */
+ while ( (i<filesize) &&
+ (isspace((int)linebuf[i])==0) )
+ i++;
+ if (i==filesize)
+ continue; /* this will leave this loop */
+ save_char=linebuf[i];
+ linebuf[i]=0; /* replace ' ' by ASCII-0 */
+ if (strncmp( "Encoding=", &linebuf[j], strlen("Encoding="))==0) {
+ /* We save the current file position to read the encoding name
+ later */
+ l=j+strlen("Encoding=");
+ /* set index to start of next line */
+ if (save_char=='\n')
+ i++;
+ else {
+ while ( (i<filesize) &&
+ (linebuf[i]!='\n') )
+ i++;
+ if (i==filesize)
+ continue; /* this will leave this loop */
+ i++;
+ }
+ /* keyword found => now, 256 lines should follow, each
+ specifying a character name and optionally some comment
+ to enhance readability: */
+ break;
+ }
+ i++;
+ }
+
+
+ while((i<filesize) && (charname_count<256)){
+ j=i; /* Save index of beginning of line */
+ while ( (i<filesize) &&
+ (isspace((int)linebuf[i])==0))
+ i++;
+ if (i==filesize)
+ continue; /* this will leave this loop */
+ save_char=linebuf[i];
+ linebuf[i]=0; /* replace whitespace by ASCII-0 */
+ /* Copy Name to *char_names-array */
+ while (linebuf[j])
+ charnames[k++]=linebuf[j++];
+ /* Append ASCII-0 */
+ charnames[k++]=linebuf[j++];
+ /* set index to start of next line */
+ if (save_char=='\n')
+ i++;
+ else {
+ while ( (i<filesize) &&
+ (linebuf[i]!='\n'))
+ i++;
+ if (i==filesize)
+ continue; /* this will leave this loop */
+ i++;
+ }
+ /* Increment character counter */
+ charname_count++;
+ }
+
+ /* Check if exactly 256 characters have been defined, if not,
+ return NULL: */
+ if (charname_count!=256){
+ return( -1);
+ }
+
+ /* Append the string for the encoding's name */
+ i=l;
+ while (isspace((int)linebuf[i])==0 && linebuf[i]!='\0'){
+ charnames[k++]=linebuf[i++];
+ }
+
+ if (i==l){
+ strcpy(&(charnames[k]), defaultencodingname);
+ k +=strlen(defaultencodingname+1);
+ charnames[k++]='\0';
+ }
+ else{
+ charnames[k++]='\0';
+ }
+
+ return( k);
+
+}
+
+
+
+/* ScanEncodingFile(): Read an encoding file of an appropriate format
+ and prepare the read data for usage with the type1 rasterizer, i.e.
+ generate an array char *enc[257]. Return the pointer to the data area
+ or NULL in case of an error.
+ */
+static char **ScanEncodingFile( char *FileName)
+{
+
+ char *linebuf;
+ char **encoding; /* charnames array */
+ char *charnames=NULL; /* charnames memory */
+
+ int cnsize; /* size of charnames memory, this will be
+ set from the Try...() function */
+
+ FILE *enc_fp;
+ int filesize;
+ int i=0, j=0;
+
+ if ((enc_fp=fopen( FileName,"rb"))==NULL){
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(NULL); /* file could not be opened
+ => no encoding read */
+ }
+
+
+ /* enc_fp points now to a (hopefully) valid encoding file */
+ /* Get the file size */
+ fseek( enc_fp, 0, SEEK_END);
+ filesize=ftell(enc_fp);
+ /* Reset fileposition to start */
+ fseek( enc_fp, 0, SEEK_SET);
+
+ if ((linebuf=(char *)calloc( filesize,
+ sizeof(char)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ /* Allocate space for character names, assume the worst case and realloc
+ later. The DVIPS-parser requires one more char in order to work properly */
+ if ((charnames=(char *)calloc( filesize + strlen(defaultencodingname+1),
+ sizeof(char)))==NULL){
+ free( linebuf);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ fread((char *)linebuf, sizeof(char), filesize, enc_fp);
+ fclose(enc_fp);
+
+
+ /* file is read. Operate now on the buffer. */
+
+
+ /* try dvips encoding file */
+ cnsize=TryDVIPSEncoding( linebuf, filesize, charnames);
+ if ( cnsize>-1) {
+ /* a debug message to log file */
+ sprintf( err_warn_msg_buf,
+ "Scanned file %s (%d bytes) as dvips-encoding file.",
+ FileName, filesize);
+ T1_PrintLog( "ScanEncodingFile()", err_warn_msg_buf, T1LOG_DEBUG);
+ }
+ else {
+ /* try t1lib encoding file */
+ cnsize=TryT1LibEncoding( linebuf, filesize, charnames);
+ if ( cnsize>-1) {
+ /* write a debug message to log file */
+ sprintf( err_warn_msg_buf,
+ "Scanned file %s (%d bytes) as t1lib-encoding file.",
+ FileName, filesize);
+ T1_PrintLog( "ScanEncodingFile()", err_warn_msg_buf, T1LOG_DEBUG);
+ }
+ else {
+ /* write a warning message because loading encoding
+ entirely failed */
+ sprintf( err_warn_msg_buf,
+ "Scanning file %s (%d bytes) as encoding file failed.",
+ FileName, filesize);
+ T1_PrintLog( "ScanEncodingFile()", err_warn_msg_buf, T1LOG_WARNING);
+ }
+ }
+
+ if ( cnsize<0) {
+ T1_errno=T1ERR_SCAN_ENCODING;
+ if ( charnames!=NULL) {
+ free(charnames);
+ }
+ free(linebuf);
+ return( NULL);
+ }
+
+
+ /* cnsize contains the size of the charnames' memory, so let's
+ now realloc charnames */
+ charnames=(char *)realloc( charnames, cnsize*sizeof(char));
+ /* Now initialize the array with the start-addresses of the character
+ name strings */
+ /* We alloc 257 to save the encoding's name at the 257th entry */
+ if ((encoding=(char **)malloc(257*sizeof(char *)))==NULL) {
+ if ( charnames!=NULL) {
+ free(charnames);
+ }
+ free(linebuf);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ while (i<257) {
+ encoding[i]=&charnames[j];
+ while (charnames[j])
+ j++;
+ j++;
+ i++;
+ }
+
+ free( linebuf);
+ return(encoding);
+
+}
+
+
+
+/* T1_LoadEncoding(): Load an encoding file to have a new encoding
+ available. If successful, the pointer to the encoding array is
+ returned. In case of an error, the return value is NULL.
+ */
+char **T1_LoadEncoding( char *FileName)
+{
+ char **Encoding;
+ char *EncFileName;
+
+ if( FileName==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ if ((EncFileName=intT1_Env_GetCompletePath( FileName, T1_ENC_ptr))==NULL){
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(NULL);
+ }
+ Encoding=ScanEncodingFile(EncFileName);
+ free(EncFileName);
+
+ return(Encoding);
+}
+
+
+
+/* T1_DeleteEncoding() free a previously loaded encoding */
+int T1_DeleteEncoding( char **encoding)
+{
+ if (encoding){
+ /* First free character names memory */
+ free( encoding[0]);
+ /* then, free pointer array */
+ free( encoding);
+ }
+ return(0);
+
+}
+
+
+
+/* T1_ReencodeFont(): Assign a new encoding to an existent font. This is
+ only allowed if no size dependent data exists for the font in question.
+ Moreover, the font must be loaded already since must get the position
+ of the space-character. Function returns 0 if successful, and -1 otherwise.
+ */
+int T1_ReencodeFont( int FontID, char **Encoding)
+{
+ int i, j, k, l, m;
+ char *charname;
+ PairKernData *pkd;
+ METRICS_ENTRY *kern_tbl;
+ int char1, char2;
+
+
+ /* First, check for valid font ID residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ /* Second, check whether size-dependent data exists: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps != NULL){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pFontBase->pFontArray[FontID].pFontEnc=Encoding;
+
+
+ /* We have to update the space_position-entry in the FONTPRIVATE.
+ If space is not found (not encoded), set it to -1: */
+ pFontBase->pFontArray[FontID].space_position=-1;
+ i=0;
+ if (Encoding){ /* external encoding */
+ while (i<256){
+ if (strcmp( (char *)pFontBase->pFontArray[FontID].pFontEnc[i],
+ "space")==0){
+ /* space found at position i: */
+ pFontBase->pFontArray[FontID].space_position=i;
+ break;
+ }
+ i++;
+ }
+ }
+ else{ /* reencoding to internal encoding */
+ while (i<256){
+ if (strcmp( (char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[i].data.arrayP,
+ "space")==0){
+ /* space found at position i: */
+ pFontBase->pFontArray[FontID].space_position=i;
+ break;
+ }
+ i++;
+ }
+ }
+
+ /* Now update afm index mapping: */
+ if (pFontBase->pFontArray[FontID].pAFMData != NULL){
+ for (i=0; i<256; i++) {
+ charname=T1_GetCharName( FontID, i);
+ /* in a first loop check for ordinary characters */
+ for ( j=0; j<pFontBase->pFontArray[FontID].pAFMData->numOfChars; j++) {
+ if (strcmp( charname,
+ pFontBase->pFontArray[FontID].pAFMData->cmi[j].name)==0) {
+ pFontBase->pFontArray[FontID].pEncMap[i]=j+1; /* index 0 is reserved! */
+ continue;
+ }
+ }
+ /* if nothing has been found, check for composite characters */
+ for ( j=0; j<pFontBase->pFontArray[FontID].pAFMData->numOfComps; j++) {
+ if (strcmp( charname,
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].ccName)==0) {
+ pFontBase->pFontArray[FontID].pEncMap[i]=-(j+1); /* index 0 is reserved! */
+ /* Note: Metrics of composite characters already exist so that there is
+ no need to recalculate them! */
+ continue;
+ }
+ }
+ }
+ /* Update kerning table */
+ pFontBase->pFontArray[FontID].KernMapSize=0;
+ k=pFontBase->pFontArray[FontID].pAFMData->numOfPairs;
+ if (k>0){ /* i.e., there are any pairs */
+ /* OK, it does not suffice to alloc numOfPairs METRICS_ENTRYs, because
+ a given character might be encoded at several locations and kerning
+ should still work. As a worst case estimation, we allocate 256^2
+ and realloc later. */
+ if ((pFontBase->pFontArray[FontID].pKernMap=
+ (METRICS_ENTRY *)malloc( (256*256) *sizeof( METRICS_ENTRY)))==NULL){
+ sprintf( err_warn_msg_buf, "Error allocating memory for metrics map (FontID=%d)",
+ FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ kern_tbl=pFontBase->pFontArray[FontID].pKernMap;
+ pkd=pFontBase->pFontArray[FontID].pAFMData->pkd;
+ j=0;
+ for ( i=0; i<k; i++) {
+ /* We do not check T1_GetEncodingIndices() against the return value
+ NULL because we just loading the font in question: */
+ l=0;
+ while ((char1=(T1_GetEncodingIndices( FontID, pkd[i].name1))[l++])!=-1) {
+ /* pair could be relevant in current encoding */
+ m=0;
+ while ((char2=(T1_GetEncodingIndices( FontID, pkd[i].name2))[m++])!=-1) {
+ /* Since we get here we have a relevant pair -->
+ Put char1 in higher byte and char2 in LSB: */
+ kern_tbl[j].chars=(char1 << 8) | char2;
+ /* We only make use of horizontal kerning */
+ kern_tbl[j].hkern=pkd[i].xamt;
+ j++;
+ } /* while (char2) */
+ } /* while (char1) */
+ } /* for */
+ /* We are done, realloc memory: */
+ kern_tbl=(METRICS_ENTRY*) realloc( kern_tbl, j*sizeof(METRICS_ENTRY));
+ /* We now sort the kerning array with respect to char indices */
+ qsort( kern_tbl, (size_t) j, sizeof(METRICS_ENTRY),
+ &cmp_METRICS_ENTRY );
+ /* Finally write back pointer for the case that realloc changed the
+ pointer */
+ pFontBase->pFontArray[FontID].pKernMap=kern_tbl;
+ pFontBase->pFontArray[FontID].KernMapSize=j;
+ }
+ else {
+ pFontBase->pFontArray[FontID].pKernMap=NULL;
+ }
+ }
+ return(0);
+}
+
+
+
+/* T1_SetDefaultEncoding(): Set the default encoding vector that's
+ used when fonts are loaded.
+ */
+int T1_SetDefaultEncoding( char **encoding)
+{
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pFontBase->default_enc=encoding;
+ return(0);
+}
+
+
+/* T1_GetEncodingScheme(): Get the name associated with the current
+ encoding vector of font FontID */
+char *T1_GetEncodingScheme( int FontID)
+{
+
+ static char enc_scheme[256];
+
+ /* First, check for valid font ID residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ if (pFontBase->pFontArray[FontID].pFontEnc==NULL){
+ if (pFontBase->pFontArray[FontID].info_flags & USES_STANDARD_ENCODING){
+ strcpy( enc_scheme, "StandardEncoding");
+ }
+ else {
+ strcpy( enc_scheme, "FontSpecific");
+ }
+ }
+ else
+ strcpy( enc_scheme, pFontBase->pFontArray[FontID].pFontEnc[256]);
+
+ return(enc_scheme);
+
+}
+
+
+/* A function for comparing METRICS_ENTRY structs */
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2)
+{
+ if (((METRICS_ENTRY *)entry1)->chars <
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(-1);
+ if (((METRICS_ENTRY *)entry1)->chars >
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(1);
+ return(0); /* This should not happen */
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.h
new file mode 100644
index 00000000000..df9a07ad95f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1enc.h
@@ -0,0 +1,47 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1enc.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-06-16
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t11enc.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1ENC_C
+
+static char **ScanEncodingFile( char *FileName);
+char **T1_LoadEncoding( char *FileName);
+int T1_DeleteEncoding( char **encoding);
+int T1_ReencodeFont( int FontID, char **Encoding);
+int T1_SetDefaultEncoding( char **encoding);
+char *T1_GetEncodingScheme( int FontID);
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2);
+
+#else
+
+extern char **T1_LoadEncoding( char *FileName);
+extern int T1_DeleteEncoding( char **encoding);
+extern int T1_ReencodeFont( int FontID, char **Encoding);
+extern int T1_SetDefaultEncoding( char **encoding);
+extern char *T1_GetEncodingScheme( int FontID);
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.c
new file mode 100644
index 00000000000..6a68c0a4bd9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.c
@@ -0,0 +1,1243 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1env.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2007-12-22
+ ----- Description: This file is part of the t1-library. It implements
+ the reading of a configuration file and path-searching
+ of type1-, afm- and encoding files.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#define T1ENV_C
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <ctype.h>
+
+
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/fontmisc.h"
+
+#include "sysconf.h"
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1env.h"
+#include "t1misc.h"
+#include "t1base.h"
+
+
+/* The following static variables are used to store information on the distinct
+ file search paths:
+
+ -1 t1lib has not yet been initialized!
+ 0 t1lib has been initialized and default paths have been setup
+ n (>0) there are n path elements for current search path type, either built
+ from a FontDataBase file or from explicit fucntion calls.
+*/
+
+static int pfab_no=-1;
+static int afm_no=-1;
+static int enc_no=-1;
+static int fdb_no=-1;
+static int fdbxlfd_no=-1;
+
+static char path_sep_char='\0';
+static char path_sep_string[2];
+
+static char pathbuf[2048];
+
+/* Define some default search paths */
+#ifndef VMS
+static char T1_pfab[]=".";
+static char T1_afm[]=".";
+static char T1_enc[]=".";
+#else
+static char T1_pfab[]="sys$disk:[]";
+static char T1_afm[]="sys$disk:[]";
+static char T1_enc[]="sys$disk:[]";
+#endif
+char T1_fdb[]="FontDataBase";
+char T1_fdbxlfd[]=""; /* By default, we do not search XLFD databases. */
+
+
+/* keywords recognized in config file */
+static const char enc_key[]="ENCODING";
+static const char pfab_key[]="TYPE1";
+static const char afm_key[]="AFM";
+static const char fdb_key[]="FONTDATABASE";
+static const char fdbxlfd_key[]="FONTDATABASEXLFD";
+
+
+/* qstrncpy(): Copy bytes from srcP to to destP. srcP is count bytes long
+ and destP is the number of quoted characters shorter. That is, count
+ refers to the number of characters including the escapement chars in
+ srcP! */
+static void qstrncpy( char *destP, const char *srcP, long nochars)
+{
+ long i;
+ long j;
+
+ i=0; /* dest-index */
+ j=0; /* src-index */
+
+ while (j<nochars) {
+ if (srcP[j]=='\\') {
+ if (srcP[j+1]=='"') {
+ j++; /* escaped quotation character --> omit escape char. */
+ }
+ }
+ else { /* normal character */
+ destP[i++]=srcP[j++];
+ }
+ }
+}
+
+
+
+
+/* Setup the default paths for searching the distinct file types. If
+ paths have been setup explicitly, skip the step of setting up a default path. */
+void intT1_SetupDefaultSearchPaths( void)
+{
+
+ path_sep_char=PATH_SEP_CHAR;
+ sprintf( path_sep_string, "%c", path_sep_char);
+
+ /* We set the number of stored path elements 0 so that we can distiguish
+ between explicitly setup paths and default paths in intT1_ScanConfigFile(). */
+ if (pfab_no==-1) {
+ T1_PFAB_ptr=(char**) calloc( 2, sizeof(char*));
+ T1_PFAB_ptr[0]=(char*)malloc(strlen(T1_pfab)+1);
+ strcpy(T1_PFAB_ptr[0],T1_pfab);
+ pfab_no=0;
+ }
+
+ if (afm_no==-1) {
+ T1_AFM_ptr=(char**) calloc( 2, sizeof(char*));
+ T1_AFM_ptr[0]=(char*)malloc(strlen(T1_afm)+1);
+ strcpy(T1_AFM_ptr[0],T1_afm);
+ afm_no=0;
+ }
+
+ if (enc_no==-1) {
+ T1_ENC_ptr=(char**) calloc( 2, sizeof(char*));
+ T1_ENC_ptr[0]=(char*)malloc(strlen(T1_enc)+1);
+ strcpy(T1_ENC_ptr[0],T1_enc);
+ enc_no=0;
+ }
+
+ if (fdb_no==-1) {
+ T1_FDB_ptr=(char**) calloc( 2, sizeof(char*));
+ T1_FDB_ptr[0]=(char*)malloc(strlen(T1_fdb)+1);
+ strcpy(T1_FDB_ptr[0],T1_fdb);
+ fdb_no=0;
+ }
+
+ if (fdbxlfd_no==-1) {
+ /* The XLFD font data base defaults to be empty */
+ T1_FDBXLFD_ptr=(char**) calloc( 1, sizeof(char*));
+ fdbxlfd_no=0;
+ }
+}
+
+
+/* This function is called from T1_CloseLib(). We have to indicate the state
+ of a non-initialzed t1lib! */
+void intT1_FreeSearchPaths( void)
+{
+ int i;
+
+ i=0;
+ if (T1_PFAB_ptr!=NULL) {
+ while (T1_PFAB_ptr[i]!=NULL) {
+ free(T1_PFAB_ptr[i]);
+ T1_PFAB_ptr[i++]=NULL;
+ }
+ free( T1_PFAB_ptr);
+ T1_PFAB_ptr=NULL;
+ }
+ i=0;
+ if (T1_AFM_ptr!=NULL) {
+ while (T1_AFM_ptr[i]!=NULL) {
+ free(T1_AFM_ptr[i]);
+ T1_AFM_ptr[i++]=NULL;
+ }
+ free( T1_AFM_ptr);
+ T1_AFM_ptr=NULL;
+ }
+ i=0;
+ if (T1_ENC_ptr!=NULL) {
+ while (T1_ENC_ptr[i]!=NULL) {
+ free(T1_ENC_ptr[i]);
+ T1_ENC_ptr[i++]=NULL;
+ }
+ free( T1_ENC_ptr);
+ T1_ENC_ptr=NULL;
+ }
+ i=0;
+ if (T1_FDB_ptr!=NULL) {
+ while (T1_FDB_ptr[i]!=NULL) {
+ free(T1_FDB_ptr[i]);
+ T1_FDB_ptr[i++]=NULL;
+ }
+ free( T1_FDB_ptr);
+ T1_FDB_ptr=NULL;
+ }
+ i=0;
+ if (T1_FDBXLFD_ptr!=NULL) {
+ while (T1_FDBXLFD_ptr[i]!=NULL) {
+ free(T1_FDBXLFD_ptr[i]);
+ T1_FDBXLFD_ptr[i++]=NULL;
+ }
+ free( T1_FDBXLFD_ptr);
+ T1_FDBXLFD_ptr=NULL;
+ }
+ /* indicate t1lib non-initialized */
+ pfab_no=-1;
+ afm_no=-1;
+ enc_no=-1;
+ fdb_no=-1;
+ fdbxlfd_no=-1;
+
+ return;
+}
+
+
+/* ScanConfigFile(): Read a configuration file and scan and save the
+ environment strings used for searching pfa/pfb-, afm- and encoding
+ files as well as the name of the font database file. */
+int intT1_ScanConfigFile( void)
+{
+
+ char *env_str;
+ char *linebuf;
+ char *usershome;
+ char *cnffilepath;
+ char *globalcnffilepath;
+ static int linecnt;
+ char local_path_sep_char;
+ int quoted=0;
+ int quotecnt=0;
+ FILE *cfg_fp;
+ int filesize, i, j, k;
+ int ignoreline=0;
+
+ char*** destP=NULL;
+ int *idestP=NULL;
+ char* curr_key=NULL;
+
+ /* First, get the string stored in the environment variable: */
+ env_str=getenv(ENV_CONF_STRING);
+ linecnt=1;
+
+ if (!env_str) {
+ /* environment variable not set, try to open default file
+ in user's home directory and afterwards global config file */
+ if ((usershome=getenv("HOME"))!=NULL) {
+ cnffilepath=(char *)malloc((strlen(usershome) +
+ strlen(T1_CONFIGFILENAME) + 2
+ ) * sizeof(char));
+ if (cnffilepath==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( cnffilepath, usershome);
+ }
+ else {
+ cnffilepath=(char *)malloc((strlen(T1_CONFIGFILENAME) + 2
+ ) * sizeof(char));
+ }
+ strcat( cnffilepath, DIRECTORY_SEP);
+ strcat( cnffilepath, T1_CONFIGFILENAME);
+
+ globalcnffilepath=(char*)malloc((strlen(GLOBAL_CONFIG_DIR) +
+ strlen(GLOBAL_CONFIG_FILE) + 2
+ ) * sizeof(char));
+ if (globalcnffilepath==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( globalcnffilepath, GLOBAL_CONFIG_DIR);
+ strcat( globalcnffilepath, DIRECTORY_SEP);
+ strcat( globalcnffilepath, GLOBAL_CONFIG_FILE);
+
+ if ((cfg_fp=fopen( cnffilepath, "rb"))==NULL){
+ sprintf( err_warn_msg_buf, "Could not open configfile %s",
+ cnffilepath);
+ T1_PrintLog( "ScanConfigFile()", err_warn_msg_buf, T1LOG_STATISTIC);
+ /* Try global config file */
+ if ((cfg_fp=fopen( globalcnffilepath, "rb"))==NULL){
+ sprintf( err_warn_msg_buf, "Could not open global configfile %s",
+ globalcnffilepath);
+ T1_PrintLog( "ScanConfigFile()", err_warn_msg_buf, T1LOG_WARNING);
+ }
+ else{
+ sprintf( err_warn_msg_buf, "Using %s as Configfile (global)",
+ globalcnffilepath);
+ T1_PrintLog( "ScanConfigFile()", err_warn_msg_buf, T1LOG_STATISTIC);
+ }
+ }
+ else{
+ sprintf( err_warn_msg_buf, "Using %s as Configfile (user's)",
+ cnffilepath);
+ T1_PrintLog( "ScanConfigFile()", err_warn_msg_buf, T1LOG_STATISTIC);
+ }
+ free( cnffilepath);
+ free( globalcnffilepath);
+ if (cfg_fp==NULL){
+ T1_PrintLog( "ScanConfigFile()",
+ "Neither user's nor global Configfile has been found",
+ T1LOG_WARNING);
+ return(0);
+ }
+ }
+ else {
+ /* open specified file for reading the configuration */
+ if ((cfg_fp=fopen(env_str,"rb"))==NULL){
+ T1_PrintLog( "ScanConfigFile()",
+ "Configfile as specified by Environment has not been found",
+ T1LOG_WARNING);
+ return(0); /* specified file could not be openend
+ => no config paths read */
+ }
+ else {
+ sprintf( err_warn_msg_buf, "Using %s as Configfile (environment)",
+ env_str);
+ T1_PrintLog( "ScanConfigFile()", err_warn_msg_buf, T1LOG_STATISTIC);
+ }
+ }
+
+
+ /* cfg_fp points now to a valid config file */
+ /* Get the file size */
+ fseek( cfg_fp, 0, SEEK_END);
+ filesize=ftell(cfg_fp);
+ /* Reset fileposition to start */
+ fseek( cfg_fp, 0, SEEK_SET);
+
+ if ((linebuf=(char *)calloc( filesize+1,
+ sizeof(char)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+
+ fread((char *)linebuf, sizeof(char), filesize, cfg_fp);
+ fclose(cfg_fp);
+
+ i=0;
+
+ /* this might be overwritten on a per file basis */
+ local_path_sep_char=path_sep_char;
+
+ while(i<filesize) {
+ ignoreline=0;
+ j=i; /* Save index of beginning of line */
+ while ((linebuf[i]!='=') && (linebuf[i]!='\n') && (i<filesize)) {
+ i++;
+ }
+ if (i==filesize) {
+ free( linebuf);
+ return(i);
+ }
+
+ if (strncmp( enc_key, &linebuf[j], 8)==0) {
+ /* setup target */
+ destP=&T1_ENC_ptr;
+ idestP=&enc_no;
+ curr_key=(char*)enc_key;
+ }
+ else if (strncmp( pfab_key, &linebuf[j], 5)==0) {
+ /* setup target */
+ destP=&T1_PFAB_ptr;
+ idestP=&pfab_no;
+ curr_key=(char*)pfab_key;
+ }
+ else if (strncmp( afm_key, &linebuf[j], 3)==0) {
+ /* setup target */
+ destP=&T1_AFM_ptr;
+ idestP=&afm_no;
+ curr_key=(char*)afm_key;
+ }
+ else if (strncmp( fdbxlfd_key, &linebuf[j], 16)==0) {
+ /* The handling here is somewhat specific. XLFD font database
+ specifications may coexist with standard font database
+ specification. However, if the standard font database is
+ the default value, an existing XLFD specification clears
+ this default value. Let this precede the standard fdb because
+ otherwise, this code would never be reached. */
+ if (fdb_no==0) { /* default paths are currently setup, get rid of them */
+ free(T1_FDB_ptr[0]);
+ T1_FDB_ptr[0]=NULL;
+ }
+
+ /* setup target */
+ destP=&T1_FDBXLFD_ptr;
+ idestP=&fdbxlfd_no;
+ curr_key=(char*)fdbxlfd_key;
+ }
+ else if (strncmp( fdb_key, &linebuf[j], 12)==0) {
+ /* setup target */
+ destP=&T1_FDB_ptr;
+ idestP=&fdb_no;
+ curr_key=(char*)fdb_key;
+ }
+ else {
+ ignoreline=1;
+ T1_PrintLog( "ScanConfigFile()", "Ignoring line %d",
+ T1LOG_DEBUG, linecnt);
+ }
+
+ /* If appropriate, scan this line. */
+ if (ignoreline==0) {
+ /* Check for an explicitly assigned value */
+ if (*idestP==0) { /* default paths are currently setup, get rid of them */
+ if ((*destP)[0]!=NULL) {
+ free((*destP)[0]);
+ (*destP)[0]=NULL;
+ }
+ }
+ else { /* append to existing paths */
+ T1_PrintLog( "ScanConfigFile()",
+ "Appending to existing %s search path",
+ T1LOG_DEBUG, curr_key);
+ }
+ while ( (!isspace((int)linebuf[i])) && (i<filesize) ) {
+ k=++i; /* index to current path element */
+ (*idestP)++;
+ quotecnt=0;
+ if (linebuf[i]=='"') { /* We have a quoted string */
+ quoted=1;
+ k=++i;
+ while ( 1) {
+ if ( linebuf[i]=='"' ) { /* we find a quote-char */
+ if ( linebuf[i-1]!='\\' )
+ break; /* not escaped --> end of path specification */
+ else
+ quotecnt++;
+ } /* some other char */
+ if (linebuf[i]=='\n') { /* a newline in a quoted string? Perhabs, quotes do not match! */
+ T1_PrintLog( "ScanConfigFile()",
+ "Newline in quoted %s-string in line %d, column %d, of config file! Closing quote missing?",
+ T1LOG_WARNING, curr_key, linecnt, i-j+1);
+ j=i+1; /* resynchronize linecount */
+ linecnt++;
+ }
+ if (i<filesize) { /* filesize not exceeded? */
+ i++;
+ }
+ else { /* issue error msg because end of quotation is missing */
+ T1_PrintLog( "ScanConfigFile()", "Unterminated quoted string in config file",
+ T1LOG_ERROR);
+ return -1;
+ }
+ }
+ }
+ else {
+ quoted=0;
+ while ( (linebuf[i]!=local_path_sep_char) && (!isspace((int)linebuf[i])) && (i<filesize) )
+ i++;
+ }
+ if (((*destP)=(char**)realloc( (*destP), ((*idestP)+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ if (((*destP)[(*idestP)-1]=(char*)malloc((i-k-quotecnt+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ if (quoted==0) {
+ strncpy( (*destP)[*idestP-1], &(linebuf[k]), i-k);
+ (*destP)[(*idestP)-1][i-k]='\0';
+ }
+ else {
+ qstrncpy( (*destP)[(*idestP)-1], &(linebuf[k]), i-k);
+ (*destP)[(*idestP)-1][i-k-quotecnt]='\0';
+ i++; /* step over closing quote */
+ }
+ (*destP)[(*idestP)]=NULL; /* indicate end of string list */
+ }
+ }
+
+ /* skip remaining of line or file */
+ while ((linebuf[i]!='\n')&&(i<filesize))
+ i++;
+ i++;
+ linecnt++;
+ }
+ /* file should now be read in */
+ free( linebuf);
+
+ return(i);
+
+}
+
+
+
+/* intT1_Env_GetCompletePath( ): Get a full path name from the file specified by
+ argument 1 in the environment specified by argument 2. Return the pointer
+ to the path string or NULL if no file was found.*/
+char *intT1_Env_GetCompletePath( char *FileName,
+ char **env_ptr )
+{
+ struct stat filestats; /* A structure where fileinfo is stored */
+ int fnamelen, i, j;
+ char *FullPathName;
+ char *StrippedName;
+
+
+ if (FileName==NULL)
+ return(NULL);
+ fnamelen=strlen(FileName);
+
+ /* We check whether absolute or relative pathname is given. If so,
+ stat() it and if appropriate, return that string immediately. */
+ if ( (FileName[0]==DIRECTORY_SEP_CHAR)
+ ||
+ ((fnamelen>1) && (FileName[0]=='.') &&
+ (FileName[1]==DIRECTORY_SEP_CHAR))
+ ||
+ ((fnamelen>2) && (FileName[0]=='.') &&
+ (FileName[1]=='.') && (FileName[2]==DIRECTORY_SEP_CHAR))
+#if defined(MSDOS) | defined(_WIN32) | defined (__EMX__)
+ ||
+ ((isalpha(FileName[0])) && (FileName[1]==':'))
+#endif
+#ifdef VMS
+ || (strchr(FileName,':') != NULL)
+#endif
+ )
+ {
+ /* Check for existence of the path: */
+ if (!stat( FileName, &filestats)) {
+ if (t1lib_log_file!=NULL) {
+ sprintf( err_warn_msg_buf, "stat()'ing complete path %s successful",
+ FileName);
+ T1_PrintLog( "intT1_Env_GetCompletePath()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ /* Return a copy of the string */
+ if ((FullPathName=(char *)malloc( fnamelen + 1))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ strcpy( FullPathName, FileName);
+ return(FullPathName);
+ }
+ if (t1lib_log_file!=NULL){
+ sprintf( err_warn_msg_buf, "stat()'ing complete path %s failed",
+ FileName);
+ T1_PrintLog( "intT1_Env_GetCompletePath()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ /* Trying to locate absolute path spec. failed. We try to recover
+ by removing the path component and searching in the remaining search
+ path entries. This depends on the OS. */
+ i=fnamelen-1;
+ StrippedName=&(FileName[i]);
+ while ( FileName[i]!=DIRECTORY_SEP_CHAR
+#if defined(VMS)
+ /* What exactly to do for VMS? */
+#elif defined(MSDOS) | defined(_WIN32) | defined (__EMX__) | defined(_MSC_VER)
+ /* We take a drive specification into account. This means we
+ step back until the directory separator or a drive specifier
+ appears! */
+ && FileName[i]!=':'
+#endif
+ ) {
+ i--;
+ }
+ i++;
+ StrippedName=&FileName[i];
+ if (t1lib_log_file!=NULL){
+ sprintf( err_warn_msg_buf, "path %s stripped to %s",
+ FileName, StrippedName);
+ T1_PrintLog( "intT1_Env_GetCompletePath()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ }
+ else{ /* We have a relative path name */
+ StrippedName=&FileName[0];
+ }
+
+ i=0;
+ while (env_ptr[i]!=NULL) {
+ /* Copy current path element: */
+ strcpy( pathbuf, env_ptr[i]);
+ /* cut a trailing directory separator */
+ j=strlen(pathbuf);
+ if (pathbuf[j-1]==DIRECTORY_SEP_CHAR)
+ pathbuf[--j]='\0';
+ /* Add the directory separator: */
+#ifdef VMS
+ { char *p= strrchr(pathbuf, DIRECTORY_SEP_CHAR);
+ if (p && *(p+1) == '\0')
+ *p = '\0';
+ }
+#endif
+ strcat( pathbuf, DIRECTORY_SEP);
+ /* And finally the filename.
+ The following is fix against a vulnerability given by passing in
+ large filenames, cf.:
+
+ http://www.securityfocus.com/bid/25079
+
+ or
+
+ http://packetstormsecurity.nl/0707-advisories/t1lib.txt
+
+ If current pathbuf + StrippedName + 1 byte for NULL is bigger than
+ pathbuf log a warning and try next pathbuf */
+ if ( strlen(pathbuf) + strlen(StrippedName) + 1 > sizeof(pathbuf) ) {
+ T1_PrintLog( "intT1_Env_GetCompletePath()", "Omitting suspicious long candidate path in order to prevent buffer overflow.",
+ T1LOG_WARNING);
+ i++;
+ continue;
+ }
+ strcat( pathbuf, StrippedName);
+
+ /* Check for existence of the path: */
+ if (!stat( pathbuf, &filestats)) {
+ if ((FullPathName=(char*)malloc( (j+fnamelen+2)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ strcpy( FullPathName, pathbuf);
+ if (t1lib_log_file!=NULL){
+ sprintf( err_warn_msg_buf, "stat()'ing %s successful",
+ FullPathName);
+ T1_PrintLog( "intT1_Env_GetCompletePath()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ return(FullPathName);
+ }
+ if (t1lib_log_file!=NULL){
+ sprintf( err_warn_msg_buf, "stat()'ing %s failed",
+ pathbuf);
+ T1_PrintLog( "intT1_Env_GetCompletePath()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ /* We didn't find the file --> try next path entry */
+ i++;
+ }
+ /* If we get here, no file was found at all, so return a NULL-pointer */
+ return(NULL);
+}
+
+
+
+/* T1_SetFileSearchPath(): Set the search path to find files of the
+ specified type and return 0 if successful and -1 otherwise. An existing
+ path is overwritten rigorously, unless the database already contains fonts.
+ In the latter case the function returns with an error status.
+ Multiple path types may be specified as a bitmask!
+*/
+int T1_SetFileSearchPath( int type, char *pathname)
+{
+
+ int i;
+ int pathlen;
+
+
+ if (pathname==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ /* We do not allow to change the searchpath if the database already
+ contains one or more entries. */
+ if (T1_GetNoFonts()>0){
+ sprintf( err_warn_msg_buf, "Path %s not set, database is not empty",
+ pathname);
+ T1_PrintLog( "T1_SetFileSearchPath()", err_warn_msg_buf,
+ T1LOG_STATISTIC);
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pathlen=strlen(pathname)+1;
+ /* Throw away a possibly existing path */
+ if (type & T1_PFAB_PATH){
+ if (pfab_no==-1) {
+ T1_PFAB_ptr=NULL; /* realloc() will do a malloc() */
+ }
+ else {
+ /* throw away current paths */
+ i=0;
+ while (T1_PFAB_ptr[i]!=NULL) {
+ free (T1_PFAB_ptr[i++]);
+ }
+ }
+ if ((T1_PFAB_ptr=(char**)realloc( T1_PFAB_ptr, 2*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ if ((T1_PFAB_ptr[0]=(char*)malloc(pathlen*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( T1_PFAB_ptr[0], pathname);
+ T1_PFAB_ptr[1]=NULL;
+ pfab_no=1;
+ }
+ if (type & T1_AFM_PATH){
+ if (afm_no==-1) {
+ T1_AFM_ptr=NULL; /* realloc() will do a malloc() */
+ }
+ else {
+ /* throw away current paths */
+ i=0;
+ while (T1_AFM_ptr[i]!=NULL) {
+ free (T1_AFM_ptr[i++]);
+ }
+ }
+ if ((T1_AFM_ptr=(char**)realloc( T1_AFM_ptr, 2*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ if ((T1_AFM_ptr[0]=(char*)malloc(pathlen*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( T1_AFM_ptr[0], pathname);
+ T1_AFM_ptr[1]=NULL;
+ afm_no=1;
+ }
+ if (type & T1_ENC_PATH){
+ if (enc_no==-1) {
+ T1_ENC_ptr=NULL; /* realloc() will do a malloc() */
+ }
+ else {
+ /* throw away current paths */
+ i=0;
+ while (T1_ENC_ptr[i]!=NULL) {
+ free (T1_ENC_ptr[i++]);
+ }
+ }
+ if ((T1_ENC_ptr=(char**)realloc( T1_ENC_ptr, 2*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ if ((T1_ENC_ptr[0]=(char*)malloc(pathlen*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( T1_ENC_ptr[0], pathname);
+ T1_ENC_ptr[1]=NULL;
+ enc_no=1;
+ }
+
+ return(0);
+
+}
+
+
+
+/* T1_GetFileSearchPath(): Return the specified file search path
+ or NULL if an error occurred. Note: We do only one path at a
+ time, so that if a bitmask is specified, the first match wins.
+ The returned path is formatted using the actual PATH_SEP_CHAR. */
+char *T1_GetFileSearchPath( int type)
+{
+ static char *out_ptr;
+ int i;
+ int pathlen;
+ char **src_ptr=NULL;
+
+
+ if (out_ptr!=NULL)
+ free( out_ptr);
+ out_ptr=NULL;
+
+ if (type & T1_PFAB_PATH) {
+ src_ptr=T1_PFAB_ptr;
+ }
+ else if (type & T1_AFM_PATH) {
+ src_ptr=T1_AFM_ptr;
+ }
+ else if (type & T1_ENC_PATH) {
+ src_ptr=T1_ENC_ptr;
+ }
+ else if (type & T1_FDB_PATH) {
+ src_ptr=T1_FDB_ptr;
+ }
+
+
+ i=0;
+ pathlen=0;
+ while (src_ptr[i]!=NULL) {
+ pathlen +=strlen( src_ptr[i++]);
+ pathlen+=1; /* path separator */
+ }
+ if ((out_ptr=(char *)malloc(pathlen+1))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ strcpy( out_ptr, src_ptr[0]);
+ i=1;
+ while (src_ptr[i]!=NULL) {
+ strcat( out_ptr, path_sep_string);
+ strcat( out_ptr, src_ptr[i++]);
+ }
+
+ return( out_ptr);
+
+}
+
+
+/* T1_AddToFileSearchPath(): Add the specified path element to
+ the specified search path. If the existing path is the default path,
+ it will not be replaced by the new path element. Since this function might
+ be called before initialization, we have to be aware that even the default
+ path could be missing. Multiple path types may be specified as a bitmask!
+ Return value is 0 if successful and -1 otherwise */
+int T1_AddToFileSearchPath( int pathtype, int mode, char *pathname)
+{
+ int i;
+ int pathlen;
+ char* newpath = NULL;
+ int nofonts;
+
+
+ if (pathname==NULL)
+ return(-1);
+
+ nofonts=T1_GetNoFonts();
+
+ pathlen=strlen(pathname);
+
+ if (pathtype & T1_PFAB_PATH){
+ /* Allocate meory for string */
+ if ((newpath=(char*)malloc( (pathlen+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Check for and handle the existing path configuration */
+ if (pfab_no==0) { /* do not free the default path but establish it
+ as a regularly setup path, if database not empty! */
+ if (nofonts>0) {
+ pfab_no++;
+ }
+ else {
+ free( T1_AFM_ptr[0]);
+ }
+ }
+ if (pfab_no==-1) { /* not initialized! */
+ pfab_no=0;
+ T1_PFAB_ptr=NULL; /* realloc() will do the malloc()! */
+ }
+ if ((T1_PFAB_ptr=(char**)realloc( T1_PFAB_ptr, (++pfab_no+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Insert the new path element: */
+ if (mode & T1_PREPEND_PATH){ /* prepend */
+ i=pfab_no-2;
+ while (i>=0) {
+ T1_PFAB_ptr[i+1]=T1_PFAB_ptr[i];
+ i--;
+ }
+ T1_PFAB_ptr[0]=newpath;
+ }
+ else{ /* append */
+ T1_PFAB_ptr[pfab_no-1]=newpath;
+ }
+ T1_PFAB_ptr[pfab_no]=NULL;
+ }
+ if (pathtype & T1_AFM_PATH){
+ /* Allocate meory for string */
+ if ((newpath=(char*)malloc( (pathlen+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Check for and handle the existing path configuration */
+ if (afm_no==0) { /* do not free the default path but establish it
+ as a regularly setup path, if database not empty! */
+ if (nofonts>0) {
+ afm_no++;
+ }
+ else {
+ free( T1_AFM_ptr[0]);
+ }
+ }
+ if (afm_no==-1) { /* not initialized! */
+ afm_no=0;
+ T1_AFM_ptr=NULL; /* realloc() will do the malloc()! */
+ }
+ if ((T1_AFM_ptr=(char**)realloc( T1_AFM_ptr, (++afm_no+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Insert the new path element */
+ if (mode & T1_PREPEND_PATH){ /* prepend */
+ i=afm_no-2;
+ while (i>=0) {
+ T1_AFM_ptr[i+1]=T1_AFM_ptr[i];
+ i--;
+ }
+ T1_AFM_ptr[0]=newpath;
+ }
+ else{ /* append */
+ T1_AFM_ptr[afm_no-1]=newpath;
+ }
+ T1_AFM_ptr[afm_no]=NULL;
+ }
+ if (pathtype & T1_ENC_PATH){
+ /* Allocate meory for string */
+ if ((newpath=(char*)malloc( (pathlen+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Check for and handle the existing path configuration */
+ if (enc_no==0) { /* do not free the default path but establish it
+ as a regularly setup path, if database not empty! */
+ if (nofonts>0) {
+ enc_no++;
+ }
+ else {
+ free( T1_ENC_ptr[0]);
+ }
+ }
+ if (enc_no==-1) { /* not initialized! */
+ enc_no=0;
+ T1_ENC_ptr=NULL; /* realloc() will do the malloc()! */
+ }
+ if ((T1_ENC_ptr=(char**)realloc( T1_ENC_ptr, (++enc_no+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Insert the new path element: */
+ if (mode & T1_PREPEND_PATH){ /* prepend */
+ i=enc_no-2;
+ while (i>=0) {
+ T1_ENC_ptr[i+1]=T1_ENC_ptr[i];
+ i--;
+ }
+ T1_ENC_ptr[0]=newpath;
+ }
+ else{ /* append */
+ T1_ENC_ptr[enc_no-1]=newpath;
+ }
+ T1_ENC_ptr[enc_no]=NULL;
+ }
+
+ /* Copy new path to where it belongs ... */
+ if (newpath)
+ strcpy(newpath, pathname);
+
+ return(0);
+
+}
+
+
+
+/* T1_SetFontDataBase(): Set a new name for the font database. It replaces the default
+ name and any names specified previously with this function.
+ Return value: 0 if OK, and -1 if filename not valid or an allocation
+ error occurred */
+int T1_SetFontDataBase( char *filename)
+{
+ int pathlen;
+ int i;
+ int result=0;
+
+
+ /* chekc filename */
+ if (filename==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return -1;
+ }
+
+ /* this function must be called before any font is in the database, that is, usually,
+ before initialization! */
+ if ( pFontBase!=NULL && pFontBase->no_fonts>0) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return -1;
+ }
+
+
+ pathlen=strlen(filename)+1;
+ /* Throw away a possibly existing font database-statement */
+ if (fdb_no==-1) {
+ T1_FDB_ptr=NULL; /* realloc() will do a malloc() */
+ }
+ else {
+ /* throw away current paths */
+ i=0;
+ while (T1_FDB_ptr[i]!=NULL) {
+ free (T1_FDB_ptr[i++]);
+ }
+ }
+
+ if ((T1_FDB_ptr=(char**)realloc( T1_FDB_ptr, 2*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return -1;
+ }
+
+ if ((T1_FDB_ptr[0]=(char*)malloc(pathlen*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return -1;
+ }
+ strcpy( T1_FDB_ptr[0], filename);
+ T1_FDB_ptr[1]=NULL;
+ fdb_no=1;
+
+ /* Load database immediately if t1lib already is initailzed */
+ if (T1_CheckForInit()==0) {
+ if ((result=intT1_scanFontDBase(T1_FDB_ptr[0]))==-1) {
+ T1_PrintLog( "T1_AddFontDataBase()", "Fatal error scanning Font Database File %s (T1_errno=%d)",
+ T1LOG_WARNING, T1_FDB_ptr[0], T1_errno);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ result=pFontBase->no_fonts;
+ }
+ return result;
+
+}
+
+
+/* T1_AddFontDataBase(): Add a new font database file to the list. If the
+ lib is already initialzed, then the new database is immediately loaded.
+ Otherwise it is simply appended to the list and loaded at the time of
+ initialization.
+ Returns: -1 an error occured
+ 0 successfully inserted but not loaded because lib not initilized
+ n>0 the highest defined FontID
+*/
+int T1_AddFontDataBase( int mode, char *filename)
+{
+ int i;
+ int pathlen;
+ int result=0;
+ char* newpath;
+
+
+ if (filename==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ pathlen=strlen(filename);
+
+ /* Allocate memory for string */
+ if ((newpath=(char*)malloc( (pathlen+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( newpath, filename);
+ /* Check for and handle the existing path configuration */
+ if (fdb_no==0) { /* defauls setup, free the path */
+ free( T1_FDB_ptr[0]);
+ }
+ if (fdb_no==-1) { /* not initialized! */
+ fdb_no=0;
+ T1_FDB_ptr=NULL; /* realloc() will do the malloc()! */
+ }
+
+ if ((T1_FDB_ptr=(char**)realloc( T1_FDB_ptr, (++fdb_no+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Insert the new database. If t1lib is already initialzed, the database can only
+ be appended. Otherwise. prepending is also possible.*/
+ if ((mode & T1_PREPEND_PATH) && (T1_CheckForInit()!=0) ) { /* prepend */
+ i=fdb_no-2;
+ while (i>=0) {
+ T1_FDB_ptr[i+1]=T1_FDB_ptr[i];
+ i--;
+ }
+ T1_FDB_ptr[0]=newpath;
+ result=0;
+ }
+ else { /* append */
+ T1_FDB_ptr[fdb_no-1]=newpath;
+ if (T1_CheckForInit()==0) {
+ if ((result=intT1_scanFontDBase(T1_FDB_ptr[fdb_no-1]))==-1) {
+ T1_PrintLog( "T1_AddFontDataBase()", "Fatal error scanning Font Database File %s (T1_errno=%d)",
+ T1LOG_WARNING, T1_FDB_ptr[fdb_no-1], T1_errno);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ result=pFontBase->no_fonts;
+ }
+ }
+ T1_FDB_ptr[fdb_no]=NULL;
+ return result;
+
+}
+
+
+
+/* T1_SetFontDataBaseXLFD(): Set a new name for the XLFD font database. It
+ replaces the default name (which is empty and any names specified
+ previously with this function.
+ Return value: 0 if OK, and -1 if filename not valid or an allocation
+ error occurred */
+int T1_SetFontDataBaseXLFD( char *filename)
+{
+ int pathlen;
+ int i;
+ int result=0;
+
+
+ /* check filename */
+ if (filename==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return -1;
+ }
+
+ /* this function must be called before any font is in the database, that is, usually,
+ before initialization! */
+ if ( pFontBase!=NULL && pFontBase->no_fonts>0) {
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return -1;
+ }
+
+
+ pathlen=strlen(filename)+1;
+ /* Throw away a possibly existing font database-statement */
+ if (fdbxlfd_no==-1) {
+ T1_FDBXLFD_ptr=NULL; /* realloc() will do a malloc() */
+ }
+ else {
+ /* throw away current paths */
+ i=0;
+ while (T1_FDBXLFD_ptr[i]!=NULL) {
+ free (T1_FDBXLFD_ptr[i++]);
+ }
+ }
+
+ if ((T1_FDBXLFD_ptr=(char**)realloc( T1_FDBXLFD_ptr, 2*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return -1;
+ }
+
+ if ((T1_FDBXLFD_ptr[0]=(char*)malloc(pathlen*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return -1;
+ }
+ strcpy( T1_FDBXLFD_ptr[0], filename);
+ T1_FDBXLFD_ptr[1]=NULL;
+ fdb_no=1;
+
+ /* Load XLFD database immediately if t1lib already is initailzed */
+ if (T1_CheckForInit()==0) {
+ if ((result=intT1_scanFontDBaseXLFD(T1_FDBXLFD_ptr[0]))==-1) {
+ T1_PrintLog( "T1_AddFontDataBaseXLFD()", "Fatal error scanning XLFD Font Database File %s (T1_errno=%d)",
+ T1LOG_WARNING, T1_FDBXLFD_ptr[0], T1_errno);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ result=pFontBase->no_fonts;
+ }
+ return result;
+
+}
+
+
+/* T1_AddFontDataBaseXLFD(): Add a new XLFD font database file to the list. If
+ the lib is already initialzed, then the new database is immediately loaded.
+ Otherwise it is simply appended to the list and loaded at the time of
+ initialization.
+ Returns: -1 an error occured
+ 0 successfully inserted but not loaded because lib not initilized
+ n>0 the highest defined FontID
+*/
+int T1_AddFontDataBaseXLFD( int mode, char *filename)
+{
+ int i;
+ int pathlen;
+ int result=0;
+ char* newpath;
+
+
+ if (filename==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(-1);
+ }
+
+ pathlen=strlen(filename);
+
+ /* Allocate memory for string */
+ if ((newpath=(char*)malloc( (pathlen+1)*sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ strcpy( newpath, filename);
+ /* Check for and handle the existing path configuration */
+ if (fdb_no==0) { /* defauls setup, free the path */
+ free( T1_FDB_ptr[0]);
+ }
+ if (fdbxlfd_no==-1) { /* not initialized! */
+ fdbxlfd_no=0;
+ T1_FDBXLFD_ptr=NULL; /* realloc() will do the malloc()! */
+ }
+
+ if ((T1_FDBXLFD_ptr=(char**)realloc( T1_FDBXLFD_ptr, (++fdbxlfd_no+1)*sizeof(char*)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ /* Insert the new database. If t1lib is already initialzed, the database can only
+ be appended. Otherwise. prepending is also possible.*/
+ if ((mode & T1_PREPEND_PATH) && (T1_CheckForInit()!=0) ) { /* prepend */
+ i=fdbxlfd_no-2;
+ while (i>=0) {
+ T1_FDBXLFD_ptr[i+1]=T1_FDBXLFD_ptr[i];
+ i--;
+ }
+ T1_FDBXLFD_ptr[0]=newpath;
+ result=0;
+ }
+ else { /* append */
+ T1_FDBXLFD_ptr[fdbxlfd_no-1]=newpath;
+ if (T1_CheckForInit()==0) {
+ if ((result=intT1_scanFontDBaseXLFD(T1_FDBXLFD_ptr[fdbxlfd_no-1]))==-1) {
+ T1_PrintLog( "T1_AddFontDataBase()", "Fatal error scanning Font Database File %s (T1_errno=%d)",
+ T1LOG_WARNING, T1_FDBXLFD_ptr[fdbxlfd_no-1], T1_errno);
+ }
+ if (result>-1)
+ pFontBase->no_fonts+=result;
+ result=pFontBase->no_fonts;
+ }
+ }
+ T1_FDBXLFD_ptr[fdbxlfd_no]=NULL;
+ return result;
+
+}
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.h
new file mode 100644
index 00000000000..11e94d870f2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1env.h
@@ -0,0 +1,58 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1env.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-16
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1env.c
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifdef T1ENV_C
+
+void intT1_FreeSearchPaths( void);
+void intT1_SetupDefaultSearchPaths( void);
+int intT1_ScanConfigFile( void);
+char *intT1_Env_GetCompletePath( char *FileName, char **env_ptr );
+int T1_SetFileSearchPath( int type, char *pathname);
+int T1_AddToFileSearchPath( int pathtype, int mode, char *pathname);
+char *T1_GetFileSearchPath( int type);
+int T1_SetFontDataBase( char *filename);
+int T1_AddFontDataBase( int mode, char *filename);
+int T1_SetFontDataBaseXLFD( char *filename);
+int T1_AddFontDataBaseXLFD( int mode, char *filename);
+
+#else
+
+extern void intT1_FreeSearchPaths( void);
+extern void intT1_SetupDefaultSearchPaths( void);
+extern int intT1_ScanConfigFile( void);
+extern char *intT1_Env_GetCompletePath( char *FileName, char **env_ptr );
+extern int T1_SetFileSearchPath( int type, char *pathname);
+extern int T1_AddToFileSearchPath( int pathtype, int mode, char *pathname);
+extern char *T1_GetFileSearchPath( int type);
+extern int T1_SetFontDataBase( char *filename);
+extern int T1_AddFontDataBase( int mode, char *filename);
+extern int T1_SetFontDataBaseXLFD( char *filename);
+extern int T1_AddFontDataBaseXLFD( int mode, char *filename);
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1extern.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1extern.h
new file mode 100644
index 00000000000..27a65fba030
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1extern.h
@@ -0,0 +1,106 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1extern.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-16
+ ----- Description: This file is part of the t1-library. It contains
+ external declarations used by the t1-library.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#include "t1misc.h"
+
+
+/* Following struct will allow all accesses to font data! */
+extern struct FONTBASE
+{
+ int t1lib_flags; /* Global library flags */
+ int no_fonts_ini; /* The number of fonts initially declared in
+ Font database file. */
+ int no_fonts; /* The number of currently allocated fonts including
+ logical fonts produced by T1_CopyFont() */
+ int no_fonts_limit; /* The maximum number of font for which is memory
+ currently available. */
+ int bitmap_pad; /* The value to which bitmap-scanlines are padded */
+ int endian; /* 1 if little endian representation and 0 otherwise */
+ char **default_enc; /* The default encoding vector */
+ FONTPRIVATE *pFontArray; /* Points to first element of font pointer array */
+} FontBase;
+extern struct FONTBASE *pFontBase;
+
+
+/* Further we need a struct where to save device dependent data such as
+ resolution. The values in this struct may be altered using
+ T1_SetDeviceRes(x_res,y_res). Generally, the fontsize is to be specified
+ in BigPoints ("bp")---this is the default PostScript unit. It is
+ 1in=72bp.
+ */
+extern struct
+{
+ float x_resolution; /* Value must be specified in DPI */
+ float y_resolution; /* Value must be specified in DPI */
+ float scale_x; /* horizontal scale-value to get a
+ matrix scaled to 1b */
+ float scale_y; /* vertical scale-value to get a
+ matrix scaled to 1b */
+} DeviceSpecifics;
+
+
+extern struct stat filestats; /* A structure where fileinfo is stored */
+extern char linebuf[BUF_SIZE]; /* A buffer for reading files line
+ by line */
+extern int T1_Up; /* This one is for initialization-checking */
+
+/* The width of AA-pixels */
+extern int T1aa_bpp;
+
+/* The follwoing variable allows the primary rastering functions
+ to check for the caller */
+extern int SetFuncRequestID;
+
+/* The following variable allows to suppress rastering at 1000 bp
+ for getting a correct bounding box for slanted characters -->
+ should only internally be used */
+extern int ForceAFMBBox;
+
+extern struct XYspace *IDENTITY;
+
+extern int errornumber; /* for debugging purposes */
+
+extern char **T1_PFAB_ptr;
+extern char **T1_AFM_ptr;
+extern char **T1_ENC_ptr;
+extern char **T1_FDB_ptr;
+extern char **T1_FDBXLFD_ptr;
+
+/* We use a uchar buffer for error and warning messages: */
+extern char err_warn_msg_buf[1024];
+
+/* file pointer for log-file */
+extern FILE *t1lib_log_file;
+extern int t1lib_log_level;
+
+/* The errno for t1lib */
+extern int T1_errno;
+
+/* A variable for saving stack info */
+extern jmp_buf stck_state;
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.c
new file mode 100644
index 00000000000..c0464f205ef
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.c
@@ -0,0 +1,1366 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1finfo.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for accessing afm-data and some other
+ fontinformation data.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1FINFO_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1finfo.h"
+#include "t1base.h"
+#include "t1misc.h"
+#include "t1set.h"
+#include "t1load.h"
+
+
+/* The following variable controls the computation of the bbox internal
+ to T1_GetMetricsInfo(). Its influence may be overridden by the
+ global variable ForceAFMBBox: */
+static int ForceAFMBBoxInternal=0;
+
+
+extern int ForceAFMBBox;
+extern char *t1_get_abort_message( int number);
+
+
+/* int T1_GetKerning(): This function returns the amount of kerning that
+ is specified in the afm-file for the supplied character-pair. If an
+ an extension has been applied to the font in question, this is taken
+ into account.
+ If for whatever reason there's no afm information available (that's not
+ deadly), simply 0 is returned, indicating that no kerning should be used.
+ The value returned is meant to be in character space coordinates. Thus,
+ it must be transformed to be applicable in device space.
+ */
+int T1_GetKerning( int FontID, char char1, char char2)
+{
+ METRICS_ENTRY entry;
+ METRICS_ENTRY *target_pair=NULL;
+
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( 0);
+ }
+
+ /* if there's no kerning info, return immediately */
+ if (pFontBase->pFontArray[FontID].KernMapSize==0)
+ return( 0);
+
+ entry.chars=(char1<<8) | char2;
+ if ((target_pair=(METRICS_ENTRY *)
+ bsearch( &entry, pFontBase->pFontArray[FontID].pKernMap,
+ (size_t) pFontBase->pFontArray[FontID].KernMapSize,
+ sizeof(METRICS_ENTRY),
+ &cmp_METRICS_ENTRY))==NULL)
+ return(0);
+ else
+ return( target_pair->hkern * pFontBase->pFontArray[FontID].extend);
+
+}
+
+
+
+/* int T1_GetCharWidth(): This function returns the characterwidth
+ specified in the .afm-file. If no .afm-file is loaded for that font,
+ 0 is returned. Note that if one tries to raster strings, afm data
+ must always be available. The returned character width is corrected
+ using a possibly applied font extension!
+ */
+int T1_GetCharWidth( int FontID, char char1)
+{
+ unsigned char uchar1;
+
+ uchar1=(unsigned char) char1;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( 0);
+ }
+
+ /* return appriate value */
+ if (pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]>0) { /* ordinary character */
+ return((int) ((pFontBase->pFontArray[FontID].pAFMData->cmi[pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]-1].wx) * pFontBase->pFontArray[FontID].extend));
+ }
+ else if (pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]<0) { /* composite character */
+ return((int) ((pFontBase->pFontArray[FontID].pAFMData->ccd[-(pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]+1)].wx) * pFontBase->pFontArray[FontID].extend));
+ }
+ else { /* undefined or .notdef */
+ return(0);
+ }
+
+}
+
+
+
+/* T1_GetCharBBox(): Get the BoundingBox of specified character. If an
+ extension factor has been applied to the font in question, this
+ is taken into account. However, a slant factor which has been applied
+ to the font, also affects the bounding box of a character. The
+ only way to determine its influence on the character bounding box
+ is to compute the exact shape of that slanted character. There's no
+ simple way to extract the new bounding box from the former bounding
+ box. Thus, if a font has been slanted, the characters outline itself
+ is examined. Since this must be done at 1000 bp it takes considerably
+ longer than reading afm data. */
+BBox T1_GetCharBBox( int FontID, char char1)
+{
+
+ struct region *area;
+ struct XYspace *S;
+ int mode=0;
+ int i;
+
+ BBox NullBBox= { 0, 0, 0, 0}; /* A bounding box containing all 0's. */
+ BBox ResultBox= { 0, 0, 0, 0}; /* The Box returned if char is found */
+
+ unsigned char uchar1;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_GetCharBBox()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NullBBox);
+ }
+
+
+ uchar1=(unsigned char) char1;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NullBBox);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( NullBBox);
+ }
+
+
+ /* Check for a font slant */
+ if ((pFontBase->pFontArray[FontID].slant!=0.0)
+ &&(ForceAFMBBox==0)
+ &&(ForceAFMBBoxInternal==0)){
+ /* We have a font slant -> character outline must be examined in order
+ to determine bounding box */
+ /* Set up an identity charspace matrix
+ and take a slant and an extension into account */
+ /* And make it permanent, to plug a memory leak */
+ S=(struct XYspace *)IDENTITY;
+ S=(struct XYspace *)Permanent
+ (Transform(S, pFontBase->pFontArray[FontID].FontTransform[0],
+ pFontBase->pFontArray[FontID].FontTransform[1],
+ pFontBase->pFontArray[FontID].FontTransform[2],
+ pFontBase->pFontArray[FontID].FontTransform[3]));
+ /* Genrate an edgelist for the current character at size 1000bp
+ using current transformation and encoding: */
+ area=fontfcnB( FontID, 0, S,
+ pFontBase->pFontArray[FontID].pFontEnc,
+ (int) uchar1, &mode,
+ pFontBase->pFontArray[FontID].pType1Data,
+ DO_RASTER,0.0f);
+ /* Read out bounding box */
+ ResultBox.llx =area->xmin;
+ ResultBox.urx =area->xmax;
+ ResultBox.lly =area->ymin;
+ ResultBox.ury =area->ymax;
+
+ /* Reset AFM-switch and return BBox */
+ ForceAFMBBoxInternal=0;
+ /* make sure to destroy 'area' before leaving! */
+ KillRegion (area);
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ return(ResultBox);
+ }
+ else{
+ /* Assign bounding box for the different cases: */
+ /* Check if character is */
+ if (pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]>0) { /* ordinary char */
+ ResultBox=(pFontBase->pFontArray[FontID].pAFMData->cmi[pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]-1].charBBox);
+ }
+ else if (pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]<0) { /* composite char */
+ ResultBox=(pFontBase->pFontArray[FontID].pAFMData->ccd[-(pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]+1)].charBBox);
+ }
+ else { /* undefined char */
+ return(NullBBox);
+ }
+
+ /* .. and apply transformations: */
+ ResultBox.llx *=pFontBase->pFontArray[FontID].extend;
+ ResultBox.urx *=pFontBase->pFontArray[FontID].extend;
+
+ return(ResultBox);
+ }
+}
+
+
+
+/* int T1_GetUnderlinePosition(): Return underline position of specified
+ font in charspace units. If 0 is returned, it indicated that the font
+ is not yet loaded into memory. or an invalid ID has been specified. */
+float T1_GetUnderlinePosition( int FontID)
+{
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return((float)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[UNDERLINEPOSITION].value.data.real));
+}
+
+
+
+/* int T1_GetUnderlineThickness(): Return underline thickness of specified
+ font in charspace units. If 0 is returned, it indicated that the font
+ is not yet loaded into memory. or an invalid ID has been specified. */
+float T1_GetUnderlineThickness( int FontID)
+{
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return((float)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[UNDERLINETHICKNESS].value.data.real));
+}
+
+
+/* int T1_ItalicAngle(): Return underline position of specified
+ font in charspace units. If 0.0 is returned, it indicated that the font
+ is not yet loaded into memory. or an invalid ID has been specified. */
+float T1_GetItalicAngle( int FontID)
+{
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return((float)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ITALICANGLE].value.data.real));
+}
+
+
+
+/* int T1_GetUnderlinePosition(): Return underline position of specified
+ font in charspace units. If 0 is returned, it indicated that the font
+ is not yet loaded into memory. or an invalid ID has been specified. */
+int T1_GetIsFixedPitch( int FontID)
+{
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return((int)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ISFIXEDPITCH].value.data.boolean));
+}
+
+
+
+/* char *T1_GetFontName( FontID): Get the PostScript FontName of
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetFontName( int FontID)
+{
+ static char fontname[MAXPSNAMELEN];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(fontname,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTNAME].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTNAME].value.len);
+ fontname[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTNAME].value.len]=0;
+
+ return(fontname);
+
+}
+
+
+/* char *T1_GetFullName( FontID): Get the Full Name from
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetFullName( int FontID)
+{
+ static char fullname[MAXPSNAMELEN];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(fullname,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FULLNAME].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FULLNAME].value.len);
+ fullname[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FULLNAME].value.len]=0;
+
+ return(fullname);
+
+}
+
+
+/* char *T1_GetFamilyName( FontID): Get the Family Name of
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetFamilyName( int FontID)
+{
+ static char familyname[MAXPSNAMELEN];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(familyname,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FAMILYNAME].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FAMILYNAME].value.len);
+ familyname[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FAMILYNAME].value.len]=0;
+
+ return(familyname);
+
+}
+
+
+/* char *T1_GetWeight( FontID): Get the Weight entry from
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetWeight( int FontID)
+{
+ static char weight[128];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(weight,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[WEIGHT].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[WEIGHT].value.len);
+ weight[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[WEIGHT].value.len]=0;
+
+ return(weight);
+
+}
+
+
+/* char *T1_GetFontName( FontID): Get the Version entry from
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetVersion( int FontID)
+{
+ static char version[2048];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(version,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[VERSION].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[VERSION].value.len);
+ version[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[VERSION].value.len]=0;
+
+ return(version);
+
+}
+
+
+/* char *T1_GetNotice( FontID): Get the Notice entry from
+ the font dictionary associated with the specified font, or NULL if
+ an error occurs. */
+char *T1_GetNotice( int FontID)
+{
+ static char notice[2048];
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ strncpy(notice,
+ (char *)(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[NOTICE].value.data.nameP),
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[NOTICE].value.len);
+ notice[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[NOTICE].value.len]=0;
+
+ return(notice);
+
+}
+
+
+
+
+/* char *T1_GetCharName(): Get the PostScript character name of
+ the character indexed by char1. */
+char *T1_GetCharName( int FontID, char char1)
+{
+ static char cc_name1[256];
+ char *c1;
+
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ if (pFontBase->pFontArray[FontID].pFontEnc==NULL){
+ /* We have to get the names from the fonts internal encoding */
+ c1= (char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].data.arrayP;
+ strncpy(cc_name1,
+ (char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].data.arrayP,
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].len);
+ cc_name1[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].len]=0;
+ }
+ else{
+ /* Take names from explicitly loaded and assigned encoding */
+ c1=pFontBase->pFontArray[FontID].pFontEnc[(unsigned char)char1];
+ strcpy(cc_name1,c1);
+ }
+
+ /* Return address of charname */
+ return(cc_name1);
+
+}
+
+
+
+/* T1_QueryLigs(): Get the number of ligatures defined in the font FontID for
+ the character which is located at position char1 in the current encoding
+ vector!
+ Function returns the number of defined ligs (including 0) or -1 if an
+ error occured.
+ */
+int T1_QueryLigs( int FontID, char char1, char **successors,
+ char **ligatures)
+{
+
+ FontInfo *afm_ptr;
+ CharMetricInfo *m_ptr;
+ char *c_name;
+ char cc_name[128];
+ static char succ[MAX_LIGS];
+ int succ_index;
+ static char lig[MAX_LIGS];
+ int lig_index;
+
+ Ligature *ligs;
+ int i,j;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( -1);
+ }
+
+ /* All OK, ... */
+ afm_ptr=pFontBase->pFontArray[FontID].pAFMData;
+ m_ptr=afm_ptr->cmi;
+
+ /* Get the name of the character: */
+ if (pFontBase->pFontArray[FontID].pFontEnc==NULL){
+ /* We have to get the name from the fonts internal encoding */
+ c_name=(char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].data.arrayP;
+ strncpy(cc_name,
+ (char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].data.arrayP,
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].len);
+ cc_name[pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[(unsigned char)char1].len]=0;
+ }
+ else{
+ /* Take name from explicitly loaded and assigned encoding */
+ c_name=pFontBase->pFontArray[FontID].pFontEnc[(unsigned char)char1];
+ strcpy(cc_name,c_name);
+ }
+
+ for (i=0; i<afm_ptr->numOfChars; i++){
+ if (strcmp(m_ptr[i].name,cc_name)==0)
+ break;
+ }
+
+
+ if (i==afm_ptr->numOfChars) /* we didn't find the characters name */
+ return(-1);
+
+ ligs=m_ptr[i].ligs;
+
+ j=0;
+ if (ligs==NULL)
+ return(0);
+
+ while (ligs!=NULL) {
+ /* Get indices of the two characters: */
+ if ((succ_index=T1_GetEncodingIndex( FontID, (char*) ligs->succ))==-1) {
+ /* successor is not current encoding */
+ ligs=ligs->next;
+ continue;
+ }
+ if ((lig_index=T1_GetEncodingIndex( FontID, (char*) ligs->lig))==-1) {
+ /* Specified ligature is not in current encoding */
+ ligs=ligs->next;
+ continue;
+ }
+ succ[j]=(char)succ_index;
+ lig[j]=(char)lig_index;
+ j++;
+ ligs=ligs->next;
+ }
+
+ *successors=succ;
+ *ligatures=lig;
+
+ return(j);
+}
+
+
+
+/* T1_GetEncodingIndex(): Return the Index of char1 in the current
+ encoding vector of font FontID */
+int T1_GetEncodingIndex( int FontID, char *char1)
+{
+ int i;
+ int len1;
+ int result_index;
+ char **extern_enc;
+ psobj *objptr;
+
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ extern_enc=pFontBase->pFontArray[FontID].pFontEnc;
+
+ len1=strlen( char1);
+
+ /* The default return-value if character is not found: */
+ result_index=-1;
+
+ if (extern_enc==NULL) {
+ objptr=&(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[0]);
+ /* We have to search the fonts internal encoding */
+ for (i=0;i<256;i++){
+ if (len1==objptr[i].len){
+ if (strncmp((char *)objptr[i].data.arrayP,
+ char1, objptr[i].len)==0){
+ result_index=i;
+ break;
+ }
+ }
+ }
+
+ }
+ else {
+ /* Take name from explicitly loaded and assigned encoding */
+ for (i=0;i<256;i++){
+ if (strcmp(extern_enc[i], char1)==0){
+ result_index=i;
+ break;
+ }
+ }
+ }
+
+ return(result_index);
+}
+
+
+/* T1_GetEncodingIndices(): Return all indices of char1 in the current
+ encoding vector of font FontID. */
+int *T1_GetEncodingIndices( int FontID, char *char1)
+{
+ int i;
+ int endmark=0;
+ int len1;
+ char **extern_enc;
+ psobj *objptr;
+ /* the following array suffices for the extreme unlikely case of a font
+ where one single fillsthe whole encoding vector */
+ static int indices[257];
+
+
+ if (T1_CheckForFontID(FontID)!=1) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ extern_enc=pFontBase->pFontArray[FontID].pFontEnc;
+
+ len1=strlen( char1);
+
+ if (extern_enc==NULL) {
+ objptr=&(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[0]);
+ /* We have to search the fonts internal encoding */
+ for (i=0;i<256;i++){
+ if (len1==objptr[i].len){
+ if (strncmp((char *)objptr[i].data.arrayP,
+ char1, objptr[i].len)==0){
+ indices[endmark++]=i;
+ }
+ }
+ }
+ }
+ else {
+ /* Take name from explicitly loaded and assigned encoding */
+ for (i=0;i<256;i++){
+ if (strcmp(extern_enc[i], char1)==0){
+ indices[endmark++]=i;
+ }
+ }
+ }
+
+ indices[endmark]=-1;
+ return((int *)indices);
+}
+
+
+/* int T1_GetStringWidth(): This function returns the width of string
+ in .afm-file units. If no .afm-file is loaded for font FontID,
+ 0 is returned. Note that if one tries to raster strings, afm data
+ should always be available. The returned character width is corrected
+ using a possibly applied font extension!
+ */
+int T1_GetStringWidth( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+{
+
+ int no_chars; /* Number of chars in string */
+ int i;
+ int *kern_pairs;
+ int *charwidths;
+ int spacewidth;
+ int stringwidth;
+
+ unsigned char *ustring;
+
+ ustring=(unsigned char *) string;
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( 0);
+ }
+
+ /* Get length of string: */
+ if (len<0 || ustring == NULL){ /* invalid length or NULL-pointer */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(0);
+ }
+ if (len==0) /* should be computed assuming "normal" 0-terminated string */
+ no_chars=strlen(string);
+ else /* use value given on command line */
+ no_chars=len;
+
+ switch (no_chars) {
+ case 0:
+ /* Empty string has width 0 */
+ stringwidth=0;
+ break;
+
+ case 1:
+ /* Width of string with 1 character is the width of that character.
+ If the character is a space, adjust by the value of spaceoff.
+ */
+ stringwidth=T1_GetCharWidth(FontID,ustring[0]);
+ if (ustring[0]==pFontBase->pFontArray[FontID].space_position)
+ stringwidth+=spaceoff;
+ break;
+
+ default:
+ /* Two or more characters. Add widths of characters and adjust by
+ the adjustment widths for any kerning pairs. For spaces, use the
+ width of the space character in the font adjusted by the value of
+ spaceoff.
+ */
+
+ /* Allocate room for temporary arrays of kerning and width arrays: */
+ kern_pairs=(int *)calloc(no_chars -1, sizeof(int));
+ if (kern_pairs==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(0);
+ }
+ charwidths=(int *)calloc(no_chars, sizeof(int));
+ if (charwidths==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(0);
+ }
+
+ /* If kerning is requested, get kerning amounts and fill the array: */
+ if (kerning){
+ for (i=0; i<no_chars -1; i++){
+ kern_pairs[i]=T1_GetKerning( FontID, ustring[i], ustring[i+1]);
+ }
+ }
+
+ /* Compute the correct spacewidth value (in charspace units): */
+ spacewidth=T1_GetCharWidth(FontID,pFontBase->pFontArray[FontID].space_position)+spaceoff;
+
+ /* Fill the width-array: */
+ for (i=0; i<no_chars; i++){
+ if (ustring[i]==pFontBase->pFontArray[FontID].space_position)
+ charwidths[i]=(int)spacewidth;
+ else
+ charwidths[i]=T1_GetCharWidth(FontID,ustring[i]);
+ }
+
+ /* Accumulate width: */
+ stringwidth=0;
+ for (i=0; i<no_chars-1; i++){
+ stringwidth += kern_pairs[i];
+ }
+ for (i=0; i<no_chars; i++){
+ stringwidth += charwidths[i];
+ }
+
+ /* free memory: */
+ free( charwidths);
+ free( kern_pairs);
+
+ break;
+ }
+
+ /* .. and return result: */
+ return( stringwidth);
+}
+
+
+
+/* int T1_GetStringBBox(): This function returns the bounding box of string
+ in .afm-file units. If no .afm-file is loaded for font FontID,
+ 0 is returned. Note that if one tries to raster strings, afm data
+ should always be available. The returned character width is corrected
+ using a possibly applied font extension!
+ */
+BBox T1_GetStringBBox( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+{
+
+ BBox NullBBox= { 0, 0, 0, 0}; /* A bounding box containing all 0's. */
+ BBox tmp_BBox= { 0, 0, 0, 0};
+ BBox ResultBBox= { 0, 0, 0, 0}; /* The resulting BBox */
+ int i;
+ int no_chars;
+ int curr_width=0;
+ int spacewidth=0;
+
+ int rsb_max=-30000;
+ int lsb_min= 30000;
+ int overallascent=-30000;
+ int overalldescent=30000;
+
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NullBBox);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( NullBBox);
+ }
+
+ /* Get length of string: */
+ if (len<0 || string==NULL) { /* invalid length or NULL-pointer */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NullBBox);
+ }
+ if (len==0) /* should be computed assuming "normal" 0-terminated string */
+ no_chars=strlen(string);
+ else /* use value given on command line */
+ no_chars=len;
+
+ spacewidth=
+ T1_GetCharWidth(FontID,pFontBase->pFontArray[FontID].space_position)+spaceoff;
+
+ /* Accumulate metrics: */
+ for (i=0; i<no_chars; i++){
+ if (string[i]==pFontBase->pFontArray[FontID].space_position)
+ curr_width +=spacewidth;
+ else{
+ tmp_BBox=T1_GetCharBBox( FontID, string[i]);
+ if (curr_width+tmp_BBox.llx < lsb_min)
+ lsb_min=curr_width+tmp_BBox.llx;
+ if (curr_width+tmp_BBox.urx > rsb_max)
+ rsb_max=curr_width+tmp_BBox.urx;
+ if (tmp_BBox.lly < overalldescent)
+ overalldescent=tmp_BBox.lly;
+ if (tmp_BBox.ury > overallascent)
+ overallascent=tmp_BBox.ury;
+ curr_width +=T1_GetCharWidth( FontID, string[i]);
+ if ((i<no_chars-1) && (kerning != 0))
+ curr_width += T1_GetKerning( FontID, string[i], string[i+1]);
+ }
+ }
+
+ ResultBBox.llx=lsb_min;
+ ResultBBox.lly=overalldescent;
+ ResultBBox.urx=rsb_max;
+ ResultBBox.ury=overallascent;
+
+ return( ResultBBox);
+
+}
+
+
+/* T1_GetMetricsInfo(): Return a structure containing metrics information
+ about the string to the user. */
+METRICSINFO T1_GetMetricsInfo( int FontID, char *string,
+ int len, long spaceoff, int kerning)
+{
+
+ BBox NullBBox= { 0, 0, 0, 0}; /* A bounding box containing all 0's. */
+ BBox tmp_BBox= { 0, 0, 0, 0};
+
+
+ int i;
+ int no_chars;
+
+ int curr_width=0;
+ int spacewidth=0;
+
+ int rsb_max=-30000;
+ int lsb_min= 30000;
+ int overallascent=-30000;
+ int overalldescent=30000;
+
+ static METRICSINFO metrics={ 0, {0, 0, 0, 0}, 0, NULL};
+
+ unsigned char *ustring;
+
+
+ ustring=(unsigned char *) string;
+
+ /* Reset struct: */
+ metrics.width=0;
+ metrics.bbox=NullBBox;
+ metrics.numchars=0;
+ if (metrics.charpos != NULL){
+ free( metrics.charpos);
+ metrics.charpos=NULL;
+ }
+
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(metrics);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( metrics);
+ }
+
+ /* Get length of string: */
+ if (len<0 || ustring==NULL ) { /* invalid length or NULL_pointer */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(metrics);
+ }
+
+ if (len==0) /* should be computed assuming "normal" 0-terminated string */
+ no_chars=strlen(string);
+ else /* use value given on command line */
+ no_chars=len;
+
+ /* Compute the correct spacewidth value (in charspace units): */
+ spacewidth=T1_GetCharWidth(FontID,pFontBase->pFontArray[FontID].space_position)+spaceoff;
+
+ /* Allocate memory for character positions array: */
+ metrics.charpos=(int *)calloc(no_chars, sizeof(int));
+
+ metrics.numchars=no_chars;
+
+ /* Accumulate metrics: */
+ for (i=0; i<no_chars; i++){
+ /* Save current offst to array */
+ metrics.charpos[i]=curr_width;
+ if (string[i]==pFontBase->pFontArray[FontID].space_position)
+ curr_width +=spacewidth;
+ else{
+ tmp_BBox=T1_GetCharBBox( FontID, string[i]);
+ if (curr_width+tmp_BBox.llx < lsb_min)
+ lsb_min=curr_width+tmp_BBox.llx;
+ if (curr_width+tmp_BBox.urx > rsb_max)
+ rsb_max=curr_width+tmp_BBox.urx;
+ if (tmp_BBox.lly < overalldescent)
+ overalldescent=tmp_BBox.lly;
+ if (tmp_BBox.ury > overallascent)
+ overallascent=tmp_BBox.ury;
+ curr_width +=T1_GetCharWidth( FontID, string[i]);
+ if ((i<no_chars-1) && (kerning != 0))
+ curr_width += T1_GetKerning( FontID, string[i], string[i+1]);
+ }
+ }
+
+ metrics.width =curr_width;
+ metrics.bbox.llx=lsb_min;
+ metrics.bbox.lly=overalldescent;
+ metrics.bbox.urx=rsb_max;
+ metrics.bbox.ury=overallascent;
+
+ return( metrics);
+
+}
+
+
+
+/* T1_GetFontBBox(): Return the font's bounding box. Note: The font
+ BBox is taken is taken from the font file rather than from afm
+ file since I have seen some afm with rather inaccurate BBoxes.: */
+BBox T1_GetFontBBox( int FontID)
+{
+
+ BBox outbox= { 0, 0, 0, 0};
+ struct ps_obj *obj;
+
+ /* return Null-box if font not loaded */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(outbox);
+ }
+
+ /* As suggested by Derek B. Noonburg (xpdf-Author), we allow the
+ FontBBox also to be specified by real numbers. */
+ obj = &(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[0]);
+ outbox.llx =
+ objPIsInteger(obj) ? obj->data.integer : obj->data.real > 0 ?
+ (int) ceil(obj->data.real) : (int) floor(obj->data.real);
+ obj = &(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[1]);
+ outbox.lly =
+ objPIsInteger(obj) ? obj->data.integer : obj->data.real > 0 ?
+ (int) ceil(obj->data.real) : (int) floor(obj->data.real);
+ obj = &(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[2]);
+ outbox.urx =
+ objPIsInteger(obj) ? obj->data.integer : obj->data.real > 0 ?
+ (int) ceil(obj->data.real) : (int) floor(obj->data.real);
+ obj = &(pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[3]);
+ outbox.ury =
+ objPIsInteger(obj) ? obj->data.integer : obj->data.real > 0 ?
+ (int) ceil(obj->data.real) : (int) floor(obj->data.real);
+
+ return( outbox);
+}
+
+
+
+/* T1_GetAllCharNames(): Get a list of all defined character names in
+ in the font FontID: */
+char **T1_GetAllCharNames( int FontID)
+{
+ static char **bufmem=NULL;
+ register char *namedest;
+ psdict *pCharStrings;
+ int len, i, j;
+ long nameoffset;
+
+ int bufmemsize=0;
+
+ /* return NULL if font not loaded */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( NULL);
+ }
+
+ pCharStrings=pFontBase->pFontArray[FontID].pType1Data->CharStringsP;
+
+ /* First, get number of charstrings: */
+ len=pCharStrings[0].key.len;
+
+ /* We must be careful here: size of the charstrings dict might be larger
+ than the actual number of charstrings. We correct for this by reducing
+ the value of len appropriately */
+ for ( i=1; i<=len; i++){
+ /* calculate room for each characters name plus the prepending \0 */
+ if ((j=pCharStrings[i].key.len)){
+ bufmemsize += j + 1;
+ }
+ else{ /* we skip this (the remaining) entries */
+ len--;
+ i--;
+ }
+ }
+ /* Now we reserve memory for the pointers (including final NULL) */
+ nameoffset=(len+1)*sizeof( char *);
+ bufmemsize += nameoffset;
+
+ /* Now allocate memory, copy strings and initialize pointers */
+ if (bufmem!=NULL)
+ free(bufmem);
+ if ((bufmem=(char **)malloc( bufmemsize))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ namedest=(char *)((long)bufmem + nameoffset);
+ j=0;
+ for ( i=0; i<len; i++){
+ bufmem[i]=&(namedest[j]);
+ strncpy( &(namedest[j]), pCharStrings[i+1].key.data.nameP,
+ pCharStrings[i+1].key.len);
+ j += pCharStrings[i+1].key.len;
+ namedest[j++]='\0';
+ }
+ bufmem[i++]=NULL;
+
+ return( bufmem);
+
+}
+
+
+
+/* T1_GetNoKernPairs(): Return the number of kerning pairs defined
+ for font FontID */
+int T1_GetNoKernPairs( int FontID)
+{
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( -1);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( -1);
+ }
+
+ return( pFontBase->pFontArray[FontID].pAFMData->numOfPairs);
+
+}
+
+
+
+/* A function for comparing METRICS_ENTRY structs */
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2)
+{
+ if (((METRICS_ENTRY *)entry1)->chars <
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(-1);
+ if (((METRICS_ENTRY *)entry1)->chars >
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(1);
+ return(0); /* This should not happen */
+}
+
+
+
+/* A few functions for accessing composite character data: */
+/* T1_GetNoCompositeChars(): Return the number of characters for
+ for which composite character information is available
+ for font FontID */
+int T1_GetNoCompositeChars( int FontID)
+{
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( -1);
+ }
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( -1);
+ }
+
+ return( pFontBase->pFontArray[FontID].pAFMData->numOfComps);
+
+}
+
+
+
+/* T1_QueryCompositeChar(): Query whether char1 from font FontID
+ is a composite character. If so, the index of the composite
+ character data within the afm array is returned. The index can
+ be used to retrieve the retrieve the composite character data.
+
+ retval>=0: index into AFM-array where the corresponding
+ composite char data is located
+ retval=-1: No composite character, but result is valid,
+ retval=-2: No composite character, but result is invalid.
+ T1_errno indicated the reason.
+*/
+int T1_QueryCompositeChar( int FontID, char char1)
+{
+ unsigned char uchar1;
+
+ uchar1=char1;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( -2);
+ }
+
+ /* If no AFM info is present, we return -2 */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( -2);
+ }
+
+ if (pFontBase->pFontArray[FontID].pEncMap[ uchar1]<0) { /* composite char */
+ return( -(pFontBase->pFontArray[FontID].pEncMap[(int) uchar1]+1));
+ }
+
+ return(-1);
+
+}
+
+
+
+/* T1_GetCompCharData(): Retrieve data to construct composite
+ character char1 from font FontID. In case of an error NULL is returned
+ and T1_errno is set appropriately. */
+T1_COMP_CHAR_INFO *T1_GetCompCharData( int FontID, char char1)
+{
+ T1_COMP_CHAR_INFO *cci=NULL;
+ CompCharData *ccd=NULL;
+ int afmind=-1;
+ int i;
+ unsigned char uchar1;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( cci);
+ }
+
+ /* If no AFM info is present, we return -2 */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( cci);
+ }
+
+ if ((cci=(T1_COMP_CHAR_INFO*)malloc( sizeof(T1_COMP_CHAR_INFO)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( cci);
+ }
+
+ uchar1=(unsigned char)char1;
+
+ /* set default values */
+ cci->compchar=uchar1;
+ cci->numPieces=1;
+ cci->pieces=NULL;
+
+ /* check char1 */
+ if ((afmind=pFontBase->pFontArray[FontID].pEncMap[uchar1]) >= 0) {
+ /* char is no composite char */
+ return(cci);
+ }
+
+ /* character is a composite char-> retrieve index and pointer into
+ AFM data */
+ afmind=-(afmind+1);
+ ccd=&(pFontBase->pFontArray[FontID].pAFMData->ccd[afmind]);
+
+ /* cci->compchar is already setup correctly because char1 is a
+ composite character */
+ cci->numPieces=ccd->numOfPieces;
+ /* we expect numPieces to be >1 */
+ if ((cci->pieces=(T1_COMP_PIECE *)malloc( sizeof(T1_COMP_PIECE)*
+ cci->numPieces))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( cci);
+ return( NULL);
+ }
+ /* Copy information */
+ for (i=0; i<cci->numPieces; i++) {
+ cci->pieces[i].piece=T1_GetEncodingIndex( FontID, ccd->pieces[i].pccName);
+ cci->pieces[i].deltax=ccd->pieces[i].deltax;
+ cci->pieces[i].deltay=ccd->pieces[i].deltay;
+ }
+ return( cci);
+
+}
+
+
+
+/* T1_GetCompCharDataByIndex(): Retrieve data to construct composite
+ characters form font FontID. The data is addressed by index which
+ may, for example, have been obtained by a call to
+ T1_QueryCompositeChar().
+ In case of error NULL is returned and T1_errno is set appropriately.
+*/
+T1_COMP_CHAR_INFO *T1_GetCompCharDataByIndex( int FontID, int index)
+{
+ T1_COMP_CHAR_INFO *cci=NULL;
+ CompCharData *ccd=NULL;
+ int i;
+
+ /* Check whether font is loaded: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( cci);
+ }
+
+ /* If no AFM info is present, we return -2 */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return( cci);
+ }
+
+ /* range check for index */
+ if ((index < 0) ||
+ (index >= pFontBase->pFontArray[FontID].pAFMData->numOfComps)) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( cci);
+ }
+
+ /* Alloc mem */
+ if ((cci=(T1_COMP_CHAR_INFO*)malloc( sizeof(T1_COMP_CHAR_INFO)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( cci);
+ }
+
+ /* set source pointer */
+ ccd=&(pFontBase->pFontArray[FontID].pAFMData->ccd[index]);
+ /* and copy information */
+ cci->compchar=T1_GetEncodingIndex( FontID, ccd->ccName);
+ cci->numPieces=ccd->numOfPieces;
+ /* we expect numPieces to be >1 */
+ if ((cci->pieces=(T1_COMP_PIECE *)malloc( sizeof(T1_COMP_PIECE)*
+ cci->numPieces))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( cci);
+ return( NULL);
+ }
+ /* Copy information */
+ for (i=0; i<cci->numPieces; i++) {
+ cci->pieces[i].piece=T1_GetEncodingIndex( FontID, ccd->pieces[i].pccName);
+ cci->pieces[i].deltax=ccd->pieces[i].deltax;
+ cci->pieces[i].deltay=ccd->pieces[i].deltay;
+ }
+ return( cci);
+
+}
+
+
+
+/* T1_IsInternalChar(): Query whether the character in encoding slot
+ char1 of font FontID has an internal definition (CharString) or
+ whether it is constructed by t1lib from elementary units */
+int T1_IsInternalChar( int FontID, char char1)
+{
+ unsigned char uchar1;
+ char *charname;
+ psdict *pCharStrings;
+ int len, i, j;
+
+ /* return NULL if font not loaded */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( -1);
+ }
+
+ pCharStrings=pFontBase->pFontArray[FontID].pType1Data->CharStringsP;
+ uchar1=(unsigned char)char1;
+
+ charname=T1_GetCharName( FontID, uchar1);
+
+ /* First, get the maximum number of charstrings: */
+ len=pCharStrings[0].key.len;
+
+ /* Check all CharString definitions */
+ for ( i=1; i<=len; i++) {
+ /* if len=0, then the CharStrings dict is larger that required which
+ is valid and allowed by the spec.*/
+ if ((j=pCharStrings[i].key.len)!=0) {
+ if ( (j==strlen(charname)) &&
+ (strncmp( charname, pCharStrings[i].key.data.nameP, j)==0) ) {
+ /* we have found an internal definition */
+ return( 1);
+ }
+ }
+ }
+ return( 0);
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.h
new file mode 100644
index 00000000000..7334f0130c8
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1finfo.h
@@ -0,0 +1,104 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1finfo.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2001-06-03
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1finfo.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifdef T1FINFO_C
+
+
+int T1_GetKerning( int FontID, char char1, char char2);
+int T1_GetCharWidth( int FontID, char char1);
+BBox T1_GetCharBBox( int FontID, char char1);
+float T1_GetUnderlinePosition( int FontID);
+float T1_GetUnderlineThickness( int FontID);
+float T1_GetItalicAngle( int FontID);
+int T1_GetIsFixedPitch( int FontID);
+char *T1_GetFontName( int FontID);
+char *T1_GetFullName( int FontID);
+char *T1_GetFamilyName( int FontID);
+char *T1_GetWeight( int FontID);
+char *T1_GetVersion( int FontID);
+char *T1_GetNotice( int FontID);
+char *T1_GetCharName( int FontID, char char1);
+int T1_QueryLigs( int FontID, char char1, char **successors, char **ligatures);
+int T1_GetEncodingIndex( int FontID, char *char1);
+int *T1_GetEncodingIndices( int FontID, char *char1);
+int T1_GetStringWidth( int FontID, char *string,
+ int len, long spaceoff,int kerning);
+BBox T1_GetStringBBox( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+METRICSINFO T1_GetMetricsInfo( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+BBox T1_GetFontBBox( int FontID);
+char **T1_GetAllCharNames( int FontID);
+int T1_GetNoKernPairs( int FontID);
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2);
+int T1_GetNoCompositeChars( int FontID);
+int T1_QueryCompositeChar( int FontID, char char1);
+T1_COMP_CHAR_INFO *T1_GetCompCharData( int FontID, char char1);
+T1_COMP_CHAR_INFO *T1_GetCompCharDataByIndex( int FontID, int index);
+int T1_IsInternalChar( int FontID, char char1);
+
+
+#else
+
+
+extern int T1_GetKerning( int FontID, char char1,
+ char char2);
+extern int T1_GetCharWidth( int FontID, char char1);
+extern BBox T1_GetCharBBox( int FontID, char char1);
+extern float T1_GetUnderlinePosition( int FontID);
+extern float T1_GetUnderlineThickness( int FontID);
+extern float T1_GetItalicAngle( int FontID);
+extern int T1_GetIsFixedPitch( int FontID);
+extern char *T1_GetFontName( int FontID);
+extern char *T1_GetFullName( int FontID);
+extern char *T1_GetFamilyName( int FontID);
+extern char *T1_GetWeight( int FontID);
+extern char *T1_GetVersion( int FontID);
+extern char *T1_GetNotice( int FontID);
+extern char *T1_GetCharName( int FontID, char char1);
+extern int T1_QueryLigs( int FontID, char char1, char **successors, char **ligatures);
+extern int T1_GetEncodingIndex( int FontID, char *char1);
+extern int *T1_GetEncodingIndices( int FontID, char *char1);
+extern int T1_GetStringWidth( int FontID, char *string,
+ int len, long spaceoff,int kerning);
+extern BBox T1_GetStringBBox( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+extern METRICSINFO T1_GetMetricsInfo( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+extern BBox T1_GetFontBBox( int FontID);
+extern int T1_GetNoKernPairs( int FontID);
+extern char **T1_GetAllCharNames( int FontID);
+extern int T1_GetNoCompositeChars( int FontID);
+extern int T1_QueryCompositeChar( int FontID, char char1);
+extern T1_COMP_CHAR_INFO *T1_GetCompCharData( int FontID, char char1);
+extern T1_COMP_CHAR_INFO *T1_GetCompCharDataByIndex( int FontID, int index);
+extern int T1_IsInternalChar( int FontID, char char1);
+
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1global.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1global.h
new file mode 100644
index 00000000000..52e872e2512
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1global.h
@@ -0,0 +1,116 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1global.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-16
+ ----- Description: This file is part of the t1-library. It contains
+ global declarations used by the t1-library.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#include "t1misc.h"
+
+
+/* Following struct will allow all accesses to font data! */
+struct FONTBASE
+{
+ int t1lib_flags; /* Global library flags */
+ int no_fonts_ini; /* The number of fonts initially declared in
+ Font database file. */
+ int no_fonts; /* The number of currently allocated fonts including
+ logical fonts produced by T1_CopyFont() */
+ int no_fonts_limit; /* The maximum number of font for which is memory
+ currently available. */
+ int bitmap_pad; /* The value to which bitmap-scanlines are padded */
+ int endian; /* 1 if little endian representation and 0 otherwise */
+ char **default_enc; /* The default encoding vector */
+ FONTPRIVATE *pFontArray; /* Points to first element of font pointer array */
+} FontBase;
+struct FONTBASE *pFontBase=NULL;
+
+
+
+/* Further we need a struct where to save device dependent data such as
+ resolution. The values in this struct may be altered using
+ T1_SetDeviceRes(x_res,y_res). Generally, the fontsize is to be specified
+ in BigPoints ("bp")---this is the default PostScript unit. It is
+ 1in=72bp.
+ */
+typedef struct
+{
+ float x_resolution; /* Value must be specified in DPI */
+ float y_resolution; /* Value must be specified in DPI */
+ float scale_x; /* horizontal scale-value to get a
+ matrix scaled to 1b */
+ float scale_y; /* vertical scale-value to get a
+ matrix scaled to 1b */
+} DEVICESPECIFICS;
+
+DEVICESPECIFICS DeviceSpecifics = { DEFAULT_RES,
+ DEFAULT_RES,
+ DEFAULT_RES/BIGPOINTSPERINCH,
+ DEFAULT_RES/BIGPOINTSPERINCH
+};
+
+
+
+struct stat filestats; /* A structure where fileinfo is stored */
+char linebuf[BUF_SIZE]; /* A buffer for reading files line
+ by line */
+int T1_Up=0; /* This one is for initialization-checking */
+
+/* The width of AA-pixels */
+int T1aa_bpp;
+
+/* The follwoing variable allows the primary rastering functions
+ to check for the caller */
+int SetFuncRequestID=0;
+
+/* The following variable allows to suppress rastering at 1000 bp
+ for getting a correct bounding box for slanted characters -->
+ should only internally be used */
+int ForceAFMBBox=0;
+
+extern struct XYspace *IDENTITY;
+
+int errornumber; /* for debugging purposes */
+
+/* The following pointers should be set to path-strings--used for locating
+ type1, afm and encoding files */
+char** T1_PFAB_ptr=NULL;
+char** T1_AFM_ptr=NULL;
+char** T1_ENC_ptr=NULL;
+char** T1_FDB_ptr=NULL;
+char** T1_FDBXLFD_ptr=NULL;
+
+/* We use a uchar buffer for error and warning messages: */
+char err_warn_msg_buf[1024];
+
+/* file pointer for log-file */
+FILE *t1lib_log_file=NULL;
+int t1lib_log_level=2;
+
+/* The errno for t1lib */
+int T1_errno=0;
+
+/* A variable for saving stack info */
+jmp_buf stck_state;
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1lib.h.in b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1lib.h.in
new file mode 100644
index 00000000000..c4d1add8add
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1lib.h.in
@@ -0,0 +1,468 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1lib.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2004-12-19
+ ----- Description: This file is part of the t1-library. It must be
+ included by the user of the t1lib. It contains
+ function declarations and some basic data types, the
+ user must deal with.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2004.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifndef T1LIB_H_INCLUDED
+
+#define T1LIB_H_INCLUDED
+
+/* type definitions, needed by the user: */
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* Version information filled in by configure */
+#define T1LIB_VERSION @T1LIB_VERSION@
+#define T1LIB_REVISION @T1LIB_REVISION@
+#define T1LIB_PATCHLEVEL @T1LIB_PATCHLEVEL@
+#define T1LIB_VERSIONSTRING @T1LIB_VERSIONSTRING@
+
+/* Data Type information filled in by configure. */
+typedef @T1_INT16@ T1_int16;
+typedef @T1_INT32@ T1_int32;
+
+/* the data structure which contains the character bitmap description */
+typedef struct
+{
+ char *bits; /* A pointer to the characters local bitmap */
+ struct /* A struct containing diverse metric information */
+ {
+ int ascent;
+ int descent;
+ int leftSideBearing;
+ int rightSideBearing;
+ int advanceX;
+ int advanceY;
+ } metrics;
+ void *pFontCacheInfo;
+ unsigned long bpp;
+} GLYPH;
+
+
+/* A structure representing a matrix */
+typedef struct
+{
+ double cxx;
+ double cyx;
+ double cxy;
+ double cyy;
+} T1_TMATRIX;
+
+
+/* the bounding box data structure: */
+typedef struct
+{
+ int llx; /* lower left x-position */
+ int lly; /* lower left y-position */
+ int urx; /* upper right x-position */
+ int ury; /* upper right y-position */
+} BBox;
+
+
+/* A data that makes most important information available to user. */
+typedef struct
+{
+ int width; /* The glyph's width */
+ BBox bbox; /* The glyph's bounding box */
+ int numchars; /* The number of characters in the glyph (string) */
+ int *charpos; /* A pointer to an integer array were the horizontal
+ positions in (afm units) of the individual
+ characters in the string are stored */
+} METRICSINFO;
+
+
+#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad))
+
+
+/* def's for T1_InitLib() */
+#define NO_LOGFILE 0x0
+#define LOGFILE 0x1
+#define IGNORE_FONTDATABASE 0x2 /* Default is to read database */
+#define IGNORE_CONFIGFILE 0x4 /* Default is to read config file */
+#define T1_AA_CACHING 0x8 /* Cache aa-bytes */
+#define T1_NO_AFM 0x10 /* Do not load or generate AFM data */
+
+
+
+/* common 'yes'/'no' */
+#define T1_YES 0x1
+#define T1_NO 0x0
+
+
+/* logfile levels: */
+#define T1LOG_ERROR 1
+#define T1LOG_WARNING 2
+#define T1LOG_STATISTIC 3
+#define T1LOG_DEBUG 4
+
+
+/* #define's for manipulating searchpaths */
+#define T1_PFAB_PATH 0x01
+#define T1_AFM_PATH 0x02
+#define T1_ENC_PATH 0x04
+#define T1_FDB_PATH 0x08
+#define T1_APPEND_PATH 0x00
+#define T1_PREPEND_PATH 0x01
+
+
+/* #define's for character/string properties (not all implemented) */
+#define T1_DEFAULT 0x0000
+#define T1_UNDERLINE 0x0001
+#define T1_OVERLINE 0x0002
+#define T1_OVERSTRIKE 0x0004
+#define T1_DOUBLEOVERSTRIKE 0x0008
+#define T1_RIGHT_TO_LEFT 0x0010
+#define T1_SUBSCRIPT 0x0100
+#define T1_SUPERSCRIPT 0x0200
+#define T1_STROKED 0x1000
+#define T1_KERNING 0x2000
+
+
+/* Setting the subsampling value */
+#define T1_AA_NONE 1
+#define T1_AA_LOW 2
+#define T1_AA_HIGH 4
+
+
+/* Error handling: */
+extern int T1_errno;
+
+/* These are from scanning a font file */
+#define T1ERR_SCAN_FONT_FORMAT -5
+#define T1ERR_SCAN_FILE_OPEN_ERR -4
+#define T1ERR_SCAN_OUT_OF_MEMORY -3
+#define T1ERR_SCAN_ERROR -2
+#define T1ERR_SCAN_FILE_EOF -1
+/* These are from generating paths */
+#define T1ERR_PATH_ERROR 1
+#define T1ERR_PARSE_ERROR 2
+#define T1ERR_TYPE1_ABORT 3
+/* These are from t1lib */
+#define T1ERR_INVALID_FONTID 10
+#define T1ERR_INVALID_PARAMETER 11
+#define T1ERR_OP_NOT_PERMITTED 12
+#define T1ERR_ALLOC_MEM 13
+#define T1ERR_FILE_OPEN_ERR 14
+#define T1ERR_UNSPECIFIED 15
+#define T1ERR_NO_AFM_DATA 16
+#define T1ERR_X11 17
+#define T1ERR_COMPOSITE_CHAR 18
+#define T1ERR_SCAN_ENCODING 19
+
+
+/* Flags to control the rasterizer */
+#define T1_IGNORE_FORCEBOLD 0x0001
+#define T1_IGNORE_FAMILYALIGNMENT 0x0002
+#define T1_IGNORE_HINTING 0x0004
+
+#define T1_DEBUG_LINE 0x0100
+#define T1_DEBUG_REGION 0x0200
+#define T1_DEBUG_PATH 0x0400
+#define T1_DEBUG_FONT 0x0800
+#define T1_DEBUG_HINT 0x1000
+
+
+/* definitions for outline handling */
+#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */
+/* From/to conversion of pels/fractpels */
+#define T1_TOPATHPOINT(p) (((T1_int32)p)<<FRACTBITS)
+#define PPHALF (1<<(FRACTBITS-1))
+#define T1_NEARESTPOINT(fp) (((fp)+PPHALF)>>FRACTBITS)
+
+/* A fractional point */
+typedef struct {
+ T1_int32 x;
+ T1_int32 y;
+} T1_PATHPOINT;
+
+
+/* A straight outline segment, stroked or not stroked */
+typedef struct pathsegment {
+ char type; /* type of segment (line or move) */
+ unsigned char flag; /* type1 rasterizer internal stuff */
+ short references; /* type1 rasterizer internal stuff */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* index to device context */
+ struct pathsegment *link; /* pointer to next structure in linked list */
+ struct pathsegment *last; /* pointer to last structure in list */
+ T1_PATHPOINT dest; /* relative ending location of path segment */
+} T1_PATHSEGMENT;
+
+/* A third order bezier segment */
+typedef struct bezierpathsegment {
+ char type; /* type of segment (bezier) */
+ unsigned char flag; /* type1 rasterizer internal stuff */
+ short references; /* type1 rasterizer internal stuff */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ T1_PATHSEGMENT *link; /* as with any 'segment' type */
+ T1_PATHSEGMENT *last; /* as with any 'segment' type */
+ T1_PATHPOINT dest; /* ending point (D) */
+ T1_PATHPOINT B; /* control point B */
+ T1_PATHPOINT C; /* control point C */
+} T1_BEZIERSEGMENT;
+
+typedef T1_PATHSEGMENT T1_OUTLINE;
+
+#define T1_PATHTYPE_LINE 0x10
+#define T1_PATHTYPE_BEZIER 0x12
+#define T1_PATHTYPE_MOVE 0x15
+
+
+/* Definitions for font subsetting */
+#define T1_SUBSET_DEFAULT 0x00
+#define T1_SUBSET_FORCE_REENCODE 0x01
+#define T1_SUBSET_SKIP_REENCODE 0x02
+#define T1_SUBSET_ENCRYPT_BINARY 0x04
+/* This is only for debugging, it does not produce valid font-files!
+ This flag is not in the documented API!. */
+#define T1_SUBSET_ENCRYPT_NONE 0x08
+
+
+/* Two structures for handling composite character data */
+/* One structure for each symbol of the composite character */
+typedef struct
+{
+ int piece; /* the index of the current symbol */
+ int deltax; /* horizontal displacement of current symbol in CS */
+ int deltay; /* vertical displacement of current symbol in CS */
+} T1_COMP_PIECE;
+
+/* This one defines the composite character, the number of pieces and how to
+ access their data. */
+typedef struct
+{
+ int compchar; /* the base character in the current encoding */
+ int numPieces; /* the number of defined pieces including the base char */
+ T1_COMP_PIECE *pieces; /* a pointer to the pieces' information */
+} T1_COMP_CHAR_INFO;
+
+
+
+/* function declarations: */
+
+/* from t1base.c */
+extern void *T1_InitLib( int log);
+extern int T1_CloseLib( void);
+extern int T1_AddFont( char *fontfilename);
+extern void T1_PrintLog( char *func_ident, char *msg_txt, int level, ...);
+extern void T1_SetLogLevel( int level);
+extern int T1_CheckForInit(void);
+extern int T1_CheckForFontID( int FontID);
+extern char *T1_GetFontFileName( int FontID);
+extern int T1_GetNoFonts(void);
+extern int T1_SetDeviceResolutions( float x_res, float y_res);
+extern int T1_CopyFont( int FontID);
+extern int T1_QueryX11Support( void);
+extern int T1_CheckEndian(void);
+extern int T1_SetBitmapPad( int pad);
+extern int T1_GetBitmapPad( void);
+extern char *T1_GetLibIdent( void);
+extern void T1_SetRasterFlags( int flags);
+extern char *T1_GetAfmFileName( int FontID);
+extern int T1_SetAfmFileName( int FontId, char *afm_name);
+extern char *T1_GetFontFilePath( int FontID);
+extern char *T1_GetAfmFilePath( int FontID);
+extern const char *T1_StrError( int t1err);
+
+/* from t1delete.c */
+extern int T1_DeleteSize( int FontID, float size);
+extern int T1_DeleteAllSizes( int FontID);
+extern int T1_FreeGlyph( GLYPH *glyph);
+extern int T1_FreeCompCharData( T1_COMP_CHAR_INFO *cci);
+extern int T1_DeleteFont( int FontID);
+
+/* from t1enc.c */
+extern char **T1_LoadEncoding( char *FileName);
+extern int T1_DeleteEncoding( char **encoding);
+extern int T1_ReencodeFont( int FontID, char **Encoding);
+extern int T1_SetDefaultEncoding( char **encoding);
+extern char *T1_GetEncodingScheme( int FontID);
+
+/* from t1env.c */
+extern int T1_SetFileSearchPath( int type, char *pathname);
+extern int T1_AddToFileSearchPath( int pathtype, int mode, char *pathname);
+extern char *T1_GetFileSearchPath( int type);
+extern int T1_SetFontDataBase( char *filename);
+extern int T1_AddFontDataBase( int mode, char *filename);
+
+/* from t1finfo.c */
+extern int T1_GetKerning( int FontID, char char1,
+ char char2);
+extern int T1_GetCharWidth( int FontID, char char1);
+extern BBox T1_GetCharBBox( int FontID, char char1);
+extern float T1_GetUnderlinePosition( int FontID);
+extern float T1_GetUnderlineThickness( int FontID);
+extern float T1_GetItalicAngle( int FontID);
+extern int T1_GetIsFixedPitch( int FontID);
+extern char *T1_GetFontName( int FontID);
+extern char *T1_GetFullName( int FontID);
+extern char *T1_GetFamilyName( int FontID);
+extern char *T1_GetWeight( int FontID);
+extern char *T1_GetVersion( int FontID);
+extern char *T1_GetNotice( int FontID);
+extern char *T1_GetCharName( int FontID, char char1);
+extern int T1_QueryLigs( int FontID,
+ char char1,
+ char **successors,
+ char **ligatures);
+extern int T1_GetEncodingIndex( int FontID, char *char1);
+extern int *T1_GetEncodingIndices( int FontID, char *char1);
+extern int T1_GetStringWidth( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+extern BBox T1_GetStringBBox( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+extern METRICSINFO T1_GetMetricsInfo( int FontID, char *string,
+ int len, long spaceoff, int kerning);
+extern BBox T1_GetFontBBox( int FontID);
+extern char **T1_GetAllCharNames( int FontID);
+extern int T1_GetNoKernPairs( int FontID);
+extern int T1_GetNoCompositeChars( int FontID);
+extern int T1_QueryCompositeChar( int FontID, char char1);
+extern T1_COMP_CHAR_INFO *T1_GetCompCharData( int FontID, char char1);
+extern T1_COMP_CHAR_INFO *T1_GetCompCharDataByIndex( int FontID, int index);
+extern int T1_IsInternalChar( int FontID, char char1);
+
+/* from t1load.c */
+extern int T1_LoadFont( int FontID);
+extern void *T1_QueryFontSize( int FontID, float size, int aa);
+
+/* from t1set.c */
+extern GLYPH *T1_SetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH* T1_SetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern GLYPH *T1_CopyGlyph(GLYPH *glyph);
+extern void T1_DumpGlyph( GLYPH *glyph);
+extern GLYPH *T1_ConcatGlyphs( GLYPH *glyph1, GLYPH *glyph2,
+ int x_off, int y_off, int modflag);
+extern void T1_DumpPixmap( GLYPH *glyph);
+extern GLYPH *T1_FillOutline( T1_OUTLINE *path, int modflag);
+
+/* from t1trans.c */
+extern int T1_ExtendFont( int FontID, double extend);
+extern int T1_SlantFont( int FontID, double slant);
+extern int T1_TransformFont( int FontID, T1_TMATRIX *matrix);
+extern double T1_GetExtend( int FontID);
+extern double T1_GetSlant( int FontID);
+extern T1_TMATRIX T1_GetTransform( int FontID);
+extern int T1_SetLinePosition( int FontID, int linetype, float value);
+extern int T1_SetLineThickness( int FontID, int linetype, float value);
+extern float T1_GetLinePosition( int FontID, int linetype);
+extern float T1_GetLineThickness( int FontID, int linetype);
+extern T1_TMATRIX *T1_RotateMatrix( T1_TMATRIX *matrix, double angle);
+extern T1_TMATRIX *T1_MirrorHMatrix( T1_TMATRIX *matrix);
+extern T1_TMATRIX *T1_MirrorVMatrix( T1_TMATRIX *matrix);
+extern T1_TMATRIX *T1_ShearHMatrix( T1_TMATRIX *matrix, double shear);
+extern T1_TMATRIX *T1_ShearVMatrix( T1_TMATRIX *matrix, double shear);
+extern T1_TMATRIX *T1_ExtendHMatrix( T1_TMATRIX *matrix, double extent);
+extern T1_TMATRIX *T1_ExtendVMatrix( T1_TMATRIX *matrix, double extent);
+extern T1_TMATRIX *T1_TransformMatrix( T1_TMATRIX *matrix,
+ double cxx, double cyx,
+ double cxy, double cyy);
+extern int T1_StrokeFont( int FontID, int dostroke);
+extern int T1_SetStrokeFlag( int FontID);
+extern int T1_ClearStrokeFlag( int FontID);
+extern int T1_GetStrokeMode( int FontID);
+extern int T1_SetStrokeWidth( int FontID, float strokewidth);
+extern float T1_GetStrokeWidth( int FontID);
+
+
+/* from t1aaset.c */
+extern GLYPH *T1_AASetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetString( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH* T1_AASetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern int T1_AASetGrayValues(unsigned long white,
+ unsigned long gray75,
+ unsigned long gray50,
+ unsigned long gray25,
+ unsigned long black);
+extern int T1_AAHSetGrayValues( unsigned long *grayvals);
+extern int T1_AANSetGrayValues( unsigned long bg, unsigned long fg);
+extern int T1_AAGetGrayValues( long *pgrayvals);
+extern int T1_AAHGetGrayValues( long *pgrayvals);
+extern int T1_AANGetGrayValues( long *pgrayvals);
+extern int T1_AASetBitsPerPixel( int bpp);
+extern int T1_AAGetBitsPerPixel( void);
+extern int T1_AASetLevel( int level);
+extern int T1_AAGetLevel( void);
+extern GLYPH *T1_AAFillOutline( T1_OUTLINE *path, int modflag);
+extern int T1_AASetSmartLimits( float limit1, float limit2);
+extern int T1_AASetSmartMode( int smart);
+
+
+/* from t1afmtool.c */
+extern int T1_WriteAFMFallbackFile( int FontID);
+
+/* from t1outline.c */
+extern T1_OUTLINE *T1_GetCharOutline( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern T1_OUTLINE *T1_GetStringOutline( int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern T1_OUTLINE *T1_ConcatOutlines( T1_OUTLINE *path1,
+ T1_OUTLINE *path2);
+extern T1_OUTLINE *T1_ScaleOutline( T1_OUTLINE *path, float scale);
+extern T1_OUTLINE *T1_GetMoveOutline( int FontID, int deltax, int deltay, int modflag,
+ float size, T1_TMATRIX *transform);
+extern void T1_DumpPath( T1_OUTLINE *path);
+extern void T1_AbsolutePath( T1_OUTLINE *rpath);
+extern void T1_RelativePath( T1_OUTLINE *apath);
+extern void T1_ManipulatePath( T1_OUTLINE *path,
+ void (*manipulate)(long *x,long *y,int type));
+extern T1_OUTLINE *T1_CopyOutline( T1_OUTLINE *path);
+extern void T1_FreeOutline( T1_OUTLINE *path);
+
+
+/* from t1subset.c */
+extern char *T1_SubsetFont( int FontID,
+ char *mask,
+ unsigned int flags,
+ int linewidth,
+ unsigned long maxblocksize,
+ unsigned long *bufsize);
+extern char *T1_GetCharString( int FontID, char *charname, int *len);
+extern int T1_GetlenIV( int FontID);
+
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif /* T1LIB_H_INCLUDED */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1libx.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1libx.h
new file mode 100644
index 00000000000..e29e1543e46
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1libx.h
@@ -0,0 +1,93 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1libx.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-01-02
+ ----- Description: This file is part of the t1-library. It must be
+ included by the user of the t1lib. It contains
+ function declarations for the X11 wrapper.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifndef T1LIBX_H_INCLUDED
+
+#define T1LIBX_H_INCLUDED
+
+
+#ifndef _XLIB_H_
+#include <X11/Xlib.h>
+#endif
+
+
+#define T1LIB_X11_SUPPORT
+
+/* For paint mode of X-rastering functions */
+#define T1_OPAQUE 0x1
+#define T1_TRANSPARENT 0x0
+
+
+/* type definitions, needed by the user: */
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+
+/* from t1x11.c */
+extern int T1_SetX11Params( Display *display,
+ Visual *visual,
+ unsigned int depth,
+ Colormap colormap);
+extern GLYPH *T1_SetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern GLYPH *T1_AASetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern int T1_ComputeAAColorsX( unsigned long fg,
+ unsigned long bg,
+ int nolevels);
+extern int T1_GetDepthOfDrawable( Drawable drawable);
+extern void T1_LogicalPositionX( int pos_switch);
+extern XImage *T1_XImageFromGlyph( GLYPH *pglyph);
+
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif /* T1LIBX_H_INCLUDED */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.c
new file mode 100644
index 00000000000..ba9156e1672
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.c
@@ -0,0 +1,1050 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1load.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2007-12-23
+ ----- Description: This file is part of the t1-library. It contains
+ functions for loading fonts and for managing size
+ dependent data.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2007.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1LOAD_C
+
+#define ANSI_REALLOC_VM
+
+/* Note: On some systems, like e.g. my Linux box, realloc() frequently returns
+ the identical pointer, if the memory chunk is *decreased* in size. As
+ a consequence, pointer shifting (as implemented below) would never
+ actually appear. The following definition enforces pointer shifting,
+ and hence allows to check pointer shifting on every system. Do not
+ activate this, it is meant for testing only!
+*/
+/* #define ANSI_REALLOC_ENFORCE_POINTERSHIFTING */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/blues.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1load.h"
+#include "t1env.h"
+#include "t1set.h"
+#include "t1base.h"
+#include "t1finfo.h"
+#include "t1afmtool.h"
+
+
+
+extern psobj *StdEncArrayP; /* For checking of a fonts encoding */
+extern char not_def[]; /* for checking the ".notdef"-string */
+
+
+
+/* T1_LoadFont(FontID): Loads a Type1 font into memory and allocates all
+ memory, necessary for this. */
+
+int T1_LoadFont( int FontID)
+{
+ int i, j, k, l, m, n;
+ char *FileName, *FileNamePath;
+ int mode; /* This is used by the type1-library for error reporting */
+ char *charname;
+
+ /* The following vars are used for reallocation of VM */
+ long tmp_size;
+ float ascender;
+#ifdef ANSI_REALLOC_VM
+ unsigned long shift;
+ unsigned long ldummy;
+ char *tmp_ptr;
+#endif
+
+ struct region *area;
+ struct XYspace *S;
+
+ /* These are for constructing the kerning lookup table: */
+ PairKernData *pkd;
+ METRICS_ENTRY *kern_tbl;
+ int char1, char2;
+
+
+ if (T1_CheckForInit()){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+
+ i=T1_CheckForFontID(FontID);
+ if (i==1)
+ return(0); /* Font already loaded */
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1); /* illegal FontID */
+ }
+
+ /* Allocate memory for ps_font structure: */
+ if ((pFontBase->pFontArray[FontID].pType1Data=(psfont *)malloc(sizeof(psfont)))==NULL){
+ T1_PrintLog( "T1_LoadFont()", "Failed to allocate memory for psfont-struct (FontID=%d)",
+ T1LOG_ERROR, FontID);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+
+ /* Check for valid filename */
+ if ((FileName=T1_GetFontFileName(FontID))==NULL){
+ T1_PrintLog( "T1_LoadFont()", "No font file name for font %d", T1LOG_ERROR, FontID);
+ return(-1);
+ }
+
+ /* Fetch the full path of type1 font file */
+ if ((FileNamePath=intT1_Env_GetCompletePath( FileName,
+ T1_PFAB_ptr))==NULL){
+ T1_PrintLog( "T1_LoadFont()", "Couldn't locate font file for font %d in %s",
+ T1LOG_ERROR, FontID, T1_GetFileSearchPath(T1_PFAB_PATH));
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(-1);
+ }
+
+ /* And load all PostScript information into memory */
+ if (fontfcnA( FileNamePath, &mode,
+ pFontBase->pFontArray[FontID].pType1Data) == FALSE){
+ T1_PrintLog( "T1_LoadFont()", "Loading font with ID = %d failed! (mode = %d)",
+ T1LOG_ERROR, FontID, mode);
+ free(FileNamePath);
+ pFontBase->pFontArray[FontID].pType1Data=NULL;
+ T1_errno=mode;
+ return(-1);
+ }
+ free(FileNamePath);
+
+
+ /* Set some default for FontBBox and Encoding if the font does not provide
+ correct data. Strictly taken, these fonts do not adhere to the Type1
+ specification. However, it is easy to work around and find reasonable
+ defaults. This solution has been proposed by the Debian community (see
+ http://bugs.debian.org/313236). */
+ /* 1. FontBBox. We set default values of 0 which is recommended by Adobe
+ in cases where the font does not make use of the SEAC primitive. Later on,
+ if AFM fallback info is computed, these settings might be overwritten with
+ meaningful values. */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP == NULL) {
+ if ((pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP =
+ (psobj *)vm_alloc(4 * sizeof(psobj))) == NULL) {
+ T1_PrintLog( "T1_LoadFont()", "Error allocating memory for fontbbox objects (FontID=%d)",
+ T1LOG_ERROR, FontID);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ for (n = 0; n < 4; n++) {
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[n].type = OBJ_INTEGER;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[n].len = 0;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTBBOX].value.data.arrayP[n].data.integer = 0;
+ }
+ T1_PrintLog( "T1_LoadFont()", "Missing FontBBox, adding a trivial one in order to avoid crashes (FontID=%d)",
+ T1LOG_WARNING, FontID);
+ }
+ /* 2. Encoding. In this case, we simply fallback to Standard Encoding. */
+ if (pFontBase->pFontArray[FontID].pFontEnc == NULL &&
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP == NULL) {
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.valueP = (char *) StdEncArrayP;
+ T1_PrintLog( "T1_LoadFont()", "Missing, invalid or undefined Encoding, setting up Standard Encoding in order to avoid crashes (FontID=%d)",
+ T1LOG_WARNING, FontID);
+ }
+
+
+ /* Store the base address of virtual memory and realloc in order not
+ to waste too much memory: */
+ pFontBase->pFontArray[FontID].vm_base=vm_base;
+#ifdef ANSI_REALLOC_VM
+ /* We first get the size of pointers on the current system */
+ /* Get size of VM, ... */
+ tmp_size=((unsigned long)vm_used - (unsigned long)vm_base);
+ /* ... realloc to that size ... */
+#ifdef ANSI_REALLOC_ENFORCE_POINTERSHIFTING
+ tmp_ptr=(char *)malloc( tmp_size);
+ memcpy( tmp_ptr, vm_base, tmp_size);
+#else
+ tmp_ptr=(char *)realloc(vm_base, tmp_size);
+#endif
+ /* ... and shift all pointers refering to that area */
+ if (tmp_ptr > vm_base){
+ shift= (unsigned long)tmp_ptr - (unsigned long)vm_base;
+ sprintf( err_warn_msg_buf,
+ "Old VM at 0x%lX, new VM at 0x%lX, shifting up by %lu",
+ (unsigned long)vm_base, (unsigned long)tmp_ptr, tmp_size);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+
+ /* We start by shifting the topmost pointers: */
+ pFontBase->pFontArray[FontID].vm_base=tmp_ptr;
+
+ ldummy=(long)(pFontBase->pFontArray[FontID].pType1Data->vm_start);
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->vm_start=(char *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP=(psdict *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private=(psdict *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP=(psdict *)ldummy;
+
+ ldummy=(long)(pFontBase->pFontArray[FontID].pType1Data->BluesP);
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->BluesP=(struct blues_struct *)ldummy;
+
+ /* We now have to care for correcting all pointers which are in the VM
+ and refer to some place in the VM! Note: Instead of selecting the
+ appropriate pointer-elements of the union we simply shift the
+ unspecified pointer "valueP".
+ Note: The filename entry does not need to be modified since it does not
+ need to be shifted since it points to memory managed by t1lib.
+ */
+ /* FontInfo-dictionary: All name-pointers and the pointers to all array
+ types have to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->fontInfoP[0].key.len;
+ for (j=1; j<=i; j++){
+ if ((pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_ARRAY) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_STRING) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_NAME) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_FILE)){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP=(char *)ldummy;
+ }
+ /* The encoding needs special treatment: */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_ENCODING){
+ /* If builtin StandardEncoding is used, we do nothing here. Standard Encoding
+ is now located once for all fonts on the heap. For font-specific encodings
+ we have to move all pointers appropriately, because this is entirely located
+ in VM */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP
+ == StdEncArrayP){ /* Font uses builtin StandardEncoding */
+ ;
+ }
+ else{ /* Font-specific encoding */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP=(char *)ldummy;
+ for (k=0; k<256; k++){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP[k].data.arrayP;
+ /* The ".notdef" is also static and may not be shifted (Thanks, Derek ;) */
+ if (ldummy != (unsigned long)not_def) {
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP[k].data.arrayP=(struct ps_obj *)ldummy;
+ }
+ }
+ }
+ } /* end of encoding-handling */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].key.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].key.data.valueP=(char *)ldummy;
+ } /* fontinfo-dict done */
+
+ /* Private-dictionary: All name-pointers and the pointers to all array
+ types have to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->Private[0].key.len;
+ for (j=1; j<=i; j++){
+ if ((pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_ARRAY) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_STRING) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_NAME) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_FILE)){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private[j].value.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private[j].value.data.valueP=(char *)ldummy;
+ }
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private[j].key.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private[j].key.data.valueP=(char *)ldummy;
+ }
+
+ /* BluesP: The entry "next" is the only pointer in blues_struct. Although it is
+ not used anywhere we should shift it for correctness reasons (in case its not
+ NULL)! */
+ if (pFontBase->pFontArray[FontID].pType1Data->BluesP->next != NULL){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->BluesP->next;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->BluesP->next=(struct blues_struct *)ldummy;
+ }
+
+ /* The CharStrings-dictionary: Every namepointer and its corresponding
+ charstring has to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->CharStringsP[0].key.len;
+ for (j=1; j<=i; j++){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].value.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].value.data.valueP=(char *)ldummy;
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].key.data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].key.data.valueP=(char *)ldummy;
+ }
+
+ /* The Subroutines have also to be reorganized: */
+ i=pFontBase->pFontArray[FontID].pType1Data->Subrs.len;
+ /* First, shift pointer to array-start and after that the pointers to
+ each command string: */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP=(struct ps_obj *)ldummy;
+ for (j=0; j<i; j++) {
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP[j].data.valueP;
+ ldummy +=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP[j].data.valueP=(char *)ldummy;
+ }
+ } /* end of if( tmp_ptr > vm_base ) */
+ else if ( vm_base > tmp_ptr){
+ shift= (unsigned long)vm_base - (unsigned long)tmp_ptr;
+ sprintf( err_warn_msg_buf,
+ "Old VM at 0x%lX, new VM at 0x%lX, shifting down by %lu",
+ (unsigned long)vm_base, (unsigned long)tmp_ptr, tmp_size);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+
+ /* We start by shifting the topmost pointers: */
+ pFontBase->pFontArray[FontID].vm_base=tmp_ptr;
+
+ ldummy=(long)(pFontBase->pFontArray[FontID].pType1Data->vm_start);
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->vm_start=(char *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP=(psdict *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private=(psdict *)ldummy;
+
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP=(psdict *)ldummy;
+
+ ldummy=(long)(pFontBase->pFontArray[FontID].pType1Data->BluesP);
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->BluesP=(struct blues_struct *)ldummy;
+
+ /* We now have to care for correcting all pointers which are in the VM
+ and refer to some place in the VM! Note: Instead of selecting the
+ appropriate pointer-elements of the union we simply shift the
+ unspecified pointer "valueP".
+ Note: The filename entry does not need to be modified since it does not
+ need to be shifted since it points to memory managed by t1lib.
+ */
+ /* FontInfo-dictionary: All name-pointers and the pointers to all array
+ types have to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->fontInfoP[0].key.len;
+ for (j=1; j<=i; j++){
+ if ((pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_ARRAY) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_STRING) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_NAME) ||
+ (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_FILE)){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP=(char *)ldummy;
+ }
+ /* The encoding needs special treatment: */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.type==OBJ_ENCODING){
+ /* If builtin StandardEncoding is used, we do nothing here. Standard Encoding
+ is now located once for all fonts on the heap. For font-specific encodings
+ we have to move all pointers appropriately, because this is entirely located
+ in VM */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP
+ == StdEncArrayP){ /* Font uses builtin StandardEncoding */
+ ;
+ }
+ else{ /* Font-specific encoding */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.valueP=(char *)ldummy;
+ for (k=0; k<256; k++){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP[k].data.arrayP;
+ /* The ".notdef" is also static and may not be shifted (Thanks, Derek ;) */
+ if (ldummy != (unsigned long)not_def) {
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].value.data.arrayP[k].data.arrayP=(struct ps_obj *)ldummy;
+ }
+ }
+ }
+ } /* end of encoding-handling */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].key.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[j].key.data.valueP=(char *)ldummy;
+ } /* fontinfo-dict done */
+
+ /* Private-dictionary: All name-pointers and the pointers to all array
+ types have to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->Private[0].key.len;
+ for (j=1; j<=i; j++){
+ if ((pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_ARRAY) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_STRING) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_NAME) ||
+ (pFontBase->pFontArray[FontID].pType1Data->Private[j].value.type==OBJ_FILE)){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private[j].value.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private[j].value.data.valueP=(char *)ldummy;
+ }
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Private[j].key.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Private[j].key.data.valueP=(char *)ldummy;
+ }
+
+ /* BluesP: The entry "next" is the only pointer in blues_struct. Although it is
+ not used anywhere we should shift it for correctness reasons (in case its not
+ NULL)! */
+ if (pFontBase->pFontArray[FontID].pType1Data->BluesP->next != NULL){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->BluesP->next;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->BluesP->next=(struct blues_struct *)ldummy;
+ }
+
+ /* The CharStrings-dictionary: Every namepointer and its corresponding
+ charstring has to be shifted: */
+ i=pFontBase->pFontArray[FontID].pType1Data->CharStringsP[0].key.len;
+ for (j=1; j<=i; j++){
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].value.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].value.data.valueP=(char *)ldummy;
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].key.data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->CharStringsP[j].key.data.valueP=(char *)ldummy;
+ }
+
+ /* The Subroutines have also to be reorganized: */
+ i=pFontBase->pFontArray[FontID].pType1Data->Subrs.len;
+ /* First, shift pointer to array-start and after that the pointers to
+ each command string: */
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP=(struct ps_obj *)ldummy;
+ for (j=0; j<i; j++) {
+ ldummy=(long)pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP[j].data.valueP;
+ ldummy -=shift;
+ pFontBase->pFontArray[FontID].pType1Data->Subrs.data.arrayP[j].data.valueP=(char *)ldummy;
+ }
+ } /* end of if( vm_base > tmp_ptr ) */
+ else{ /* VM addess has not changed during reallocation */
+ sprintf( err_warn_msg_buf,
+ "Old VM and new VM at 0x%lX, no pointer-shifting",
+ (unsigned long)vm_base);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ }
+#ifdef ANSI_REALLOC_ENFORCE_POINTERSHIFTING
+ /* If pointer shifting had been enforced by allocating from
+ scratch using malloc() free the previous vm. */
+ free( vm_base);
+#endif
+#endif
+
+ /* Generate a message how much VM the current font consumes */
+ sprintf( err_warn_msg_buf,
+ "VM for Font %d: %d bytes", FontID, (int) tmp_size);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_STATISTIC);
+
+
+ /* Set the matrix for common transformations to "no transformations" */
+ pFontBase->pFontArray[FontID].FontTransform[0]=1.0;
+ pFontBase->pFontArray[FontID].FontTransform[1]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[2]=0.0;
+ pFontBase->pFontArray[FontID].FontTransform[3]=1.0;
+
+ /* Now, that the font has been loaded into memory, try to find the
+ FontMatrix in the font info dictionary. If it exists, load it into
+ our local fontmatrix, otherwise use a default matrix which scales to
+ 1/1000 (since font outlines are defined in a 1000 point space)
+ and does no further transformations. */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTMATRIX].value.data.arrayP == NULL){
+ pFontBase->pFontArray[FontID].FontMatrix[0]=0.001;
+ pFontBase->pFontArray[FontID].FontMatrix[1]=0.0;
+ pFontBase->pFontArray[FontID].FontMatrix[2]=0.0;
+ pFontBase->pFontArray[FontID].FontMatrix[3]=0.001;
+ }
+ else{
+ pFontBase->pFontArray[FontID].FontMatrix[0]= (double)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTMATRIX].value.data.arrayP[0].data.real;
+ pFontBase->pFontArray[FontID].FontMatrix[1]= (double)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTMATRIX].value.data.arrayP[1].data.real;
+ pFontBase->pFontArray[FontID].FontMatrix[2]= (double)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTMATRIX].value.data.arrayP[2].data.real;
+ pFontBase->pFontArray[FontID].FontMatrix[3]= (double)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[FONTMATRIX].value.data.arrayP[3].data.real;
+ }
+
+ /* Set the default values for transformation: */
+ pFontBase->pFontArray[FontID].slant=0.0;
+ pFontBase->pFontArray[FontID].extend=1.0;
+
+
+ /* Now try to load afm-structures from corresponding .afm-file (if
+ not suppressed by the user). */
+ if ((pFontBase->t1lib_flags & T1_NO_AFM)!=0) {
+ pFontBase->pFontArray[FontID].pAFMData = NULL;
+ T1_PrintLog( "T1_LoadFont()",
+ "Suppressing AFM data handling on user request",
+ T1LOG_STATISTIC);
+ }
+ else {
+ if ((i=openFontMetricsFile( FontID, 0))){
+ /* Try a fallback, opening sloppy: */
+ if ((i=openFontMetricsFile( FontID, 1))) {
+ sprintf( err_warn_msg_buf,
+ "Alert: Error (%d) sloppy-processing afm-file for Font %d!",
+ i ,FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_STATISTIC);
+ if ((pFontBase->pFontArray[FontID].pAFMData=
+ T1_GenerateAFMFallbackInfo(FontID))==NULL){
+ sprintf( err_warn_msg_buf,
+ "Ultimately failed to generate metrics information Font %d!",
+ FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_WARNING);
+ }
+ else {
+ pFontBase->pFontArray[FontID].info_flags |=AFM_SELFGEN_SUCCESS;
+ T1_PrintLog( "T1_LoadFont()",
+ "Generating AFM-information from fontfile successful!",
+ T1LOG_STATISTIC);
+ }
+ }
+ else {
+ pFontBase->pFontArray[FontID].info_flags |=AFM_SLOPPY_SUCCESS;
+ sprintf( err_warn_msg_buf,
+ "Alert: Limited afm-information for Font %d",FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_STATISTIC);
+ }
+ }
+ else {
+ pFontBase->pFontArray[FontID].info_flags |=AFM_SUCCESS;
+ }
+ }
+
+
+ /* Now, set Encodingvector entry to default if the font's
+ internal encoding is "StandardEncoding".
+ */
+ if (pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP
+ == StdEncArrayP) {
+ pFontBase->pFontArray[FontID].info_flags |=USES_STANDARD_ENCODING;
+ pFontBase->pFontArray[FontID].pFontEnc=pFontBase->default_enc;
+ sprintf( err_warn_msg_buf,
+ "Font %d reencoded to default",FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ }
+ else {
+ sprintf( err_warn_msg_buf,
+ "Font %d not reencoded to default",FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ pFontBase->pFontArray[FontID].pFontEnc = NULL;
+ }
+
+
+ /* If AFM-Info available we try to speed up some things: */
+ if (pFontBase->pFontArray[FontID].pAFMData != NULL) {
+ /* We have to fill the array that maps the current encodings' indices to the
+ indices used in afm file. The interpretation has been changed in
+ in t1lib-1.2. We now use positive values for indexing into the charmetrics
+ array and negative values for indexing into the composite character array.
+ an index of zero indicates that no metrics are defined for this character.
+ This may happen because (a) not all AFM-files define metrics for the .notdef
+ character, and (b) because font and AFM-file do not match. */
+ if ((pFontBase->pFontArray[FontID].pEncMap=
+ (int *)calloc(256,sizeof(int)))==NULL) {
+ sprintf( err_warn_msg_buf, "Error allocating memory for encoding map (FontID=%d)",
+ FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ for (i=0; i<256; i++) {
+ charname=T1_GetCharName( FontID, i);
+ /* in a first loop check for ordinary characters */
+ for ( j=0; j<pFontBase->pFontArray[FontID].pAFMData->numOfChars; j++) {
+ if (strcmp( charname,
+ pFontBase->pFontArray[FontID].pAFMData->cmi[j].name)==0) {
+ pFontBase->pFontArray[FontID].pEncMap[i]=j+1; /* index 0 is reserved! */
+ continue;
+ }
+ }
+ /* if nothing has been found, check for composite characters */
+ for ( j=0; j<pFontBase->pFontArray[FontID].pAFMData->numOfComps; j++) {
+ if (strcmp( charname,
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].ccName)==0) {
+ pFontBase->pFontArray[FontID].pEncMap[i]=-(j+1); /* index 0 is reserved! */
+ continue;
+ }
+ }
+ }
+
+ /* For composite characters, we still have to compute the width and bbox */
+ for ( j=0; j<pFontBase->pFontArray[FontID].pAFMData->numOfComps; j++) {
+ /*and bounding box by ourselves. First, set up an identity charspace
+ matrix and then generate an edgelist for the composite character at
+ size 1000bp using no transformation and current encoding. Note: This
+ action is only required when loading a font at first time, but not
+ when reencoding a font. */
+ S=(struct XYspace *)IDENTITY;
+ S=(struct XYspace *)Permanent
+ (Transform(S, pFontBase->pFontArray[FontID].FontTransform[0],
+ pFontBase->pFontArray[FontID].FontTransform[1],
+ pFontBase->pFontArray[FontID].FontTransform[2],
+ pFontBase->pFontArray[FontID].FontTransform[3]));
+
+ area=fontfcnB_ByName( FontID, 0, S,
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].ccName,
+ &mode, pFontBase->pFontArray[FontID].pType1Data,
+ DO_RASTER);
+ /* Store bounding box ... */
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].charBBox.llx=area->xmin;
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].charBBox.urx=area->xmax;
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].charBBox.lly=area->ymin;
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].charBBox.ury=area->ymax;
+ /* ... and character width. This should be the width of the base character
+ of the composite! */
+ pFontBase->pFontArray[FontID].pAFMData->ccd[j].wx=NEARESTPEL(area->ending.x);
+ /* clean up. */
+ KillRegion (area);
+ if (S!=NULL) {
+ KillSpace (S);
+ S=NULL;
+ }
+ }
+ /* We now create an encoding-specific kerning table which will speed up
+ looking for kerning pairs! */
+ pFontBase->pFontArray[FontID].KernMapSize=0;
+ /* First, get number of defined kerning pairs: */
+ k=pFontBase->pFontArray[FontID].pAFMData->numOfPairs;
+ if (k>0){ /* i.e., there are any pairs */
+ /* OK, it does not suffice to alloc numOfPairs METRICS_ENTRYs, because
+ a given character might be encoded at several locations and kerning
+ should still work. As a worst case estimation, we allocate 256^2
+ and realloc later. */
+ if ((pFontBase->pFontArray[FontID].pKernMap=
+ (METRICS_ENTRY *)malloc( (256*256) *sizeof( METRICS_ENTRY)))==NULL){
+ sprintf( err_warn_msg_buf, "Error allocating memory for metrics map (FontID=%d)",
+ FontID);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(-1);
+ }
+ kern_tbl=pFontBase->pFontArray[FontID].pKernMap;
+ pkd=pFontBase->pFontArray[FontID].pAFMData->pkd;
+ j=0;
+ for ( i=0; i<k; i++) {
+ /* We do not check T1_GetEncodingIndices() against the return value
+ NULL because we just loading the font in question: */
+ l=0;
+ while ((char1=(T1_GetEncodingIndices( FontID, pkd[i].name1))[l++])!=-1) {
+ /* pair could be relevant in current encoding */
+ m=0;
+ while ((char2=(T1_GetEncodingIndices( FontID, pkd[i].name2))[m++])!=-1) {
+ /* Since we get here we have a relevant pair -->
+ Put char1 in higher byte and char2 in LSB: */
+ kern_tbl[j].chars=(char1 << 8) | char2;
+ /* We only make use of horizontal kerning */
+ kern_tbl[j].hkern=pkd[i].xamt;
+ j++;
+ } /* while (char2) */
+ } /* while (char1) */
+ } /* for */
+ /* We are done, realloc memory: */
+ kern_tbl=(METRICS_ENTRY*) realloc( kern_tbl, j*sizeof(METRICS_ENTRY));
+ /* We now sort the kerning array with respect to char indices */
+ qsort( kern_tbl, (size_t) j, sizeof(METRICS_ENTRY),
+ &cmp_METRICS_ENTRY );
+ /* Finally write back pointer for the case that realloc changed the
+ pointer */
+ pFontBase->pFontArray[FontID].pKernMap=kern_tbl;
+ pFontBase->pFontArray[FontID].KernMapSize=j;
+ }
+ else
+ pFontBase->pFontArray[FontID].pKernMap=NULL;
+ }
+ else { /* no AFM data */
+ pFontBase->pFontArray[FontID].pKernMap=NULL;
+ pFontBase->pFontArray[FontID].pEncMap=NULL;
+ }
+ /* End of "if (AFM-info ..)" */
+
+
+ /* We have just loaded a physical font into memory, thus .... */
+ pFontBase->pFontArray[FontID].physical=1;
+
+ /* Set reference-counter to 1: */
+ pFontBase->pFontArray[FontID].refcount=1;
+
+ /* Get the index into encoding vector where the space character is
+ found. If not encoded, set space_position to -1. */
+ pFontBase->pFontArray[FontID].space_position=-1;
+ i=0;
+ if (pFontBase->pFontArray[FontID].pFontEnc) { /* external default encoding */
+ while (i<256) {
+ if (strcmp( (char *)pFontBase->pFontArray[FontID].pFontEnc[i],
+ "space")==0){
+ /* space found at position i: */
+ pFontBase->pFontArray[FontID].space_position=i;
+ break;
+ }
+ i++;
+ }
+ }
+ else { /* internal encoding */
+ while (i<256) {
+ if (strcmp( (char *)pFontBase->pFontArray[FontID].pType1Data->fontInfoP[ENCODING].value.data.arrayP[i].data.arrayP,
+ "space")==0){
+ /* space found at position i: */
+ pFontBase->pFontArray[FontID].space_position=i;
+ break;
+ }
+ i++;
+ }
+ }
+
+
+ /* Set the lining rule parameters to default values */
+ pFontBase->pFontArray[FontID].UndrLnPos=
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[UNDERLINEPOSITION].value.data.real;
+ pFontBase->pFontArray[FontID].UndrLnThick=
+ pFontBase->pFontArray[FontID].pType1Data->fontInfoP[UNDERLINETHICKNESS].value.data.real;
+
+ /* We have to set the value for the typographic ascender. If possible,
+ we get it from the afm-File. But be aware this value might be undefined!
+ This value should in any acse explicitly be set later by the user! */
+ if (pFontBase->pFontArray[FontID].pAFMData!=NULL &&
+ pFontBase->pFontArray[FontID].pAFMData->gfi!=NULL) {
+ ascender=(float) pFontBase->pFontArray[FontID].pAFMData->gfi->ascender;
+ }
+ else {
+ ascender=(float) T1_GetCharBBox( FontID, T1_GetEncodingIndex( FontID, "d")).ury;
+ }
+
+ pFontBase->pFontArray[FontID].OvrLnPos=ascender
+ + (float) abs( (double)pFontBase->pFontArray[FontID].UndrLnPos);
+ pFontBase->pFontArray[FontID].OvrStrkPos=ascender / 2.0;
+ pFontBase->pFontArray[FontID].OvrLnThick=pFontBase->pFontArray[FontID].UndrLnThick;
+ pFontBase->pFontArray[FontID].OvrStrkThick=pFontBase->pFontArray[FontID].UndrLnThick;
+
+
+ /* Finally, set the font size dependencies pointer to NULL since we can
+ assume, that at load time of a font, no size specific data of this
+ font is available.
+ */
+
+ pFontBase->pFontArray[FontID].pFontSizeDeps=NULL;
+
+ /* If wanted, some debugging information is put into logfile */
+ sprintf( err_warn_msg_buf, "Pointer vm_base: 0x%lX",
+ (long)pFontBase->pFontArray[FontID].vm_base);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "Pointer vm_start: 0x%lX",
+ (long)pFontBase->pFontArray[FontID].pType1Data->vm_start);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "Pointer CharStringsP: 0x%lX",
+ (long)pFontBase->pFontArray[FontID].pType1Data->CharStringsP);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "Pointer Private: 0x%lX",
+ (long)pFontBase->pFontArray[FontID].pType1Data->Private);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+ sprintf( err_warn_msg_buf, "Pointer fontInfoP: 0x%lX",
+ (long)pFontBase->pFontArray[FontID].pType1Data->fontInfoP);
+ T1_PrintLog( "T1_LoadFont()", err_warn_msg_buf, T1LOG_DEBUG);
+
+ return(0);
+}
+
+
+/* openFontMetricsFile( FontID, open_sloppy): Gets the fontfilename
+ corresponding to FontID, opens the corresponding afm-file and fills
+ the data structures. return-value is the value returned by the
+ T1lib_parseFile() function. If open_sloppy is set, the minimum
+ information needed is read from AFM file. This can be considered a
+ fallback for problematic AFM files. */
+static int openFontMetricsFile( int FontID, int open_sloppy)
+{
+ char *FontFileName;
+ char *AFMFileName;
+ char *afm_name;
+ char *AFMFileNamePath;
+
+ int i, j;
+ FILE *metricsfile;
+
+
+ afm_name=T1_GetAfmFileName(FontID);
+
+ if (afm_name!=NULL) { /* We have name explicitly specified */
+ /* It needs to be freeable */
+ if ((AFMFileName=
+ (char *)malloc( (strlen(afm_name)+1)*sizeof( char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( -6);
+ }
+ strcpy( AFMFileName, afm_name);
+ }
+ else {
+ FontFileName=T1_GetFontFileName( FontID);
+ i=strlen(FontFileName);
+ j=i;
+ AFMFileName=(char *)malloc( i+5);
+ strcpy( AFMFileName, FontFileName);
+ while ( AFMFileName[i] != '.'){
+ if (i==0) break;
+ else i--;
+ }
+ if (i==0){
+ /* We have a filename without extension -> append extension */
+ AFMFileName[j]='.';
+ AFMFileName[j+1]='a';
+ AFMFileName[j+2]='f';
+ AFMFileName[j+3]='m';
+ AFMFileName[j+4]='\0';
+ }
+ else{
+ /* we found a '.' -> replace extension */
+ AFMFileName[i+1]='a';
+ AFMFileName[i+2]='f';
+ AFMFileName[i+3]='m';
+ AFMFileName[i+4]='\0';
+ }
+ }
+
+ /* Get full path of the afm file (The case of a full path name
+ name specification is valid */
+ AFMFileNamePath=intT1_Env_GetCompletePath( AFMFileName, T1_AFM_ptr);
+ free( AFMFileName);
+
+ /* open afm-file: */
+ if (AFMFileNamePath!=NULL){
+ if ((metricsfile=fopen(AFMFileNamePath,"rb"))==NULL){
+ free(AFMFileNamePath);
+ return(-4);
+ }
+ else {
+ free(AFMFileNamePath);
+ }
+ }
+ else{
+ return( -5);
+ }
+
+ /* Call procedure to read afm-file and store the data formatted.
+ Flags used here: P_M All Metrics Information
+ P_P Pair Kerning Information
+ P_C Composite Character Data (since t1lib V.1.2)
+ The P_G flag to get global font information should not be used
+ if not absolutely needed. When parsing an unknown keyword, which
+ may be harmless, the T1lib_parseFile function returns the error code
+ -1 (parseError). On the other hand, all other really relevant
+ data may habe been parsed and stored correctly. In such a case,
+ There's no way to make a serious decision whether an error has
+ occured or not.
+ */
+ if (open_sloppy!=0)
+ i=T1lib_parseFile( (FILE *) metricsfile,
+ (FontInfo **) &(FontBase.pFontArray[FontID].pAFMData),
+ P_M );
+ else
+ i=T1lib_parseFile( (FILE *) metricsfile,
+ (FontInfo **) &(FontBase.pFontArray[FontID].pAFMData),
+ P_G | P_M | P_P | P_C );
+ fclose(metricsfile);
+ return(i);
+}
+
+
+
+/* T1int_CreateNewFontSize( FontID, size): Create a new size "size" of font
+ "FontID" and allocate all data necessary for this. The data
+ structure is connected to the linked list of FontSizeDeps for this
+ font. Returns a pointer to the newly created FontSizeDeps-struct
+ if all went correct and NULL otherwise.
+ Since of version 0.3 a member antialias has been added to the
+ FONTSIZEDEPS structure! This can be:
+
+ 0: bitmaps are stored in this struct
+ 1: non-antialiased bytemaps are stored in this struct
+ 2: low-antialiased bytemaps are stored in this struct
+ 4: high-antialiased bytemaps are stored in this struct
+ */
+FONTSIZEDEPS *T1int_CreateNewFontSize( int FontID, float size, int aa)
+{
+
+ FONTSIZEDEPS *pFontSizeDeps, *pPrev;
+
+
+ /* First, get to the last font size in the linked list for this font.
+ The following routine returns the address of the last struct in the
+ linked list of FONTSIZEDEPS or NULL if none exists. */
+ pFontSizeDeps=T1int_GetLastFontSize( FontID);
+ pPrev=pFontSizeDeps;
+
+
+ if (pFontSizeDeps==NULL){
+ /* Allocate memory for first FontSizeDeps-structure: */
+ if ((pFontBase->pFontArray[FontID].pFontSizeDeps=(FONTSIZEDEPS *)malloc(sizeof(FONTSIZEDEPS)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ pFontSizeDeps=pFontBase->pFontArray[FontID].pFontSizeDeps;
+ }
+ else{
+ /* A valid address of an existing structure was found */
+ if ((pFontSizeDeps->pNextFontSizeDeps=(FONTSIZEDEPS *)malloc(sizeof(FONTSIZEDEPS)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ pFontSizeDeps=pFontSizeDeps->pNextFontSizeDeps;
+ }
+
+ /* The pointer to the previous struct */
+ pFontSizeDeps->pPrevFontSizeDeps=pPrev;
+ /* Put the size into this structure */
+ pFontSizeDeps->size=size;
+ /* Set the antialias mark: */
+ pFontSizeDeps->antialias=aa;
+
+ /* Just the current becomes now the last item in the linked list: */
+ pFontSizeDeps->pNextFontSizeDeps=NULL;
+ /* Setup CharSpaceMatrix for this font: */
+ pFontSizeDeps->pCharSpaceLocal=(struct XYspace *) IDENTITY;
+ /* Apply transformation with font matrix: */
+ pFontSizeDeps->pCharSpaceLocal=(struct XYspace *)
+ Transform(pFontSizeDeps->pCharSpaceLocal,
+ pFontBase->pFontArray[FontID].FontMatrix[0],
+ pFontBase->pFontArray[FontID].FontMatrix[1],
+ pFontBase->pFontArray[FontID].FontMatrix[2],
+ pFontBase->pFontArray[FontID].FontMatrix[3]);
+ /* Apply a further transformation (optionally): */
+ pFontSizeDeps->pCharSpaceLocal=(struct XYspace *)
+ Transform(pFontSizeDeps->pCharSpaceLocal,
+ pFontBase->pFontArray[FontID].FontTransform[0],
+ pFontBase->pFontArray[FontID].FontTransform[1],
+ pFontBase->pFontArray[FontID].FontTransform[2],
+ pFontBase->pFontArray[FontID].FontTransform[3]);
+ /* Apply desired scaling factor, and make it Permanent */
+ pFontSizeDeps->pCharSpaceLocal=(struct XYspace *) Permanent
+ (Scale(pFontSizeDeps->pCharSpaceLocal, size, size));
+
+ /* We should now allocate memory for the glyph area of the font
+ cache: */
+ if ((pFontSizeDeps->pFontCache=(GLYPH *)calloc(256,sizeof(GLYPH)))
+ ==NULL)
+ return(NULL);
+
+ sprintf( err_warn_msg_buf, "New Size %f created for FontID %d (antialias=%d)",
+ pFontSizeDeps->size, FontID, pFontSizeDeps->antialias);
+ T1_PrintLog( "CreateNewFontSize()", err_warn_msg_buf, T1LOG_STATISTIC);
+ /* We are done */
+ return(pFontSizeDeps);
+
+}
+
+
+
+
+/* T1_QueryFontSize( FontID, size, aa): Search if a requested size of font
+ FontID is already existing. If so, it returns a pointer to the
+ respective FontSizeDeps-structure, otherwise NULL is returned: */
+FONTSIZEDEPS *T1int_QueryFontSize( int FontID, float size, int aa)
+{
+
+ FONTSIZEDEPS *link_ptr;
+
+
+ /* There's not yet one size: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps == NULL)
+ return(pFontBase->pFontArray[FontID].pFontSizeDeps);
+
+
+ /* There's already existing one or more size */
+ link_ptr=pFontBase->pFontArray[FontID].pFontSizeDeps;
+
+ while (((link_ptr->size != size)||(link_ptr->antialias != aa))
+ &&(link_ptr->pNextFontSizeDeps != NULL))
+ link_ptr=link_ptr->pNextFontSizeDeps;
+
+ if ((link_ptr->size != size)||(link_ptr->antialias != aa))
+ return( NULL); /* requested size/aa-combination was not found */
+ else
+ return(link_ptr); /* return pointer to requested struct */
+
+}
+
+/* FONTSIZEDEPS *T1int_GetLastFontSize( FontID): Get the address of the
+ last struct in the linked list of FontSizeDeps or NULL if there is
+ no existing size dependent data. */
+FONTSIZEDEPS *T1int_GetLastFontSize( int FontID)
+{
+ FONTSIZEDEPS *link_ptr, *result_ptr;
+
+
+ /* There's not yet one size: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps == NULL)
+ return((FONTSIZEDEPS *) (pFontBase->pFontArray[FontID].pFontSizeDeps));
+
+
+ /* There's already existing one or more size */
+ link_ptr=pFontBase->pFontArray[FontID].pFontSizeDeps;
+
+ while (link_ptr != NULL){
+ result_ptr=link_ptr;
+ link_ptr=link_ptr->pNextFontSizeDeps;
+ }
+
+ return((FONTSIZEDEPS *)(result_ptr));
+}
+
+
+/* A function for comparing METRICS_ENTRY structs */
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2)
+{
+ if (((METRICS_ENTRY *)entry1)->chars <
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(-1);
+ if (((METRICS_ENTRY *)entry1)->chars >
+ ((METRICS_ENTRY *)entry2)->chars)
+ return(1);
+ return(0); /* This should not happen */
+}
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.h
new file mode 100644
index 00000000000..534a18b5b1d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1load.h
@@ -0,0 +1,48 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1load.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-12-02
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1load.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifdef T1LOAD_C
+
+int T1_LoadFont( int FontID);
+static int openFontMetricsFile( int FontID, int open_sloppy);
+FONTSIZEDEPS *T1int_CreateNewFontSize( int FontID, float size, int aa);
+FONTSIZEDEPS *T1int_GetLastFontSize( int FontID);
+FONTSIZEDEPS *T1int_QueryFontSize( int FontID, float size, int aa);
+int fontfcnA( char *env, int *mode, psfont *Font_Ptr);
+static int cmp_METRICS_ENTRY( const void *entry1, const void *entry2);
+extern char *vm_base; /* from fontfcn.c in initfont()! */
+extern char *vm_used; /* from fontfcn.c in fontfcnA()! */
+
+#else
+
+extern int T1_LoadFont( int FontID);
+extern FONTSIZEDEPS *T1int_CreateNewFontSize( int FontID, float size, int aa);
+extern FONTSIZEDEPS *T1int_GetLastFontSize( int FontID);
+extern FONTSIZEDEPS *T1int_QueryFontSize( int FontID, float size, int aa);
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1misc.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1misc.h
new file mode 100644
index 00000000000..e92c3b89dea
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1misc.h
@@ -0,0 +1,220 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1misc.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2004-11-27
+ ----- Description: This file is part of the t1-library. It contains
+ some miscellaneous definitions.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2004.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#include <setjmp.h>
+
+#define LINE_BUF 512
+#define BUF_SIZE 512
+#define NULLPTR (void *) 0
+
+
+/* t1lib-glyphs are padded to this value by default: */
+#define T1GLYPH_PAD 8
+#define T1GLYPH_BIT 0
+#define T1GLYPH_BYTE 0
+#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad))
+
+
+/* For debugging purposes: */
+#define SLEEP for(j=0; j<50; j++){for (k=0; k<65536; k++);}
+
+
+#define KERN_FLAG 0x01
+#define LIGATURE_FLAG 0x02
+
+
+/* common 'yes'/'no' */
+#define T1_YES 0x1
+#define T1_NO 0x0
+
+
+/* The maximum length of a PostScript name of a font: */
+#define MAXPSNAMELEN 256
+#ifndef MAXPATHLEN
+# ifdef PATH_MAX
+# define MAXPATHLEN PATH_MAX
+# else
+# define MAXPATHLEN 4096
+# endif
+#endif
+
+/* The default resolution used by the library */
+#define DEFAULT_RES 72.0
+#define BIGPOINTSPERINCH 72.0
+
+/* Defaults for configuration file searching: */
+/* (Note: The directory where the global config will be located is
+ determined by configure at compile time) */
+#define T1_CONFIGFILENAME ".t1librc"
+#define ENV_CONF_STRING "T1LIB_CONFIG"
+#define GLOBAL_CONFIG_FILE "t1lib.config"
+/* Directory separator is operating system dependent */
+#if defined(VMS)
+# define DIRECTORY_SEP "]"
+# define DIRECTORY_SEP_CHAR ']'
+#elif defined(MSDOS) | defined(_WIN32) | defined(_MSC_VER)
+# define DIRECTORY_SEP "\\"
+# define DIRECTORY_SEP_CHAR '\\'
+#else
+# define DIRECTORY_SEP "/"
+# define DIRECTORY_SEP_CHAR '/'
+#endif
+/* For EMX-, WIN32-, MSDOS-environment, we define the default path separator to
+ be ';' instead of ':' */
+#if defined(MSDOS) | defined(_WIN32) | defined(__EMX__) | defined(_MSC_VER) | defined(VMS)
+#define PATH_SEP ";"
+#define PATH_SEP_CHAR ';'
+#else
+#define PATH_SEP ":"
+#define PATH_SEP_CHAR ':'
+#endif
+/* This non printable character is used internally */
+#define INTERNAL_PATH_SEP "\001"
+#define INTERNAL_PATH_SEP_CHAR '\1'
+
+
+/* Default name for t1lib-logfile: */
+#define ENV_LOG_STRING "T1LIB_LOGMODE"
+#define T1_LOG_FILE "t1lib.log"
+/* logfile levels: */
+#define T1LOG_ERROR 1
+#define T1LOG_WARNING 2
+#define T1LOG_STATISTIC 3
+#define T1LOG_DEBUG 4
+
+
+/* def's for T1_InitLib() */
+#define NO_LOGFILE 0x0
+#define LOGFILE 0x1
+#define IGNORE_FONTDATABASE 0x2 /* Default is to read database */
+#define IGNORE_CONFIGFILE 0x4 /* Default is to read config file */
+#define T1_AA_CACHING 0x8 /* Cache aa-bytes */
+#define T1_NO_AFM 0x10 /* Don't load AFM files or generate AFM data */
+
+
+/* How may ligatures a character may have at maximum: */
+#define MAX_LIGS 20
+
+
+/* The maximum number of gray-levels in antialiasing */
+#define AAMAXPLANES 17
+#define T1_AA_NONE 1
+#define T1_AA_LOW 2
+#define T1_AA_HIGH 4
+
+/* The default limits for no/low/high AA */
+#define T1_AA_SMARTLIMIT1 20.0
+#define T1_AA_SMARTLIMIT2 60.0
+
+/* How much to advance the number of FONTPRIVATE structures when
+ reallocating for new fonts? */
+#define ADVANCE_FONTPRIVATE 10
+
+#define NO_ANTIALIAS 0
+#define ANTIALIAS 1
+
+
+/* #define's for manipulating searchpaths */
+#define T1_PFAB_PATH 0x01
+#define T1_AFM_PATH 0x02
+#define T1_ENC_PATH 0x04
+#define T1_FDB_PATH 0x08
+#define T1_APPEND_PATH 0x00
+#define T1_PREPEND_PATH 0x01
+
+
+/* #define's for character/string properties (not all implemented) */
+#define T1_DEFAULT 0x0000
+#define T1_UNDERLINE 0x0001
+#define T1_OVERLINE 0x0002
+#define T1_OVERSTRIKE 0x0004
+#define T1_DOUBLEOVERSTRIKE 0x0008
+#define T1_RIGHT_TO_LEFT 0x0010
+#define T1_SUBSCRIPT 0x0100
+#define T1_SUPERSCRIPT 0x0200
+#define T1_STROKED 0x1000
+#define T1_KERNING 0x2000
+
+
+/* Error handling: */
+/* These are from scanning a font file */
+#define T1ERR_SCAN_FONT_FORMAT -5
+#define T1ERR_SCAN_FILE_OPEN_ERR -4
+#define T1ERR_SCAN_OUT_OF_MEMORY -3
+#define T1ERR_SCAN_ERROR -2
+#define T1ERR_SCAN_FILE_EOF -1
+/* These are from generating paths */
+#define T1ERR_PATH_ERROR 1
+#define T1ERR_PARSE_ERROR 2
+#define T1ERR_TYPE1_ABORT 3
+/* These are from t1lib */
+#define T1ERR_INVALID_FONTID 10
+#define T1ERR_INVALID_PARAMETER 11
+#define T1ERR_OP_NOT_PERMITTED 12
+#define T1ERR_ALLOC_MEM 13
+#define T1ERR_FILE_OPEN_ERR 14
+#define T1ERR_UNSPECIFIED 15
+#define T1ERR_NO_AFM_DATA 16
+#define T1ERR_X11 17
+#define T1ERR_COMPOSITE_CHAR 18
+#define T1ERR_SCAN_ENCODING 19
+
+
+/* The info_flags meaning */
+#define AFM_SUCCESS (short)0x0001
+#define AFM_SLOPPY_SUCCESS (short)0x0002
+#define AFM_SELFGEN_SUCCESS (short)0x0004
+#define USES_STANDARD_ENCODING (short)0x0008
+#define RASTER_STROKED (short)0x0010
+#define CACHE_STROKED (short)0x0020
+#define FONT_NOCACHING (short)0x0100
+
+#ifndef PI
+#define PI 3.1415927
+#endif
+
+
+/* Flags to control the rasterizer */
+#define T1_IGNORE_FORCEBOLD 0x0001
+#define T1_IGNORE_FAMILYALIGNMENT 0x0002
+#define T1_IGNORE_HINTING 0x0004
+
+#define T1_DEBUG_LINE 0x0100
+#define T1_DEBUG_REGION 0x0200
+#define T1_DEBUG_PATH 0x0400
+#define T1_DEBUG_FONT 0x0800
+#define T1_DEBUG_HINT 0x1000
+
+
+/* */
+#define DO_RASTER 0x1
+#define DO_NOT_RASTER 0x0
+
+
+/* this definition reports a character substitution from fontfcn */
+#define FF_NOTDEF_SUBST -1
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.c
new file mode 100644
index 00000000000..f71018a451f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.c
@@ -0,0 +1,766 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1outline.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for getting glyph outline descriptions of
+ strings and characters.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1OUTLINE_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <setjmp.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1set.h"
+#include "t1load.h"
+#include "t1finfo.h"
+#include "t1misc.h"
+#include "t1base.h"
+#include "t1outline.h"
+
+
+/* As a fall back */
+#ifndef T1_AA_TYPE16
+#define T1_AA_TYPE16 short
+#endif
+#ifndef T1_AA_TYPE32
+#define T1_AA_TYPE32 int
+#endif
+
+
+extern char *t1_get_abort_message( int number);
+extern struct segment *Type1Line(psfont *env, struct XYspace *S,
+ float line_position,
+ float line_thickness,
+ float line_length);
+extern struct segment *t1_Join( struct segment *path1,
+ struct segment *path2);
+extern struct segment *CopyPath( struct segment *p);
+extern void KillPath( struct segment *p);
+
+
+
+
+/* T1_SetChar(...): Generate the bitmap for a character */
+T1_OUTLINE *T1_GetCharOutline( int FontID, char charcode, float size,
+ T1_TMATRIX *transform)
+{
+ int i;
+ int mode;
+ T1_PATHSEGMENT *charpath;
+ struct XYspace *Current_S;
+ unsigned char ucharcode;
+
+
+ FONTSIZEDEPS *font_ptr;
+ FONTPRIVATE *fontarrayP;
+
+ /* We don't implement underlining for characters, but the rasterer
+ implements it. Thus, we use a modflag of constant 0 */
+ int modflag=0;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_GetCharOutline()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ ucharcode=(unsigned char)charcode;
+
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+ /* if necessary load font into memory */
+ if (i==0)
+ if (T1_LoadFont(FontID))
+ return(NULL);
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ fontarrayP=&(pFontBase->pFontArray[FontID]);
+
+ /* font is now loaded into memory =>
+ Check for size: */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if (transform!=NULL) {
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+
+ /* fnt_ptr now points to the correct FontSizeDeps-struct =>
+ lets now raster the character */
+ mode=0;
+ charpath=(T1_PATHSEGMENT *)fontfcnB( FontID, modflag, Current_S,
+ fontarrayP->pFontEnc,
+ ucharcode, &mode,
+ fontarrayP->pType1Data,
+ DO_NOT_RASTER,0.0f);
+ KillSpace (Current_S);
+
+ return((T1_OUTLINE *)charpath);
+}
+
+
+
+/* T1_GetStringOutline(...): Generate the outline for a string of
+ characters */
+T1_OUTLINE *T1_GetStringOutline( int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform)
+{
+ int i;
+ int mode;
+ /* initialize this to NULL just to be on the safe side */
+ T1_PATHSEGMENT *charpath = NULL;
+ struct XYspace *Current_S;
+ int *kern_pairs; /* use for accessing the kern pairs if kerning is
+ requested */
+ int no_chars=0; /* The number of characters in the string */
+ static int lastno_chars=0;
+ long spacewidth; /* This is given to fontfcnb_string() */
+
+
+ FONTSIZEDEPS *font_ptr;
+ FONTPRIVATE *fontarrayP;
+
+ static int *pixel_h_anchor_corr=NULL;
+ static int *flags=NULL;
+
+ unsigned char *ustring;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_GetStringOutline()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ /* force string elements into unsigned */
+ ustring=(unsigned char*)string;
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+ /* if necessary load font into memory */
+ if (i==0)
+ if (T1_LoadFont(FontID))
+ return(NULL);
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return(NULL);
+ }
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ fontarrayP=&(pFontBase->pFontArray[FontID]);
+
+ /* font is now loaded into memory =>
+ Check for size: */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+
+ /* Now comes string specific stuff: Get length of string and create an
+ array of integers where to store the bitmap positioning dimens: */
+ if (len<0){ /* invalid length */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ if (len==0) /* should be computed assuming "normal" 0-terminated string */
+ no_chars=strlen(string);
+ else /* use value given on command line */
+ no_chars=len;
+
+ /* If necessary, allocate memory */
+ if (no_chars>lastno_chars){
+ if (pixel_h_anchor_corr!=NULL){
+ free(pixel_h_anchor_corr);
+ }
+ if (flags!=NULL){
+ free(flags);
+ }
+
+ pixel_h_anchor_corr=(int *)calloc(no_chars, sizeof(int));
+ flags=(int *)calloc(no_chars, sizeof(int));
+ lastno_chars=no_chars;
+ }
+ else{
+ /* Reset flags and position array */
+ for (i=0; i<no_chars; i++){
+ flags[i]=0;
+ pixel_h_anchor_corr[i]=0;
+ }
+ }
+
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if (transform!=NULL){
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+ /* Compute the correct spacewidth value (in charspace units). The
+ value supplied by the user is interpreted as an offset in
+ char space units:
+ */
+ spacewidth=T1_GetCharWidth(FontID,fontarrayP->space_position)+spaceoff;
+
+ mode=0;
+ kern_pairs=(int *)calloc(no_chars, sizeof(int));
+ if ((modflag & T1_KERNING))
+ for (i=0; i<no_chars -1; i++)
+ kern_pairs[i]=T1_GetKerning( FontID, ustring[i], ustring[i+1]);
+ charpath=(T1_PATHSEGMENT *) fontfcnB_string( FontID, modflag, Current_S,
+ fontarrayP->pFontEnc,
+ (unsigned char *)string,
+ no_chars, &mode,
+ fontarrayP->pType1Data,
+ kern_pairs, spacewidth,
+ DO_NOT_RASTER,0.0f);
+ KillSpace (Current_S);
+
+ /* In all cases, free memory for kerning pairs */
+ free(kern_pairs);
+
+ /* fill the string_glyph-structure */
+ if (mode != 0) {
+ sprintf( err_warn_msg_buf, "fontfcnB_string() set mode=%d", mode);
+ T1_PrintLog( "T1_GetStringOutline()", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=mode;
+ /* make sure to get rid of path if it's there */
+ if (charpath){
+ KillRegion (charpath);
+ }
+ return(NULL);
+ }
+ if (charpath == NULL){
+ T1_PrintLog( "T1_GetStringOutline()", "path=NULL returned by fontfcnB_string()", T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+
+ return( (T1_OUTLINE *)charpath);
+}
+
+
+/* T1_GetMoveOutline(...): Generate the "outline" for a movement
+ */
+T1_OUTLINE *T1_GetMoveOutline( int FontID, int deltax, int deltay, int modflag,
+ float size, T1_TMATRIX *transform)
+{
+ int i;
+ FONTSIZEDEPS *font_ptr;
+ struct segment *path, *tmppath;
+ struct XYspace *Current_S;
+ psfont *FontP;
+ float length;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_GetMoveOutline()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+ /* if necessary load font into memory */
+ if (i==0)
+ if (T1_LoadFont(FontID))
+ return(NULL);
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ FontP=pFontBase->pFontArray[i].pType1Data;
+
+ /* font is now loaded into memory =>
+ Check for size: */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if (transform!=NULL){
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+
+ path=(struct segment *)ILoc( Current_S, deltax, deltay);
+
+ /* Take care for underlining and such */
+ length=(float) deltax;
+ if (modflag & T1_UNDERLINE){
+ tmppath=(struct segment *)Type1Line(FontP,Current_S,
+ pFontBase->pFontArray[FontID].UndrLnPos,
+ pFontBase->pFontArray[FontID].UndrLnThick,
+ length);
+ path=(struct segment *)Join(path,tmppath);
+ }
+ if (modflag & T1_OVERLINE){
+ tmppath=(struct segment *)Type1Line(FontP,Current_S,
+ pFontBase->pFontArray[FontID].OvrLnPos,
+ pFontBase->pFontArray[FontID].OvrLnThick,
+ length);
+ path=(struct segment *)Join(path,tmppath);
+ }
+ if (modflag & T1_OVERSTRIKE){
+ tmppath=(struct segment *)Type1Line(FontP,Current_S,
+ pFontBase->pFontArray[FontID].OvrStrkPos,
+ pFontBase->pFontArray[FontID].OvrStrkThick,
+ length);
+ path=(struct segment *)Join(path,tmppath);
+ }
+
+ KillSpace( Current_S);
+
+ return( (T1_OUTLINE *)path);
+
+}
+
+
+/* T1_ConcatOutlines(): Concatenate two outline to one path */
+T1_OUTLINE *T1_ConcatOutlines( T1_OUTLINE *path1, T1_OUTLINE *path2)
+{
+
+ return( (T1_OUTLINE *) t1_Join( (struct segment *) path1,
+ (struct segment *) path2));
+
+}
+
+
+/* T1_ScaleOutline(): Scale an outline */
+T1_OUTLINE *T1_ScaleOutline( T1_OUTLINE *path, float scale)
+{
+ struct segment *ipath;
+
+ /* Step through the path list */
+ ipath=(struct segment *)path;
+
+ do {
+ if (ipath->type==LINETYPE){
+ ipath->dest.x = (fractpel) (ipath->dest.x * scale);
+ ipath->dest.y = (fractpel) (ipath->dest.y * scale);
+ }
+ if (ipath->type==CONICTYPE){
+ ((struct conicsegment *)ipath)->dest.x =
+ (fractpel) ((struct conicsegment *)ipath)->dest.x * scale;
+ ((struct conicsegment *)ipath)->dest.y =
+ (fractpel) ((struct conicsegment *)ipath)->dest.y * scale;
+ ((struct conicsegment *)ipath)->M.x =
+ (fractpel) ((struct conicsegment *)ipath)->M.x * scale;
+ ((struct conicsegment *)ipath)->M.y =
+ (fractpel) ((struct conicsegment *)ipath)->M.y * scale;
+ }
+ if (ipath->type==MOVETYPE){
+ ipath->dest.x = (fractpel) (ipath->dest.x * scale);
+ ipath->dest.y = (fractpel) (ipath->dest.y * scale);
+ }
+ if (ipath->type==BEZIERTYPE){
+ ((struct beziersegment *)ipath)->B.x =
+ (fractpel) (((struct beziersegment *)ipath)->B.x * scale);
+ ((struct beziersegment *)ipath)->B.y =
+ (fractpel) (((struct beziersegment *)ipath)->B.y * scale);
+ ((struct beziersegment *)ipath)->C.x =
+ (fractpel) (((struct beziersegment *)ipath)->C.x * scale);
+ ((struct beziersegment *)ipath)->C.y =
+ (fractpel) (((struct beziersegment *)ipath)->C.y * scale);
+ ((struct beziersegment *)ipath)->dest.x =
+ (fractpel) (((struct beziersegment *)ipath)->dest.x * scale);
+ ((struct beziersegment *)ipath)->dest.y =
+ (fractpel) (((struct beziersegment *)ipath)->dest.y * scale);
+ }
+ if (ipath->type==HINTTYPE){
+ ((struct hintsegment *)ipath)->dest.x =
+ (fractpel) (((struct hintsegment *)ipath)->dest.x * scale);
+ ((struct hintsegment *)ipath)->dest.y =
+ (fractpel) (((struct hintsegment *)ipath)->dest.y * scale);
+ ((struct hintsegment *)ipath)->ref.x =
+ (fractpel) (((struct hintsegment *)ipath)->ref.x * scale);
+ ((struct hintsegment *)ipath)->ref.y =
+ (fractpel) (((struct hintsegment *)ipath)->ref.y * scale);
+ ((struct hintsegment *)ipath)->width.x =
+ (fractpel) (((struct hintsegment *)ipath)->width.x * scale);
+ ((struct hintsegment *)ipath)->width.y =
+ (fractpel) (((struct hintsegment *)ipath)->width.y * scale);
+ }
+ if (ipath->type==TEXTTYPE)
+ ;
+ ipath=ipath->link;
+
+ } while (ipath!=NULL);
+
+ return( path);
+
+}
+
+
+/* dump a description of path elements to stdout */
+void T1_DumpPath( T1_OUTLINE *path)
+{
+
+ struct segment *ipath;
+
+ /* Step through the path list */
+ ipath=(struct segment *)path;
+
+ do {
+ if (ipath->type==LINETYPE){
+ printf("Line-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+ }
+ if (ipath->type==MOVETYPE){
+ printf("Move-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+ }
+ if (ipath->type==BEZIERTYPE){
+ printf("Bezier-Segment: ... (%f,%f) ... (%f,%f) -> (%f,%f)\n",
+ (((struct beziersegment *)ipath)->B.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->B.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->C.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->C.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->dest.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->dest.y)/(double)(0xFFFF));
+ }
+ ipath=ipath->link;
+ } while (ipath!=NULL);
+
+}
+
+
+/* convert a relative path to an absolute path */
+void T1_AbsolutePath( T1_OUTLINE *rpath)
+{
+
+ struct segment *ipath;
+ fractpel xcurr=0, ycurr=0;
+
+ /* Step through the path list */
+ ipath=(struct segment *)rpath;
+
+ do {
+ if (ipath->type==LINETYPE){
+ ipath->dest.x +=xcurr;
+ ipath->dest.y +=ycurr;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Line-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+#endif
+ xcurr=ipath->dest.x;
+ ycurr=ipath->dest.y;
+ }
+ if (ipath->type==MOVETYPE){
+ ipath->dest.x +=xcurr;
+ ipath->dest.y +=ycurr;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Move-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+#endif
+ xcurr=ipath->dest.x;
+ ycurr=ipath->dest.y;
+ }
+ if (ipath->type==BEZIERTYPE){
+ ((struct beziersegment *)ipath)->B.x +=xcurr;
+ ((struct beziersegment *)ipath)->B.y +=ycurr;
+ ((struct beziersegment *)ipath)->C.x +=xcurr;
+ ((struct beziersegment *)ipath)->C.y +=ycurr;
+ ipath->dest.x +=xcurr;
+ ipath->dest.y +=ycurr;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Bezier-Segment: ... (%f,%f) ... (%f,%f) -> (%f,%f)\n",
+ (((struct beziersegment *)ipath)->B.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->B.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->C.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->C.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->dest.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->dest.y)/(double)(0xFFFF));
+#endif
+ xcurr=ipath->dest.x;
+ ycurr=ipath->dest.y;
+ }
+ ipath=ipath->link;
+ } while (ipath!=NULL);
+
+}
+
+
+
+/* convert path into a relative path as needed by the rasterizer */
+void T1_RelativePath( T1_OUTLINE *apath)
+{
+
+ struct segment *ipath;
+ fractpel xcurr=0, ycurr=0;
+
+
+ /* Step through the path list */
+ ipath=(struct segment *)apath;
+
+ do {
+ if (ipath->type==LINETYPE){
+ ipath->dest.x -=xcurr;
+ ipath->dest.y -=ycurr;
+ xcurr +=ipath->dest.x;
+ ycurr +=ipath->dest.y;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Line-Segment: -> (%f,%f), curr=(%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF),
+ xcurr/(double)(0xFFFF), -ycurr/(double)(0xFFFF));
+#endif
+ }
+ if (ipath->type==MOVETYPE){
+ ipath->dest.x -=xcurr;
+ ipath->dest.y -=ycurr;
+ xcurr +=ipath->dest.x;
+ ycurr +=ipath->dest.y;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Move-Segment: -> (%f,%f), curr=(%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF),
+ xcurr/(double)(0xFFFF), -ycurr/(double)(0xFFFF));
+#endif
+ }
+ if (ipath->type==BEZIERTYPE){
+ ipath->dest.x -=xcurr;
+ ipath->dest.y -=ycurr;
+ ((struct beziersegment *)ipath)->C.x -=xcurr;
+ ((struct beziersegment *)ipath)->C.y -=ycurr;
+ ((struct beziersegment *)ipath)->B.x -=xcurr;
+ ((struct beziersegment *)ipath)->B.y -=ycurr;
+ xcurr +=ipath->dest.x;
+ ycurr +=ipath->dest.y;
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Bezier-Segment: ... (%f,%f) ... (%f,%f) -> (%f,%f)\n",
+ (((struct beziersegment *)ipath)->B.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->B.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->C.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->C.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->dest.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->dest.y)/(double)(0xFFFF));
+#endif
+ }
+ ipath=ipath->link;
+ } while (ipath!=NULL);
+
+}
+
+
+/* maniuplate the coordinata points of a path */
+void T1_ManipulatePath( T1_OUTLINE *path,
+ void (*manipulate)(fractpel *x,fractpel *y,int type))
+{
+
+ struct segment *ipath;
+
+
+ /* Step through the path list */
+ ipath=(struct segment *)path;
+
+ do {
+ if (ipath->type==LINETYPE){
+ manipulate( &(ipath->dest.x), &ipath->dest.y, LINETYPE);
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Line-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+#endif
+ }
+ if (ipath->type==MOVETYPE){
+ manipulate( &(ipath->dest.x), &ipath->dest.y, MOVETYPE);
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Move-Segment: -> (%f,%f)\n",
+ (ipath->dest.x)/(double)(0xFFFF),
+ -(ipath->dest.y)/(double)(0xFFFF));
+#endif
+ }
+ if (ipath->type==BEZIERTYPE){
+ manipulate( &((struct beziersegment *)ipath)->B.x,
+ &((struct beziersegment *)ipath)->B.y,
+ BEZIERTYPE);
+ manipulate( &((struct beziersegment *)ipath)->C.x,
+ &((struct beziersegment *)ipath)->C.y,
+ BEZIERTYPE);
+ manipulate( &((struct beziersegment *)ipath)->dest.x,
+ &((struct beziersegment *)ipath)->dest.y,
+ BEZIERTYPE);
+#ifdef PRINT_PATHS_TO_STDOUT
+ printf("Bezier-Segment: ... (%f,%f) ... (%f,%f) -> (%f,%f)\n",
+ (((struct beziersegment *)ipath)->B.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->B.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->C.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->C.y)/(double)(0xFFFF),
+ (((struct beziersegment *)ipath)->dest.x)/(double)(0xFFFF),
+ -(((struct beziersegment *)ipath)->dest.y)/(double)(0xFFFF));
+#endif
+ }
+ ipath=ipath->link;
+ } while (ipath!=NULL);
+
+}
+
+
+
+/* T1_CopyOutline(): Copy an outline physically.
+ Returns a pointer to the path or NULL */
+T1_OUTLINE *T1_CopyOutline( T1_OUTLINE *path)
+{
+
+ return( (T1_OUTLINE *) CopyPath( (struct segment *)path));
+
+}
+
+
+
+/* T1_FreeOutline(): Free an outline. */
+void T1_FreeOutline( T1_OUTLINE *path)
+{
+
+ KillPath( (struct segment *)path);
+ return;
+
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.h
new file mode 100644
index 00000000000..c7d2bd3023f
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1outline.h
@@ -0,0 +1,90 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1outline.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-10-18
+ ----- Description: This file is part of the t1-library. It contains
+ definitions and declarations for t1outline.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1OUTLINE_C
+
+T1_OUTLINE *T1_GetCharOutline( int FontID, char charcode, float size,
+ T1_TMATRIX *transform);
+T1_OUTLINE *T1_GetStringOutline( int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform);
+T1_OUTLINE *T1_ConcatOutlines( T1_OUTLINE *path1, T1_OUTLINE *path2);
+T1_OUTLINE *T1_ScaleOutline( T1_OUTLINE *path, float scale);
+T1_OUTLINE *T1_GetMoveOutline( int FontID, int deltax, int deltay, int modflag,
+ float size, T1_TMATRIX *transform);
+void T1_DumpPath( T1_OUTLINE *path);
+void T1_AbsolutePath( T1_OUTLINE *rpath);
+void T1_RelativePath( T1_OUTLINE *apath);
+void T1_ManipulatePath( T1_OUTLINE *path,
+ void (*manipulate)(fractpel *x,fractpel *y,int type));
+T1_OUTLINE *T1_CopyOutline( T1_OUTLINE *path);
+void T1_FreeOutline( T1_OUTLINE *path);
+
+
+#else
+
+extern T1_OUTLINE *T1_GetCharOutline( int FontID, char charcode, float size,
+ T1_TMATRIX *transform);
+extern T1_OUTLINE *T1_GetStringOutline( int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform);
+extern T1_OUTLINE *T1_ConcatOutlines( T1_OUTLINE *path1,
+ T1_OUTLINE *path2);
+extern T1_OUTLINE *T1_ScaleOutline( T1_OUTLINE *path, float scale);
+extern T1_OUTLINE *T1_GetMoveOutline( int FontID, int deltax, int deltay, int modflag,
+ float size, T1_TMATRIX *transform);
+extern void T1_DumpPath( T1_OUTLINE *path);
+extern void T1_AbsolutePath( T1_OUTLINE *rpath);
+extern void T1_RelativePath( T1_OUTLINE *apath);
+extern void T1_ManipulatePath( T1_OUTLINE *path,
+ void (*manipulate)(fractpel *x,fractpel *y,int type));
+extern T1_OUTLINE *T1_CopyOutline( T1_OUTLINE *path);
+extern void T1_FreeOutline( T1_OUTLINE *path);
+
+#endif
+
+
+extern struct region *fontfcnB(int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char index, int *mode,
+ psfont *Font_Ptr,
+ int do_raster,
+ float strokewidth);
+extern struct region *fontfcnB_string( int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char *string, int no_chars,
+ int *mode, psfont *Font_Ptr,
+ int *kern_pairs, long spacewidth,
+ int do_raster,
+ float strokewidth);
+extern struct region *fontfcnB_ByName( int FontID, int modflag,
+ struct XYspace *S,
+ char *charname,
+ int *mode, psfont *Font_Ptr,
+ int do_raster);
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.c
new file mode 100644
index 00000000000..2e7da1f6d41
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.c
@@ -0,0 +1,2249 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1set.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for setting characters and strings of
+ characters.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1SET_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <setjmp.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1set.h"
+#include "t1load.h"
+#include "t1finfo.h"
+#include "t1misc.h"
+#include "t1base.h"
+
+
+/* As a fall back */
+#ifndef T1_AA_TYPE16
+#define T1_AA_TYPE16 short
+#endif
+#ifndef T1_AA_TYPE32
+#define T1_AA_TYPE32 int
+#endif
+
+
+extern char *t1_get_abort_message( int number);
+extern struct region *Interior(struct segment *path, int fillrule);
+extern unsigned T1_AA_TYPE32 T1aa_bg; /* white value */
+
+
+static void T1_ComputeLineParameters( int FontID, int width,
+ int mode, float size,
+ int *startx, int *endx,
+ int *starty, int *endy);
+
+
+
+static int T1_bit=T1GLYPH_BIT;
+static int T1_byte;
+static int T1_pad;
+static int T1_wordsize;
+
+static int c_shift=8;
+static int s_shift=16;
+static int l_shift=32;
+
+
+
+/* bin_dump(): Print a binary dump of a byte, short and
+ long variable (used for debug purposes only): */
+static void bin_dump_c(unsigned char value, char space_flag)
+{
+ int i,j;
+
+ for (i=0;i<=7;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ if (space_flag)
+ printf(" ");
+
+}
+
+static void bin_dump_s(unsigned short value, char space_flag)
+{
+ int i,j;
+
+ if (T1_CheckEndian()){
+ for (i=8;i<=15;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ for (i=0;i<=7;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ }
+ else{
+ for (i=0;i<=15;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ }
+ if (space_flag)
+ printf(" ");
+
+}
+
+static void bin_dump_l(unsigned long value, char space_flag)
+{
+ int i,j;
+
+ if (T1_CheckEndian()){
+ for (i=24;i<=31;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ for (i=16;i<=23;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ for (i=8;i<=15;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ for (i=0;i<=7;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ }
+ else{
+ for (i=0;i<=31;i++){
+ if ((j=((value)>>i)&0x01))
+ printf("X");
+ else
+ printf(".");
+ }
+ }
+ if (space_flag)
+ printf(" ");
+
+}
+
+
+
+/* T1_SetChar(...): Generate the bitmap for a character */
+GLYPH *T1_SetChar( int FontID, char charcode, float size,
+ T1_TMATRIX *transform)
+{
+ int i;
+ int mode;
+ struct region *area;
+ struct XYspace *Current_S;
+ int cache_flag = 1;
+ int rot_flag = 0;
+ unsigned char ucharcode;
+ float strokewidth = 0.0f;
+ volatile int strokeextraflag = 0;
+
+
+ FONTSIZEDEPS *font_ptr;
+ FONTPRIVATE *fontarrayP;
+
+ volatile int memsize=0;
+ LONG h,w;
+ LONG paddedW;
+
+ /* We don't implement underlining for characters, but the rasterer
+ implements it. Thus, we use a modflag of constant 0 */
+ int modflag=0;
+
+ static GLYPH glyph={NULL,{0,0,0,0,0,0},NULL,1};
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_SetChar()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ ucharcode=(unsigned char)charcode;
+
+
+ /* Reset character glyph, if necessary */
+ if (glyph.bits!=NULL){
+ free(glyph.bits);
+ glyph.bits=NULL;
+ }
+ glyph.metrics.leftSideBearing=0;
+ glyph.metrics.rightSideBearing=0;
+ glyph.metrics.advanceX=0;
+ glyph.metrics.advanceY=0;
+ glyph.metrics.ascent=0;
+ glyph.metrics.descent=0;
+ glyph.pFontCacheInfo=NULL;
+ glyph.bpp=1;
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+ /* if necessary load font into memory */
+ if (i==0)
+ if (T1_LoadFont(FontID))
+ return(NULL);
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Assign padding value */
+ T1_pad=pFontBase->bitmap_pad;
+ if (pFontBase->endian)
+ T1_byte=1;
+ else
+ T1_byte=0;
+ T1_wordsize=T1_pad;
+
+ fontarrayP=&(pFontBase->pFontArray[FontID]);
+
+ /* Check if rotation is requested */
+ if (transform!=NULL){
+ /* there's rotation requested => do not cache the resulting bitmap */
+ rot_flag=1;
+ cache_flag=0;
+ }
+ else {
+ rot_flag=0;
+ cache_flag=1;
+ }
+
+ /* handle stroking stuff */
+ if ( pFontBase->pFontArray[FontID].info_flags & RASTER_STROKED) {
+ /* Stroking requested. If caching is not desired, clear cache_flag.
+ Otherwise, leave it unaffected. */
+ if ( (pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) == 0 ) {
+ /* filled glyphs are cached, indicate that character is to be rendered
+ on the fly and not to be cached */
+ strokeextraflag = 1;
+ cache_flag = 0;
+ }
+ strokewidth = pFontBase->pFontArray[FontID].StrokeWidth;
+ }
+ else {
+ /* filling requested. */
+ if ( (pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) != 0 ) {
+ /* stroked glyphs are cached, indicate that character is to be rendered
+ on the fly and not to be cached */
+ strokeextraflag = 1;
+ cache_flag = 0;
+ }
+ strokewidth = 0.0f;
+ }
+
+ /* font is now loaded into memory =>
+ Check for size: */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+ else {/* size is already existent in cache */
+ /* If no rotation and no noncached stroking , try to get character from cache */
+ if ( (rot_flag==0) && (strokeextraflag==0) ) {
+ /* we don't use the .bits entry to check because in newer releases
+ also white glyphs (bits=NULL) are allowed. Rather, we check
+ whether bpp > 0! */
+ if (font_ptr->pFontCache[ucharcode].bpp > 0){
+ /* Character is already in Chache -> create a copy of cache
+ and return a pointer to the result: */
+ memcpy( &glyph, &(font_ptr->pFontCache[ucharcode]), sizeof(GLYPH));
+ paddedW = PAD((glyph.metrics.rightSideBearing-glyph.metrics.leftSideBearing),
+ T1_pad);
+ if (font_ptr->pFontCache[ucharcode].bits!=NULL) {
+ memsize = (glyph.metrics.ascent-glyph.metrics.descent)*paddedW / 8;
+ glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (glyph.bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ memcpy( glyph.bits, font_ptr->pFontCache[ucharcode].bits, memsize);
+ }
+ return(&(glyph));
+ }
+ }
+ }
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if (rot_flag){
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+ /* fnt_ptr now points to the correct FontSizeDeps-struct =>
+ lets now raster the character */
+ mode=0;
+ area=fontfcnB( FontID, modflag, Current_S,
+ fontarrayP->pFontEnc,
+ ucharcode, &mode,
+ fontarrayP->pType1Data,
+ DO_RASTER,
+ strokewidth);
+ KillSpace (Current_S);
+
+ /* fill the glyph-structure */
+ if (mode > 0) {
+ sprintf( err_warn_msg_buf, "fontfcnB() set mode=%d", mode);
+ T1_PrintLog( "T1_SetChar()", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+ if (area == NULL){
+ T1_PrintLog( "T1_SetChar()", "area=NULL returned by fontfcnB()", T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+ h = area->ymax - area->ymin;
+ w = area->xmax - area->xmin;
+
+ if (mode == FF_NOTDEF_SUBST) {
+ sprintf( err_warn_msg_buf,
+ "\".notdef\" substituted for character %d from font %d",
+ ucharcode, FontID);
+ T1_PrintLog( "T1_SetChar()", err_warn_msg_buf, T1LOG_WARNING);
+ mode=0;
+ }
+
+ paddedW = PAD(w, T1_pad);
+
+ if (h > 0 && w > 0) {
+ memsize = h * paddedW / 8 + 1;
+ /* This is for the users copy of the character, for security-reasons
+ the original pointer to the cache area is not used. The entry glyph.bits
+ is free'ed every time this function is called: */
+ glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (glyph.bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to get rid of 'area' before leaving! */
+ KillRegion (area);
+ return(NULL);
+ }
+ }
+ else {
+ h = w = 0;
+ area->xmin = area->xmax = 0;
+ area->ymin = area->ymax = 0;
+ }
+
+ /* Assign metrics */
+ glyph.metrics.leftSideBearing = area->xmin;
+ glyph.metrics.advanceX = NEARESTPEL(area->ending.x - area->origin.x);
+ glyph.metrics.advanceY = - NEARESTPEL(area->ending.y - area->origin.y);
+ glyph.metrics.rightSideBearing = area->xmax;
+ glyph.metrics.descent = - area->ymax;
+ glyph.metrics.ascent = - area->ymin;
+
+
+ if (h > 0 && w > 0) {
+ (void) memset(glyph.bits, 0, memsize);
+ fill(glyph.bits, h, paddedW, area, T1_byte, T1_bit, T1_wordsize );
+ }
+
+ /* make sure to get rid of 'area' before leaving! */
+ KillRegion (area);
+
+ /* Cache glyph if requested, also if it contains only white space */
+ if (cache_flag){
+ /* Copy glyph to cache but be careful not to modify the pixmap
+ entry */
+ font_ptr->pFontCache[ucharcode].metrics.leftSideBearing=glyph.metrics.leftSideBearing;
+ font_ptr->pFontCache[ucharcode].metrics.rightSideBearing=glyph.metrics.rightSideBearing;
+ font_ptr->pFontCache[ucharcode].metrics.advanceX=glyph.metrics.advanceX;
+ font_ptr->pFontCache[ucharcode].metrics.advanceY=glyph.metrics.advanceY;
+ font_ptr->pFontCache[ucharcode].metrics.ascent=glyph.metrics.ascent;
+ font_ptr->pFontCache[ucharcode].metrics.descent=glyph.metrics.descent;
+ font_ptr->pFontCache[ucharcode].pFontCacheInfo=glyph.pFontCacheInfo;
+ font_ptr->pFontCache[ucharcode].bpp=glyph.bpp;
+ if (glyph.bits==NULL) {
+ font_ptr->pFontCache[ucharcode].bits=NULL;
+ }
+ else {
+ font_ptr->pFontCache[ucharcode].bits = (char *)malloc(memsize*sizeof( char));
+ if (font_ptr->pFontCache[ucharcode].bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ /* ... and copy bitmap to cache area: */
+ memcpy( font_ptr->pFontCache[ucharcode].bits, glyph.bits, memsize);
+ }
+
+ }
+
+
+ return(&glyph);
+}
+
+
+
+/* T1_SetString(...): Generate the bitmap for a string of characters */
+GLYPH *T1_SetString( int FontID, char *string, volatile int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform)
+{
+ volatile int i, j=0, k;
+ int mode;
+ /* initialize this to NULL just to be on the safe side */
+ struct region *area = NULL;
+ struct XYspace *Current_S, *S;
+ int cache_flag=1;
+ volatile int rot_flag=0;
+ int *kern_pairs; /* use for accessing the kern pairs if kerning is
+ requested */
+ int no_chars=0; /* The number of characters in the string */
+ static int lastno_chars=0;
+ float factor;
+ long spacewidth; /* This is given to fontfcnb_string() */
+ float strokewidth = 0.0f;
+ volatile int strokeextraflag = 0;
+
+
+ FONTSIZEDEPS *font_ptr;
+ FONTPRIVATE *fontarrayP;
+
+
+ volatile int memsize=0;
+
+ long h,w;
+ long paddedW, char_paddedW;
+ int h_anchor, v_anchor;
+ static int *pixel_h_anchor_corr=NULL;
+ static int *flags=NULL;
+ int lsb_min, rsb_max;
+ long overallwidth=0;
+ long overallascent=0;
+ long overalldescent=0;
+
+ int underline_startx, underline_starty, underline_endx, underline_endy;
+ int overline_startx, overline_starty, overline_endx, overline_endy;
+ int overstrike_startx, overstrike_starty, overstrike_endx, overstrike_endy;
+ int start, middle;
+ int afm_ind;
+
+ char startmask, endmask;
+ static unsigned char *r2lstring;
+ static int r2l_len=0;
+
+ static GLYPH string_glyph={NULL,{0,0,0,0,0,0},NULL,1};
+ GLYPH *currchar;
+
+
+
+ /* The following are for bitmap blitting */
+ long BitShift;
+ long ByteOffset;
+ /* pad=8 */
+ unsigned T1_AA_TYPE16 BitBuf_c;
+ unsigned char *p_c;
+ unsigned char *Target_c;
+ /* pad=16 */
+ unsigned T1_AA_TYPE32 BitBuf_s;
+ unsigned T1_AA_TYPE16 *p_s;
+ unsigned T1_AA_TYPE16 *Target_s;
+#ifdef T1_AA_TYPE64
+ /* pad=32 */
+ unsigned T1_AA_TYPE64 BitBuf_l;
+ unsigned T1_AA_TYPE32 *p_l;
+ unsigned T1_AA_TYPE32 *Target_l;
+#endif
+ unsigned char *ustring;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ /* force string elements into unsigned */
+ ustring=(unsigned char*)string;
+
+
+ /* Check for valid string */
+ if (string==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Reorganize if required */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ if (len)
+ i=len;
+ else
+ i=j=strlen( string);
+ if (i+1>r2l_len){
+ if (r2lstring!=NULL)
+ free( r2lstring);
+ r2lstring=(unsigned char *)malloc( (i+1)*sizeof(char));
+ r2l_len=i+1;
+ }
+ j--;
+ while ( i--) {
+ r2lstring[j-i]=ustring[i];
+ }
+ ustring=r2lstring;
+ len=j+1;
+ }
+
+
+ /* Reset string glyph, if necessary */
+ if (string_glyph.bits!=NULL){
+ free(string_glyph.bits);
+ string_glyph.bits=NULL;
+ }
+ string_glyph.metrics.leftSideBearing=0;
+ string_glyph.metrics.rightSideBearing=0;
+ string_glyph.metrics.advanceX=0;
+ string_glyph.metrics.advanceY=0;
+ string_glyph.metrics.ascent=0;
+ string_glyph.metrics.descent=0;
+ string_glyph.pFontCacheInfo=NULL;
+ string_glyph.bpp=1;
+
+ /* We don't want to cache the resulting bitmap: */
+ cache_flag=0;
+
+ /* First, check for a correct ID */
+ i=T1_CheckForFontID(FontID);
+ if (i==-1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ /* if necessary load font into memory */
+ if (i==0)
+ if (T1_LoadFont(FontID))
+ return(NULL);
+
+ /* If no AFM info is present, we return an error */
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ T1_errno=T1ERR_NO_AFM_DATA;
+ return(NULL);
+ }
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Assign padding value */
+ T1_pad=pFontBase->bitmap_pad;
+ if (pFontBase->endian)
+ T1_byte=1;
+ else
+ T1_byte=0;
+ T1_wordsize=T1_pad;
+
+ fontarrayP=&(pFontBase->pFontArray[FontID]);
+
+ /* Check if rotation is requested */
+ if (transform!=NULL){
+ /* there's rotation requested => do not cache the resulting bitmap */
+ rot_flag=1;
+ cache_flag=0;
+ }
+
+ /* handle stroking stuff */
+ if ( pFontBase->pFontArray[FontID].info_flags & RASTER_STROKED) {
+ /* Stroking requested. If caching is not desired, clear cache_flag.
+ Otherwise, leave it unaffected. */
+ if ( (pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) == 0 ) {
+ /* filled glyphs are cached, indicate that character is to be rendered
+ on the fly and not to be cached */
+ strokeextraflag = 1;
+ cache_flag = 0;
+ }
+ strokewidth = pFontBase->pFontArray[FontID].StrokeWidth;
+ }
+ else {
+ /* filling requested. */
+ if ( (pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) != 0 ) {
+ /* stroked glyphs are cached, indicate that character is to be rendered
+ on the fly and not to be cached */
+ strokeextraflag = 1;
+ cache_flag = 0;
+ }
+ strokewidth = 0.0f;
+ }
+
+ /* font is now loaded into memory =>
+ Check for size: */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+
+ /* Now comes string specific stuff: Get length of string and create an
+ array of integers where to store the bitmap positioning dimens: */
+ if (len<0){ /* invalid length */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ if (len==0) /* should be computed assuming "normal" 0-terminated string,
+ or R2L-part has already been computed! */
+ no_chars=strlen(string);
+ else /* use value given on command line */
+ no_chars=len;
+
+ /* If necessary, allocate memory */
+ if (no_chars>lastno_chars){
+ if (pixel_h_anchor_corr!=NULL){
+ free(pixel_h_anchor_corr);
+ }
+ if (flags!=NULL){
+ free(flags);
+ }
+ pixel_h_anchor_corr=(int *)calloc(no_chars, sizeof(int));
+ flags=(int *)calloc(no_chars, sizeof(int));
+ lastno_chars=no_chars;
+ }
+ else{
+ /* Reset flags and position array */
+ for (i=0; i<no_chars; i++){
+ flags[i]=0;
+ pixel_h_anchor_corr[i]=0;
+ }
+ }
+
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if (rot_flag){
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S=(struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+ /* Compute the correct spacewidth value (in charspace units). The
+ value supplied by the user is interpreted as an offset in
+ char space units:
+ */
+ spacewidth=T1_GetCharWidth(FontID,fontarrayP->space_position)+spaceoff;
+
+
+ /* The following if (rot_flag==0){ ... } contains the whole code
+ to execute when the string is oriented horizontal. Then, there's
+ the possibility of concatenating most probably existent bitmaps
+ from the Cache, which should be much faster than every time raster
+ all the characters.
+ */
+ /* First, ensure that all needed characters are in the Cache; if not,
+ generate them */
+ if ( (rot_flag==0) && (strokeextraflag==0) ){
+ overallwidth=0;
+ for (i=0; i<no_chars; i++) {
+ currchar= &(font_ptr->pFontCache[ustring[i]]);
+ if (currchar->bpp<1) {
+ flags[i]=0;
+ mode=0;
+ /* Don't try to generate space-character: */
+ if (ustring[i]!=fontarrayP->space_position){
+ /* Note: Never underline etc. cached chars --> modflag=0 */
+ area=fontfcnB( FontID, 0, Current_S,
+ fontarrayP->pFontEnc,
+ ustring[i], &mode,
+ fontarrayP->pType1Data,
+ DO_RASTER,
+ strokewidth);
+
+ /* fill the glyph-structure */
+ if (mode > 0) {
+ sprintf( err_warn_msg_buf, "fontfcnB() set mode=%d", mode);
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=mode;
+ /* Make sure to free the region if it's non-NULL */
+ if (area){
+ KillRegion (area);
+ }
+ return(NULL);
+ }
+ if (area == NULL){
+ T1_PrintLog( "T1_SetString()", "area=NULL returned by fontfcnB()", T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+
+ if (mode == FF_NOTDEF_SUBST) {
+ sprintf( err_warn_msg_buf,
+ "\".notdef\" substituted in string[%d] (=character %d) from font %d",
+ i, ustring[i], FontID);
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf, T1LOG_WARNING);
+ mode=0;
+ flags[i]=1; /* indicates that .notdef has been substituted */
+ }
+
+ h = area->ymax - area->ymin;
+ w = area->xmax - area->xmin;
+
+ if (h > 0 && w > 0) { /* bitmap contains pixels */
+ paddedW = PAD(w, T1_pad);
+ memsize = h * paddedW / 8 + 1;
+ currchar->bits = (char *)malloc(memsize*sizeof( char));
+ if (currchar->bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* Make sure to free up the region if it's non-NULL */
+ if (area){
+ KillRegion (area);
+ }
+ return(NULL);
+ }
+ (void) memset(currchar->bits, 0, memsize);
+ fill(currchar->bits, h, paddedW, area,
+ T1_byte, T1_bit, T1_wordsize );
+ }
+ /* area valid -> set metrics in cache for that character */
+ currchar->metrics.leftSideBearing = area->xmin;
+ currchar->metrics.advanceX = NEARESTPEL(area->ending.x - area->origin.x);
+ currchar->metrics.advanceY = - NEARESTPEL(area->ending.y - area->origin.y);
+ currchar->metrics.rightSideBearing = area->xmax;
+ currchar->metrics.descent = - area->ymax;
+ currchar->metrics.ascent = - area->ymin;
+ currchar->bpp=1;
+
+ /* By this point, it's clear that the 'area' struct exists,
+ and that we no longer need it, so free it up. */
+ KillRegion (area);
+ }
+ } /* end of if ( ... ), needed characters are now in cache! */
+ } /* end of for (i<no_chars) loop */
+ /* we still have to delete the Space */
+ KillSpace (Current_S);
+
+ /* We've to compute the scale factor: */
+ factor=size*DeviceSpecifics.scale_x/1000;
+
+ /* h_anchor is the horizontal position in the resulting bitmap;
+ it is incremented on the fly and of course initially 0! */
+ h_anchor=0;
+ /* These are the initial values for left and right sidebearing */
+ rsb_max=-30000;
+ lsb_min= 30000;
+ overallascent=-30000;
+ overalldescent=30000;
+ for (i=0;i<no_chars;i++){
+ /* first get index into AFM-tables */
+ afm_ind=pFontBase->pFontArray[FontID].pEncMap[(int) ustring[i]];
+ /* Advance to next character in high resolution */
+ if (ustring[i]==fontarrayP->space_position)
+ h_anchor +=(int)spacewidth;
+ /* check for a substituted char or notdef and get missing escapement */
+ else if (afm_ind==0) {
+ /* Setup apropriate charspace matrix */
+ S=(struct XYspace *)IDENTITY;
+ /* Make this permanent so that scaling it in fontfcnB_ByName will
+ make a duplicate of it, and this duplicate can thus be safely
+ destroyed. Fixes the somewhat smaller memory leak */
+ S=(struct XYspace *)Permanent
+ (Transform(S, pFontBase->pFontArray[FontID].FontTransform[0],
+ pFontBase->pFontArray[FontID].FontTransform[1],
+ pFontBase->pFontArray[FontID].FontTransform[2],
+ pFontBase->pFontArray[FontID].FontTransform[3]));
+ /* Get metrics values */
+ area=fontfcnB_ByName( FontID, 0, S, ".notdef", &mode,
+ pFontBase->pFontArray[FontID].pType1Data, DO_RASTER);
+ if (area==NULL || mode!=0){
+ sprintf( err_warn_msg_buf,
+ "Could not get charspace representation of \".notdef\", Font %d, mode=%d!",
+ FontID, mode);
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ T1_errno=mode;
+ return( NULL);
+ }
+ /* value to add to hanchor */
+ h_anchor +=NEARESTPEL(area->ending.x);
+ /* make sure to free S */
+ if (S) {
+ KillSpace (S);
+ }
+ /* make sure to free area */
+ if (area) {
+ KillRegion (area);
+ }
+ }
+ else{
+ currchar=&(font_ptr->pFontCache[ustring[i]]);
+ pixel_h_anchor_corr[i]=((int)floor(h_anchor*factor+0.5));
+ /* Store maximum rsb ...*/
+ if ( pixel_h_anchor_corr[i]+currchar->metrics.rightSideBearing > rsb_max){
+ rsb_max=pixel_h_anchor_corr[i]+currchar->metrics.rightSideBearing;
+ }
+ /* ... and minimum lsb */
+ if ( pixel_h_anchor_corr[i]+currchar->metrics.leftSideBearing < lsb_min){
+ lsb_min=pixel_h_anchor_corr[i]+currchar->metrics.leftSideBearing;
+ }
+ /* Advance by current chars width */
+ /* h_anchor +=T1_GetCharWidth( FontID, ustring[i]); */
+ if (afm_ind>0) { /* we have a standard character */
+ h_anchor +=(fontarrayP->pAFMData->cmi[afm_ind-1].wx) * fontarrayP->extend;
+ }
+ else { /* afm_ind must be negative so that we have a composite char */
+ h_anchor +=(fontarrayP->pAFMData->ccd[-(afm_ind+1)].wx) * fontarrayP->extend;
+ }
+ /* If kerning, insert kerning amount */
+ if ((i<no_chars -1) && (modflag & T1_KERNING))
+ h_anchor +=T1_GetKerning( FontID, ustring[i], ustring[i+1]);
+
+ /* We still have to care for vertical metrics: */
+ if (currchar->metrics.ascent>overallascent)
+ overallascent=currchar->metrics.ascent;
+ if (currchar->metrics.descent<overalldescent)
+ overalldescent=currchar->metrics.descent;
+ }
+ }
+ string_glyph.metrics.advanceX=(int)floor(h_anchor*factor+0.5);
+
+ /* We have to check for underlining and such things. They may affect the
+ bounding box of the glyph */
+ if (modflag & T1_UNDERLINE){
+ T1_ComputeLineParameters( FontID, T1_UNDERLINE,
+ string_glyph.metrics.advanceX,
+ size,
+ &underline_startx, &underline_endx,
+ &underline_starty, &underline_endy);
+ /* Check whether rsb is affected ...*/
+ if ( underline_endx > rsb_max){
+ rsb_max=underline_endx;
+ }
+ /* ... and for lsb */
+ if ( underline_startx < lsb_min){
+ lsb_min=underline_startx;
+ }
+
+ /* Vertical metrics may also be affected. */
+ if (underline_starty > overallascent)
+ overallascent=underline_starty;
+ if (underline_endy < overalldescent)
+ overalldescent=underline_endy;
+ }
+ if (modflag & T1_OVERLINE){
+ T1_ComputeLineParameters( FontID, T1_OVERLINE,
+ string_glyph.metrics.advanceX,
+ size,
+ &overline_startx, &overline_endx,
+ &overline_starty, &overline_endy);
+ /* Check whether rsb is affected ...*/
+ if ( overline_endx > rsb_max){
+ rsb_max=overline_endx;
+ }
+ /* ... and for lsb */
+ if ( overline_startx < lsb_min){
+ lsb_min=overline_startx;
+ }
+
+ /* Vertical metrics may also be affected. */
+ if (overline_starty > overallascent)
+ overallascent=overline_starty;
+ if (overline_endy < overalldescent)
+ overalldescent=overline_endy;
+ }
+ if (modflag & T1_OVERSTRIKE){
+ T1_ComputeLineParameters( FontID, T1_OVERSTRIKE,
+ string_glyph.metrics.advanceX,
+ size,
+ &overstrike_startx, &overstrike_endx,
+ &overstrike_starty, &overstrike_endy);
+ /* Check whether rsb is affected ...*/
+ if ( overstrike_endx > rsb_max){
+ rsb_max=overstrike_endx;
+ }
+ /* ... and for lsb */
+ if ( overstrike_startx < lsb_min){
+ lsb_min=overstrike_startx;
+ }
+
+ /* Vertical metrics may also be affected. */
+ if (overstrike_starty > overallascent)
+ overallascent=overstrike_starty;
+ if (overstrike_endy < overalldescent)
+ overalldescent=overstrike_endy;
+ }
+
+
+
+ /* Set the string-glyphs' metrics: */
+ /* Bearings: */
+ string_glyph.metrics.rightSideBearing=rsb_max;
+ string_glyph.metrics.leftSideBearing=lsb_min;
+ /* ascent and descent: */
+ string_glyph.metrics.ascent=overallascent;
+ string_glyph.metrics.descent=overalldescent;
+
+
+
+ /* Now, allocate memory for the resulting bitmap and set it to 0: */
+ h=overallascent - overalldescent;
+ w=string_glyph.metrics.rightSideBearing-string_glyph.metrics.leftSideBearing;
+
+ paddedW = PAD( w, T1_pad);
+ if ( h > 0 && w > 0){
+ memsize = h * paddedW / 8;
+ /* We alloc some amount more in order to avoid alignment check in
+ bit-blitting loop */
+ memsize += T1_pad/8;
+ string_glyph.bits = (char *)malloc( memsize);
+ if (string_glyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ }
+ else {
+ /* We have only characters without pixels in the string ->
+ we allow this and only set the advance width in the glyph.
+ The bits pointer will be NULL. We reset rsb and lsb */
+ string_glyph.metrics.rightSideBearing=0;
+ string_glyph.metrics.leftSideBearing=0;
+ string_glyph.metrics.ascent=0;
+ string_glyph.metrics.descent=0;
+ }
+
+ if (string_glyph.bits != NULL) {
+
+ memset(string_glyph.bits, 0, memsize);
+
+ /* Now comes the loop for bitmap blitting: */
+ for (i=0;i<no_chars;i++){
+ /* Get pointer to character number i of string: */
+ currchar=&(font_ptr->pFontCache[ustring[i]]);
+
+ /* First, we have to correct the positioning values to refer to
+ the bitmap BBox */
+ pixel_h_anchor_corr[i] -= lsb_min;
+ pixel_h_anchor_corr[i] += currchar->metrics.leftSideBearing;
+
+ /* Compute vertical anchor for current char-bitmap: */
+ v_anchor=overallascent - currchar->metrics.ascent;
+ char_paddedW=PAD( currchar->metrics.rightSideBearing
+ - currchar->metrics.leftSideBearing , T1_pad);
+ /* We have to check for Big Endian. In that case, we have to
+ act on byte-level */
+ if (T1_byte){
+ BitShift = pixel_h_anchor_corr[i] % 8;
+ ByteOffset = pixel_h_anchor_corr[i] / 8;
+ }
+ else {
+ BitShift = pixel_h_anchor_corr[i] % T1_pad;
+ ByteOffset = pixel_h_anchor_corr[i] / T1_pad;
+ if (T1_pad==32)
+ ByteOffset *=4;
+ else if (T1_pad==16)
+ ByteOffset *=2;
+ }
+#ifdef T1_AA_TYPE64
+ /* We compile this part only if long is 64 bits to be conform to ANSI C */
+ if (T1_pad==32 && T1_byte==0){
+ /* The following loop steps through the lines of the character bitmap: */
+ for (j=0;j<currchar->metrics.ascent-currchar->metrics.descent;j++){
+ Target_l= (unsigned T1_AA_TYPE32 *)(string_glyph.bits +((v_anchor+j)*paddedW/8)
+ +ByteOffset);
+ /* The following loop copies the scanline of a character bitmap: */
+ if (currchar->bits != NULL) {
+ p_l = (unsigned T1_AA_TYPE32 *)(currchar->bits+(char_paddedW/8*j));
+ if (BitShift == 0) {
+ for (k=char_paddedW >> 5; k; k--)
+ *Target_l++ |= *p_l++;
+ } else {
+ for (k=0; k < char_paddedW / 32 ; k++){
+ BitBuf_l= ((T1_AA_TYPE64)(*p_l++)) << BitShift;
+ *Target_l++ |= BitBuf_l;
+ *Target_l |= BitBuf_l>>l_shift;
+ } /* End of for ( .. ) stepping through columns */
+ }
+ } /* End of if(currchar->bits != NULL) */
+ } /* End of for( .. ) steppin' through lines of char bitmap */
+ }/* end if (T1_pad==32) */
+ else
+#endif
+ if (T1_pad==16 && T1_byte==0){
+ /* The following loop steps through the lines of the character bitmap: */
+ for (j=0;j<currchar->metrics.ascent-currchar->metrics.descent;j++){
+ Target_s= (unsigned T1_AA_TYPE16 *)(string_glyph.bits +((v_anchor+j)*paddedW/8)
+ +ByteOffset);
+ /* The following loop copies the scanline of a character bitmap: */
+ if (currchar->bits != NULL) {
+ p_s = (unsigned T1_AA_TYPE16 *)(currchar->bits+(char_paddedW/8*j));
+ if (BitShift == 0) {
+ for (k=char_paddedW >> 4; k; k--)
+ *Target_s++ |= *p_s++;
+ }
+ else{
+ for (k=char_paddedW >> 4; k; k--){
+ BitBuf_s= ((T1_AA_TYPE32)(*p_s++))<<BitShift;
+ *Target_s++ |= BitBuf_s;
+ *Target_s |= BitBuf_s>>s_shift;
+ } /* End of for ( .. ) stepping through columns */
+ }
+ } /* End of if(currchar->bits != NULL) */
+ } /* End of for( .. ) steppin' through lines of char bitmap */
+ }/* end if (T1_pad==16 */
+ else{ /* T1_pad = 8 or Big Endian machine */
+ /* The following loop steps through the lines of the character bitmap: */
+ for (j=0;j<currchar->metrics.ascent-currchar->metrics.descent;j++){
+ Target_c= (unsigned char *)(string_glyph.bits +((v_anchor+j)*paddedW/8)
+ +ByteOffset);
+ /* The following loop copies the scanline of a character bitmap: */
+ if (currchar->bits != NULL) {
+ p_c = (unsigned char *)(currchar->bits+(char_paddedW/8*j));
+ if (BitShift == 0){
+ for (k=char_paddedW >> 3; k; k--)
+ *Target_c++ |= *p_c++;
+ }
+ else{
+ for (k=char_paddedW >> 3; k; k--){
+ BitBuf_c = ((T1_AA_TYPE16)(*p_c++)) << BitShift;
+ *Target_c++ |= BitBuf_c;
+ *Target_c |= BitBuf_c>>c_shift;
+ } /* End of for ( .. ) stepping through columns */
+ }
+ } /* End of if(currchar->bits != NULL) */
+ } /* End of for( .. ) steppin' through lines of char bitmap */
+ } /* end if (T1_pad==8) and/or BigEndian */
+ }
+ } /* if (string_glyph.bits != NULL) */
+
+
+ /* We now put the underlining rule on the glyph */
+ if (modflag & T1_UNDERLINE){
+ start=-string_glyph.metrics.leftSideBearing;
+ for (i=string_glyph.metrics.ascent-underline_starty;
+ i<string_glyph.metrics.ascent-underline_endy; i++){
+ start =-string_glyph.metrics.leftSideBearing +
+ (int) floor((double)(string_glyph.metrics.ascent-i)
+ *fontarrayP->slant+0.5);
+ middle = ((start+string_glyph.metrics.advanceX) / 8) - (start / 8);
+ startmask = 0xFF << (start % 8);
+ endmask = (char) ~(0xFF << ((start+string_glyph.metrics.advanceX) % 8));
+ Target_c= (unsigned char *)(string_glyph.bits +(i*paddedW/8)
+ + (start / 8));
+ if (!Target_c) {
+ continue;
+ }
+ j=middle;
+ if (j == 0)
+ *Target_c++ |= startmask & endmask;
+ else {
+ *Target_c++ |= startmask;
+ while (--j > 0)
+ *Target_c++ = (unsigned char) 0xFF;
+ if ((endmask))
+ *Target_c |= endmask;
+ }
+ }
+ }
+ /* Put an overstrike rule on the glyph */
+ if (modflag & T1_OVERSTRIKE){
+ start=-string_glyph.metrics.leftSideBearing;
+ for (i=string_glyph.metrics.ascent-overstrike_starty;
+ i<string_glyph.metrics.ascent-overstrike_endy; i++){
+ start =-string_glyph.metrics.leftSideBearing +
+ (int) floor((double)(string_glyph.metrics.ascent-i)
+ *fontarrayP->slant+0.5);
+ middle = ((start+string_glyph.metrics.advanceX) / 8) - (start / 8);
+ startmask = 0xFF << (start % 8);
+ endmask = (char) ~(0xFF << ((start+string_glyph.metrics.advanceX) % 8));
+ Target_c= (unsigned char *)(string_glyph.bits +(i*paddedW/8)
+ + (start / 8));
+ if (!Target_c) {
+ continue;
+ }
+ j=middle;
+ if (j == 0)
+ *Target_c++ |= startmask & endmask;
+ else {
+ *Target_c++ |= startmask;
+ while (--j > 0)
+ *Target_c++ = (unsigned char) 0xFF;
+ if ((endmask))
+ *Target_c |= endmask;
+ }
+ }
+ }
+ /* Put an overline rule */
+ if (modflag & T1_OVERLINE){
+ start=-string_glyph.metrics.leftSideBearing;
+ for (i=string_glyph.metrics.ascent-overline_starty;
+ i<string_glyph.metrics.ascent-overline_endy; i++){
+ start =-string_glyph.metrics.leftSideBearing +
+ (int) floor((double)(string_glyph.metrics.ascent-i)
+ *fontarrayP->slant+0.5);
+ middle = ((start+string_glyph.metrics.advanceX) / 8) - (start / 8);
+ startmask = 0xFF << (start % 8);
+ endmask = (char) ~(0xFF << ((start+string_glyph.metrics.advanceX) % 8));
+ Target_c= (unsigned char *)(string_glyph.bits +(i*paddedW/8)
+ + (start / 8));
+ if (!Target_c) {
+ continue;
+ }
+ j=middle;
+ if (j == 0)
+ *Target_c++ |= startmask & endmask;
+ else {
+ *Target_c++ |= startmask;
+ while (--j > 0)
+ *Target_c++ = (unsigned char) 0xFF;
+ if ((endmask))
+ *Target_c |= endmask;
+ }
+ }
+ }
+
+ /* Check for writing direction and re-compute dimensions appropriately: */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ string_glyph.metrics.advanceX *= -1;
+ string_glyph.metrics.leftSideBearing += string_glyph.metrics.advanceX;
+ string_glyph.metrics.rightSideBearing += string_glyph.metrics.advanceX;
+ }
+
+ return(&string_glyph);
+ } /* end of "if (rot_flag==0.0)" */
+
+
+ /* fnt_ptr now points to the correct FontSizeDeps-struct =>
+ lets now raster the character */
+ mode=0;
+ kern_pairs=(int *)calloc(no_chars, sizeof(int));
+ if ((modflag & T1_KERNING))
+ for (i=0; i<no_chars -1; i++)
+ kern_pairs[i]=T1_GetKerning( FontID, ustring[i], ustring[i+1]);
+ area=fontfcnB_string( FontID, modflag, Current_S,
+ fontarrayP->pFontEnc,
+ ustring, no_chars, &mode,
+ fontarrayP->pType1Data,
+ kern_pairs, spacewidth,
+ DO_RASTER,
+ strokewidth);
+ KillSpace (Current_S);
+
+ /* In all cases, free memory for kerning pairs */
+ free(kern_pairs);
+
+ /* fill the string_glyph-structure */
+ if (mode > 0) {
+ sprintf( err_warn_msg_buf, "fontfcnB() set mode=%d", mode);
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=mode;
+ /* make sure to get rid of area if it's there */
+ if (area){
+ KillRegion (area);
+ }
+ return(NULL);
+ }
+ if (area == NULL){
+ T1_PrintLog( "T1_SetString()", "area=NULL returned by fontfcnB()", T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+
+ if (mode == FF_NOTDEF_SUBST) {
+ sprintf( err_warn_msg_buf,
+ "\".notdef\" substituted somewhere in string from font %d",
+ FontID);
+ T1_PrintLog( "T1_SetString()", err_warn_msg_buf, T1LOG_WARNING);
+ mode=0;
+ }
+
+ h = area->ymax - area->ymin;
+ w = area->xmax - area->xmin;
+ paddedW = PAD(w, T1_pad);
+ if (h > 0 && w > 0) {
+ memsize = h * paddedW / 8 + 1;
+ /* This is for the users copy of the character, for security-reasons
+ the original pointer to the cache area is not used. The entry string_glyph.bits
+ is free'ed every time this function is called: */
+ string_glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (string_glyph.bits == NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to get rid of area if it's there */
+ if (area){
+ KillRegion (area);
+ }
+ /* it's safe to free this, since this is a rotated glyph and
+ therefore it's a copy of the original one */
+ return(NULL);
+ }
+ }
+ else {
+ h = w = 0;
+ area->xmin = area->xmax = 0;
+ area->ymin = area->ymax = 0;
+ }
+
+ string_glyph.metrics.leftSideBearing=area->xmin;
+ string_glyph.metrics.advanceX=NEARESTPEL(area->ending.x - area->origin.x);
+ string_glyph.metrics.advanceY=-NEARESTPEL(area->ending.y - area->origin.y);
+ string_glyph.metrics.rightSideBearing=area->xmax;
+ string_glyph.metrics.descent=-area->ymax;
+ string_glyph.metrics.ascent=-area->ymin;
+
+ if (h > 0 && w > 0) {
+ (void) memset(string_glyph.bits, 0, memsize);
+ fill(string_glyph.bits, h, paddedW, area, T1_byte, T1_bit, T1_wordsize );
+ }
+ else { /* We have no black pixels */
+ string_glyph.metrics.leftSideBearing=0;
+ string_glyph.metrics.advanceX=NEARESTPEL(area->ending.x - area->origin.x);
+ string_glyph.metrics.advanceY=-NEARESTPEL(area->ending.y - area->origin.y);
+ string_glyph.metrics.rightSideBearing=0;
+ string_glyph.metrics.descent=0;
+ string_glyph.metrics.ascent=0;
+ }
+
+
+ /* make sure to get rid of area if it's there */
+ if (area){
+ KillRegion (area);
+ }
+ /* Check for writing direction and re-compute dimensions appropriately: */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ string_glyph.metrics.advanceX *= -1;
+ string_glyph.metrics.advanceY *= -1;
+ string_glyph.metrics.leftSideBearing += string_glyph.metrics.advanceX;
+ string_glyph.metrics.rightSideBearing += string_glyph.metrics.advanceX;
+ string_glyph.metrics.descent += string_glyph.metrics.advanceY;
+ string_glyph.metrics.ascent += string_glyph.metrics.advanceY;
+ }
+ return(&string_glyph);
+}
+
+
+
+void fill(dest, h, w, area, byte, bit, wordsize)
+ register char *dest; /* destination bitmap */
+ int h,w; /* dimensions of 'dest', w padded */
+ register struct region *area; /* region to write to 'dest' */
+ int byte,bit; /* flags; LSBFirst or MSBFirst */
+ int wordsize; /* number of bits per word for LSB/MSB purposes */
+{
+ register struct edgelist *edge; /* for looping through edges */
+ register char *p; /* current scan line in 'dest' */
+ register int y; /* for looping through scans */
+ register int wbytes = w / 8; /* number of bytes in width */
+ register pel *leftP,*rightP; /* pointers to X values, left and right */
+ int xmin = area->xmin; /* upper left X */
+ int ymin = area->ymin; /* upper left Y */
+
+ for (edge = area->anchor; VALIDEDGE(edge); edge = edge->link->link) {
+
+ p = dest + (edge->ymin - ymin) * wbytes;
+ leftP = edge->xvalues;
+ rightP = edge->link->xvalues;
+
+ for (y = edge->ymin; y < edge->ymax; y++) {
+ fillrun(p, *leftP++ - xmin , *rightP++ - xmin, bit);
+ p += wbytes;
+ }
+ }
+ /*
+ Now, as an afterthought, we'll go reorganize if odd byte order requires
+ it:
+ */
+ /* We do not reorganize since t1lib internally always uses LSBFirst */
+ /*
+ if ( 0 && wordsize != 8) {
+ register int i;
+ printf("Reorganizing data ..\n");
+
+ switch (wordsize) {
+ case 16:
+ {
+ register unsigned short data,*p;
+ p = (unsigned short *) dest;
+ for (i = h * w /16; --i >= 0;) {
+ data = *p;
+ *p++ = (data << 8) + (data >> 8);
+ }
+ break;
+ }
+ case 64:
+ case 32:
+ {
+ register ULONG data,*p;
+ p = (ULONG *) dest;
+ for (i = h * w / 32; --i >= 0;) {
+ data = *p;
+ *p++ = (data << 24) + (data >> 24)
+ + (0xFF00 & (data >> 8))
+ + (0xFF0000 & (data << 8));
+ }
+ if (wordsize == 64) {
+ p = (ULONG *) dest;
+ for (i = h * w / 64; --i >= 0;) {
+ data = *p++;
+ p[-1] = p[0];
+ *p++ = data;
+ }
+ }
+ break;
+ }
+ default:
+ abort("xiFill: unknown format");
+ }
+ }
+ */
+}
+
+#define ALLONES 0xFF
+
+void fillrun(register char *p, pel x0, pel x1, int bit)
+{
+ register int startmask,endmask; /* bits to set in first and last char*/
+ register int middle; /* number of chars between start and end + 1 */
+
+ if (x1 <= x0)
+ return;
+ middle = x1/8 - x0/8;
+ p += x0/8;
+ x0 &= 7; x1 &= 7;
+ if (bit == LSBFirst) {
+ startmask = ALLONES << x0;
+ endmask = ~(ALLONES << x1);
+ }
+ else {
+ startmask = ALLONES >> x0;
+ endmask = ~(ALLONES >> x1);
+ }
+ if (middle == 0)
+ *p++ |= startmask & endmask;
+ else {
+ *p++ |= startmask;
+ while (--middle > 0){
+ *p++ = (unsigned char)ALLONES;
+ }
+ if (endmask)
+ *p |= endmask;
+ }
+}
+
+
+/* outline */
+#undef CHECK_OUTLINEFILL
+#ifdef CHECK_OUTLINEFILL
+void fill(dest, h, w, area, byte, bit, wordsize)
+ register char *dest; /* destination bitmap */
+ int h,w; /* dimensions of 'dest', w padded */
+ register struct region *area; /* region to write to 'dest' */
+ int byte,bit; /* flags; LSBFirst or MSBFirst */
+ int wordsize; /* number of bits per word for LSB/MSB purposes */
+{
+ register struct edgelist *edge; /* for looping through edges */
+ register char *p; /* current scan line in 'dest' */
+ register int y; /* for looping through scans */
+ register int wbytes = w / 8; /* number of bytes in width */
+ register pel *leftP,*rightP; /* pointers to X values, left and right */
+ int xmin = area->xmin; /* upper left X */
+ int ymin = area->ymin; /* upper left Y */
+
+ for (edge = area->anchor; VALIDEDGE(edge); edge = edge->link->link) {
+
+ p = dest + (edge->ymin - ymin) * wbytes;
+ leftP = edge->xvalues;
+ rightP = edge->link->xvalues;
+
+ printf("leftP=%d, RightP=%d,\n", *leftP, *rightP);
+
+
+ for (y = edge->ymin; y < edge->ymax; y++) {
+ printf("leftP=%d, RightP=%d,y=%d\n", *leftP, *rightP, y);
+
+ fillrun(p, *leftP++ - xmin, *rightP++ - xmin, bit);
+ p += wbytes;
+ }
+ }
+}
+#endif
+
+
+/* T1_CopyGlyph(): Make a copy of an existent glyph-structure to save it
+ for later usage by the user. */
+GLYPH *T1_CopyGlyph( GLYPH *glyph)
+{
+ GLYPH *dest;
+ long size;
+
+
+ if (glyph==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Assign padding value */
+ T1_pad=pFontBase->bitmap_pad;
+ /* Allocate memory for struct: */
+ if ((dest=(GLYPH *)malloc(sizeof(GLYPH)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ /* Copy the structure members: */
+ *dest=*glyph;
+ /* Allocate memory for bitmap, initialize pointer to it and copy bitmap: */
+ size=PAD((dest->metrics.rightSideBearing-dest->metrics.leftSideBearing)*
+ glyph->bpp, T1_pad) / 8;
+ size=size*(dest->metrics.ascent-dest->metrics.descent);
+ /* We must check whether there's actually a bits-pointer different from
+ NULL. If not omit the following step: */
+ if (glyph->bits!=NULL){
+ if ((dest->bits=(char *)malloc(size*sizeof(char)))==NULL){
+ free(dest);
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ memcpy(dest->bits,glyph->bits,size);
+ }
+ return(dest);
+}
+
+/* T1_DumpGlyph(): Dump a glyph-representation to stdout: */
+void T1_DumpGlyph( GLYPH *glyph)
+{
+ int i,j,h,w; /* i=line-index, j=column-index */
+ long paddedW;
+
+
+ printf("Dataformat: T1_bit=%d, T1_byte=%d, T1_wordsize=%d, T1_pad=%d\n",
+ T1_bit, T1_byte, T1_pad, T1_pad);
+
+ if (glyph==NULL){
+ return;
+ }
+
+ h=glyph->metrics.ascent-glyph->metrics.descent;
+ w=glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing;
+
+ paddedW=PAD(w,T1_pad);
+
+ printf("GlyphInfo: h=%d, w=%d, paddedW=%ld\n", h, w, paddedW);
+
+ for ( i=0; i<h; i++){
+ if (T1_pad==8)
+ for (j=0; j<paddedW/T1_pad; j++)
+ bin_dump_c(glyph->bits[i*paddedW/T1_pad+j], 1);
+ else if (T1_pad==16)
+ for (j=0; j<paddedW/T1_pad; j++){
+ bin_dump_s(((unsigned short *)glyph->bits)[i*paddedW/T1_pad+j], 1);
+ }
+ else
+ for (j=0; j<paddedW/T1_pad; j++){
+ bin_dump_l(((unsigned long *)glyph->bits)[i*paddedW/T1_pad+j], 1);
+ }
+ printf("\n");
+ }
+}
+
+
+
+/* This function will essentially return the bounding box of the
+ line-rule */
+static void T1_ComputeLineParameters( int FontID, int mode,
+ int width, float size,
+ int *startx, int *endx,
+ int *starty, int *endy)
+{
+ float position=0.0, thickness=0.0;
+ int startx1, startx2, endx1, endx2;
+
+ if (mode & T1_UNDERLINE){
+ position=pFontBase->pFontArray[FontID].UndrLnPos
+ * DeviceSpecifics.scale_y;
+ thickness=pFontBase->pFontArray[FontID].UndrLnThick
+ * DeviceSpecifics.scale_y;
+ }
+ else if (mode & T1_OVERLINE){
+ position=pFontBase->pFontArray[FontID].OvrLnPos
+ * DeviceSpecifics.scale_y;
+ thickness=pFontBase->pFontArray[FontID].OvrLnThick
+ * DeviceSpecifics.scale_y;
+ }
+ else if (mode & T1_OVERSTRIKE){
+ position=pFontBase->pFontArray[FontID].OvrStrkPos
+ * DeviceSpecifics.scale_y;
+ thickness=pFontBase->pFontArray[FontID].OvrStrkThick
+ * DeviceSpecifics.scale_y;
+ }
+
+ *starty=(int) floor((position+0.5*(thickness-DeviceSpecifics.y_resolution/1000.0))
+ *size/1000.0 +0.5 );
+ startx1=(int) floor(*starty*pFontBase->pFontArray[FontID].slant+0.5);
+ *endy =*starty - (int) floor(thickness/1000.0*size+0.5);
+ startx2=(int) floor(*endy*pFontBase->pFontArray[FontID].slant+0.5);
+ *startx=startx1 < startx2 ? startx1 : startx2;
+ endx1 = width +
+ (int) floor(*starty*pFontBase->pFontArray[FontID].slant+0.5);
+ endx2 = width +
+ (int) floor(*endy*pFontBase->pFontArray[FontID].slant+0.5);
+ *endx=endx1 < endx2 ? endx2 : endx1;
+
+ /* We take care that at least one pixel is drawn */
+ if (*starty==*endy)
+ *endy -=1;
+
+ return;
+
+}
+
+
+
+/* The following function concatenates two glyphs. Optional offsets
+ x_off, y_off are respected. By the function.
+ If either glyph is NULL or the glyphs have distinct depth, NULL is
+ returned. */
+GLYPH *T1_ConcatGlyphs( GLYPH *glyph_1, GLYPH *glyph_2,
+ int x_off, int y_off, int modflag)
+{
+
+ int lsb1, lsb2, rsb1, rsb2;
+ int advanceX1, advanceX2, advanceY1, advanceY2;
+ int ascent1, ascent2, descent1, descent2;
+ int rsb, lsb, ascent, descent, advanceX, advanceY;
+ int vanchor, w, h, wscanline, wscanline1, wscanline2, bpp;
+ int memsize, BitShift;
+ GLYPH *glyph1, *glyph2;
+ unsigned T1_AA_TYPE16 BitBuf_c;
+ unsigned T1_AA_TYPE32 BitBuf_s;
+ unsigned long BitBuf_l; /* This is only actually used if sizeof long = 8 */
+ int i, j, k;
+ int ByteOffset;
+
+ unsigned char *Target_c, *p_c;
+ unsigned T1_AA_TYPE16 *Target_s, *p_s;
+ unsigned T1_AA_TYPE32 *Target_l, *p_l;
+
+ static GLYPH glyph={NULL,{0,0,0,0,0,0},NULL,1};
+
+
+ /* We handle the Right-To-Left concatenation the simple way:
+ 1) Change the order of the two glyphs
+ 2) Invert the sign of the y-part of the offset
+ 3) Recalculate the dimensions of the resulating glyph.
+ */
+ /* Check for writing direction and reorganize appropriately: */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ glyph1=glyph_2;
+ glyph2=glyph_1;
+ y_off=-y_off;
+ }
+ else {
+ glyph1=glyph_1;
+ glyph2=glyph_2;
+ }
+
+ if (glyph1==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( NULL);
+ }
+ if (glyph2==NULL){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( NULL);
+ }
+ if (glyph1->bpp != glyph2->bpp){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( NULL);
+ }
+
+ /* We have two glyph different from NULL */
+ /* Reset glyph, if necessary */
+ if (glyph.bits!=NULL){
+ free(glyph.bits);
+ glyph.bits=NULL;
+ }
+ glyph.metrics.leftSideBearing=0;
+ glyph.metrics.rightSideBearing=0;
+ glyph.metrics.advanceX=0;
+ glyph.metrics.advanceY=0;
+ glyph.metrics.ascent=0;
+ glyph.metrics.descent=0;
+ glyph.pFontCacheInfo=NULL;
+ glyph.bpp=1;
+
+ /* Assign dimens */
+ lsb1=glyph1->metrics.leftSideBearing;
+ rsb1=glyph1->metrics.rightSideBearing;
+ ascent1=glyph1->metrics.ascent;
+ descent1=glyph1->metrics.descent;
+ advanceX1=glyph1->metrics.advanceX + x_off;
+ advanceY1=glyph1->metrics.advanceY + y_off;
+
+ lsb2=glyph2->metrics.leftSideBearing;
+ rsb2=glyph2->metrics.rightSideBearing;
+ ascent2=glyph2->metrics.ascent;
+ descent2=glyph2->metrics.descent;
+ advanceX2=glyph2->metrics.advanceX;
+ advanceY2=glyph2->metrics.advanceY;
+
+ lsb=lsb1 < lsb2+advanceX1 ? lsb1 : lsb2+advanceX1;
+ rsb=rsb1 > rsb2+advanceX1 ? rsb1 : rsb2+advanceX1;
+ ascent=ascent1 > ascent2+advanceY1 ? ascent1 : ascent2+advanceY1;
+ descent=descent1 < descent2+advanceY1 ? descent1 : descent2+advanceY1;
+ advanceX=advanceX1+advanceX2;
+ advanceY=advanceY1+advanceY2;
+
+ bpp=glyph1->bpp;
+ w=rsb-lsb;
+ h=ascent-descent;
+ wscanline=PAD( w*bpp, T1_pad) / 8;
+ wscanline1=PAD( (rsb1-lsb1)*bpp, T1_pad) / 8;
+ wscanline2=PAD( (rsb2-lsb2)*bpp, T1_pad) / 8;
+ memsize=wscanline*h;
+ if ((glyph.bits=(char *)calloc( memsize + 1, sizeof(unsigned char)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+
+ if (bpp==1){
+ if (T1_pad==32 && T1_byte==0 && sizeof(long)==8){
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ BitShift=(lsb1-lsb) % 32;
+ ByteOffset=(lsb1-lsb)/32*4;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_l= (unsigned T1_AA_TYPE32 *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_l = (unsigned T1_AA_TYPE32 *)(glyph1->bits+(wscanline1*i));
+ if (BitShift == 0){
+ for (k=wscanline1/4; k; k--)
+ *Target_l++ |= *p_l++;
+ }
+ else{
+ for (k=wscanline1/4; k; k--){
+ BitBuf_l = ((long)*p_l++) << BitShift;
+ *Target_l++ |= BitBuf_l;
+ *Target_l |= BitBuf_l>>l_shift;
+ }
+ }
+ }
+ /* The following loop steps through the lines of the second glyph: */
+ vanchor=ascent-(ascent2+advanceY1);
+ BitShift=(lsb2+advanceX1-lsb) % 32;
+ ByteOffset=(lsb2+advanceX1-lsb)/32*4;
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_l= (unsigned T1_AA_TYPE32 *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_l = (unsigned T1_AA_TYPE32 *)(glyph2->bits+(wscanline2*i));
+ if (BitShift == 0){
+ for (k=wscanline2/4; k; k--)
+ *Target_l++ |= *p_l++;
+ }
+ else{
+ for (k=wscanline2/4; k; k--){
+ BitBuf_l = ((long)*p_l++) << BitShift;
+ *Target_l++ |= BitBuf_l;
+ *Target_l |= BitBuf_l>>l_shift;
+ }
+ }
+ }
+ }
+ else if(T1_pad==16 && T1_byte==0){
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ BitShift=(lsb1-lsb) % 16;
+ ByteOffset=(lsb1-lsb)/16*2;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_s= (unsigned T1_AA_TYPE16 *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_s = (unsigned T1_AA_TYPE16 *)(glyph1->bits+(wscanline1*i));
+ if (BitShift == 0){
+ for (k=wscanline1/2; k; k--)
+ *Target_s++ |= *p_s++;
+ }
+ else{
+ for (k=wscanline1/2; k; k--){
+ BitBuf_s = ((T1_AA_TYPE32)*p_s++) << BitShift;
+ *Target_s++ |= BitBuf_s;
+ *Target_s |= BitBuf_s>>s_shift;
+ }
+ }
+ }
+ /* The following loop steps through the lines of the second glyph: */
+ vanchor=ascent-(ascent2+advanceY1);
+ BitShift=(lsb2+advanceX1-lsb) % 16;
+ ByteOffset=(lsb2+advanceX1-lsb)/16*2;
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_s= (unsigned T1_AA_TYPE16 *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_s = (unsigned T1_AA_TYPE16 *)(glyph2->bits+(wscanline2*i));
+ if (BitShift == 0){
+ for (k=wscanline2/2; k; k--)
+ *Target_s++ |= *p_s++;
+ }
+ else{
+ for (k=wscanline2/2; k; k--){
+ BitBuf_s = ((T1_AA_TYPE32)*p_s++) << BitShift;
+ *Target_s++ |= BitBuf_s;
+ *Target_s |= BitBuf_s>>s_shift;
+ }
+ }
+ }
+ }
+ else{ /* T1_pad==8 or Big Endian machine */
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ BitShift=(lsb1-lsb) % 8;
+ ByteOffset=(lsb1-lsb) / 8;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_c= (unsigned char *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_c = (unsigned char *)(glyph1->bits+(wscanline1*i));
+ if (BitShift == 0){
+ for (k=wscanline1; k; k--)
+ *Target_c++ |= *p_c++;
+ }
+ else{
+ for (k=wscanline1; k; k--){
+ BitBuf_c = ((T1_AA_TYPE16)*p_c++) << BitShift;
+ *Target_c++ |= BitBuf_c;
+ *Target_c |= BitBuf_c>>c_shift;
+ }
+ }
+ }
+ /* The following loop steps through the lines of the second glyph: */
+ vanchor=ascent-(ascent2+advanceY1);
+ BitShift=(lsb2+advanceX1-lsb) % 8;
+ ByteOffset=(lsb2+advanceX1-lsb) / 8;
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_c= (unsigned char *)(glyph.bits +((vanchor+i)*wscanline)
+ +ByteOffset);
+ p_c = (unsigned char *)(glyph2->bits+(wscanline2*i));
+ if (BitShift == 0){
+ for (k=wscanline2; k; k--)
+ *Target_c++ |= *p_c++;
+ }
+ else{
+ for (k=wscanline2; k; k--){
+ BitBuf_c = ((T1_AA_TYPE16)*p_c++) << BitShift;
+ *Target_c++ |= BitBuf_c;
+ *Target_c |= BitBuf_c>>c_shift;
+ }
+ }
+ }
+ }
+ } /* end of if (bpp==1) ... */
+ else if (bpp==8){
+ /* Set background */
+ for ( i=0; i<memsize; i++)
+ ((char *)glyph.bits)[i]=(char) T1aa_bg;
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_c= (unsigned char *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb1-lsb));
+ p_c = (unsigned char *)(glyph1->bits+(wscanline1*i));
+ memcpy( Target_c, p_c, (rsb1-lsb1));
+ }
+ /* The following loop steps through the lines of the second glyph.
+ Note that we only set the pixel if it is not background! */
+ vanchor=ascent-(ascent2+advanceY1);
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_c= (unsigned char *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb2+advanceX1-lsb));
+ p_c = (unsigned char *)(glyph2->bits+(wscanline2*i));
+ for (j=0; j<(rsb2-lsb2); j++)
+ if (p_c[j] != (unsigned char) T1aa_bg)
+ Target_c[j]=p_c[j];
+ }
+ } /* end of if (bpp==8) ... */
+ else if (bpp==16){
+ /* Set background */
+ for ( i=0; i<memsize/2; i++)
+ ((T1_AA_TYPE16 *)glyph.bits)[i]=(T1_AA_TYPE16) T1aa_bg;
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_s= (unsigned T1_AA_TYPE16 *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb1-lsb)*2);
+ p_s = (unsigned T1_AA_TYPE16 *)(glyph1->bits+(wscanline1*i));
+ memcpy( Target_s, p_s, (rsb1-lsb1)*2);
+ }
+ /* The following loop steps through the lines of the second glyph.
+ Note that we only set the pixel if it is not background! */
+ vanchor=ascent-(ascent2+advanceY1);
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_s= (unsigned T1_AA_TYPE16 *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb2+advanceX1-lsb)*2);
+ p_s = (unsigned T1_AA_TYPE16 *)(glyph2->bits+(wscanline2*i));
+ for (j=0; j<(rsb2-lsb2); j++)
+ if (p_s[j] != (unsigned T1_AA_TYPE16) T1aa_bg)
+ Target_s[j]=p_s[j];
+ }
+ } /* end of if (bpp==16) ... */
+ else if (bpp==32){
+ /* Set background */
+ for ( i=0; i<memsize/4; i++)
+ ((T1_AA_TYPE32 *)glyph.bits)[i]=(T1_AA_TYPE32) T1aa_bg;
+ /* The following loop steps through the lines of the first glyph: */
+ vanchor=ascent-ascent1;
+ for ( i=0; i<ascent1-descent1; i++){
+ Target_l= (unsigned T1_AA_TYPE32 *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb1-lsb)*4);
+ p_l = (unsigned T1_AA_TYPE32 *)(glyph1->bits+(wscanline1*i));
+ memcpy( Target_l, p_l, (rsb1-lsb1)*4);
+ }
+ /* The following loop steps through the lines of the second glyph.
+ Note that we only set the pixel if it is not background! */
+ vanchor=ascent-(ascent2+advanceY1);
+ for ( i=0; i<ascent2-descent2; i++){
+ Target_l= (unsigned T1_AA_TYPE32 *)(glyph.bits +((vanchor+i)*wscanline)
+ +(lsb2+advanceX1-lsb)*4);
+ p_l = (unsigned T1_AA_TYPE32 *)(glyph2->bits+(wscanline2*i));
+ for (j=0; j<(rsb2-lsb2); j++)
+ if (p_l[j] != (unsigned T1_AA_TYPE32) T1aa_bg)
+ Target_l[j]=p_l[j];
+ }
+ } /* end of if (bpp==32) ... */
+
+
+ /* Check for writing direction and re-compute dimens appropriately: */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ advanceX=-advanceX1-advanceX2;
+ advanceY=-advanceY1-advanceY2;
+ lsb=lsb1 < lsb2+advanceX1 ? advanceX+lsb1 : advanceX+lsb2+advanceX1;
+ rsb=rsb1 > rsb2+advanceX1 ? advanceX+rsb1 : advanceX+rsb2+advanceX1;
+ ascent=ascent1 > ascent2+advanceY1 ? ascent1 : ascent2+advanceY1;
+ descent=descent1 < descent2+advanceY1 ? descent1 : descent2+advanceY1;
+ ascent += advanceY;
+ descent += advanceY;
+ }
+
+ glyph.metrics.leftSideBearing=lsb;
+ glyph.metrics.rightSideBearing=rsb;
+ glyph.metrics.advanceX=advanceX;
+ glyph.metrics.advanceY=advanceY;
+ glyph.metrics.ascent=ascent;
+ glyph.metrics.descent=descent;
+ glyph.bpp=bpp;
+
+ /*
+ printf("lsb=%d, rsb=%d, adX=%d, adY=%d asc=%d, desc=%d\n",
+ glyph.metrics.leftSideBearing,
+ glyph.metrics.rightSideBearing,
+ glyph.metrics.advanceX,
+ glyph.metrics.advanceY,
+ glyph.metrics.ascent,
+ glyph.metrics.descent );
+ */
+
+ return( &glyph);
+
+}
+
+
+
+/* T1_FillOutline(): Create a filled glyph from an outline description */
+GLYPH *T1_FillOutline( T1_OUTLINE *path, int modflag)
+{
+ struct region *area=NULL;
+
+ static GLYPH glyph={NULL,{0,0,0,0,0,0},NULL,1};
+ volatile int memsize=0;
+ int i;
+ LONG h,w;
+ LONG paddedW;
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_FillOutline()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ /* Reset character glyph, if necessary */
+ if (glyph.bits!=NULL){
+ free(glyph.bits);
+ glyph.bits=NULL;
+ }
+ glyph.metrics.leftSideBearing=0;
+ glyph.metrics.rightSideBearing=0;
+ glyph.metrics.advanceX=0;
+ glyph.metrics.advanceY=0;
+ glyph.metrics.ascent=0;
+ glyph.metrics.descent=0;
+ glyph.pFontCacheInfo=NULL;
+ glyph.bpp=1;
+
+
+ /* Assign padding value */
+ T1_pad=pFontBase->bitmap_pad;
+ if (pFontBase->endian)
+ T1_byte=1;
+ else
+ T1_byte=0;
+ T1_wordsize=T1_pad;
+
+ /* Create a region from outline */
+ area=(struct region *)Interior( (struct segment *)path,
+ WINDINGRULE+CONTINUITY);
+
+ /* fill the glyph-structure */
+ if (area == NULL){
+ T1_PrintLog( "T1_FillOutline()", "area=NULL returned by Interior()", T1LOG_WARNING);
+ T1_errno=1000;
+ return(NULL);
+ }
+ h = area->ymax - area->ymin;
+ w = area->xmax - area->xmin;
+
+
+ paddedW = PAD(w, T1_pad);
+ if ( (area->xmin > area->xmax) || (area->ymin > area->ymax) ){
+ /* There was a character like .notdef or space, that didn't
+ produce any black pixels on the bitmap! -> we return a glyph with
+ correct metrics and bitmap pointer set to NULL */
+ sprintf( err_warn_msg_buf,
+ "No black pixels in outline %p", path);
+ T1_PrintLog( "T1_FillOutline()", err_warn_msg_buf, T1LOG_WARNING);
+
+ glyph.metrics.leftSideBearing = 0;
+ glyph.metrics.advanceX = NEARESTPEL(area->ending.x - area->origin.x);
+ glyph.metrics.advanceY = - NEARESTPEL(area->ending.y - area->origin.y);
+ glyph.metrics.rightSideBearing = 0;
+ glyph.metrics.descent = 0;
+ glyph.metrics.ascent = 0;
+ /* make sure to get rid of 'area' before leaving! */
+ KillRegion (area);
+ return( &glyph);
+ }
+ if (h > 0 && w > 0) {
+ memsize = h * paddedW / 8 + 1;
+ /* This is for the users copy of the character, for security-reasons
+ the original pointer to the cache area is not used. The entry glyph.bits
+ is free'ed every time this function is called: */
+ glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if (glyph.bits == NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to get rid of area if it's there */
+ if (area){
+ KillRegion (area);
+ }
+ return(NULL);
+ }
+
+ }
+ else {
+ h = w = 0;
+ area->xmin = area->xmax = 0;
+ area->ymin = area->ymax = 0;
+ }
+
+ glyph.metrics.leftSideBearing = area->xmin;
+ glyph.metrics.advanceX = NEARESTPEL(area->ending.x - area->origin.x);
+ glyph.metrics.advanceY = - NEARESTPEL(area->ending.y - area->origin.y);
+ glyph.metrics.rightSideBearing = area->xmax;
+ glyph.metrics.descent = - area->ymax;
+ glyph.metrics.ascent = - area->ymin;
+
+
+ if (h > 0 && w > 0) {
+ (void) memset(glyph.bits, 0, memsize);
+ fill(glyph.bits, h, paddedW, area, T1_byte, T1_bit, T1_wordsize );
+ }
+
+ /* Check for writing direction and re-compute dimensions appropriately: */
+ if (modflag & T1_RIGHT_TO_LEFT){
+ glyph.metrics.advanceX *= -1;
+ glyph.metrics.advanceY *= -1;
+ glyph.metrics.leftSideBearing += glyph.metrics.advanceX;
+ glyph.metrics.rightSideBearing += glyph.metrics.advanceX;
+ glyph.metrics.descent += glyph.metrics.advanceY;
+ glyph.metrics.ascent += glyph.metrics.advanceY;
+ }
+
+ /* make sure to get rid of area if it's there */
+ if (area){
+ KillRegion (area);
+ }
+ return( &glyph);
+
+
+}
+
+
+/* T1_SetRect(): Raster a rectangle, whose size is given in charspace units.
+ The resulting glyph does not cause any escapement. */
+GLYPH* T1_SetRect( int FontID, float size,
+ float width, float height, T1_TMATRIX *transform)
+{
+ int i;
+ int mode;
+ struct region *area;
+ struct XYspace *Current_S;
+ float strokewidth = 0.0f;
+
+ FONTSIZEDEPS *font_ptr;
+ FONTPRIVATE *fontarrayP;
+
+ volatile int memsize=0;
+ LONG h,w;
+ LONG paddedW;
+
+ static GLYPH glyph={NULL,{0,0,0,0,0,0},NULL,1};
+
+
+ /* We return to this if something goes wrong deep in the rasterizer */
+ if ((i=setjmp( stck_state))!=0) {
+ T1_errno=T1ERR_TYPE1_ABORT;
+ sprintf( err_warn_msg_buf, "t1_abort: Reason: %s",
+ t1_get_abort_message( i));
+ T1_PrintLog( "T1_SetRect()", err_warn_msg_buf,
+ T1LOG_ERROR);
+ return( NULL);
+ }
+
+ font_ptr = NULL;
+
+ /* Reset character glyph, if necessary */
+ if (glyph.bits!=NULL){
+ free(glyph.bits);
+ glyph.bits=NULL;
+ }
+ glyph.metrics.leftSideBearing=0;
+ glyph.metrics.rightSideBearing=0;
+ glyph.metrics.advanceX=0;
+ glyph.metrics.advanceY=0;
+ glyph.metrics.ascent=0;
+ glyph.metrics.descent=0;
+ glyph.pFontCacheInfo=NULL;
+ glyph.bpp=1;
+
+ /* First, check for a correct ID. */
+ i=T1_CheckForFontID(FontID);
+ if ( i == -1 ) {
+ return NULL;
+ }
+ /* if necessary load font into memory */
+ if ( i == 0 )
+ if ( T1_LoadFont( FontID) )
+ return NULL;
+
+ /* Check for valid size */
+ if (size<=0.0){
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Assign padding value */
+ T1_pad=pFontBase->bitmap_pad;
+ if (pFontBase->endian)
+ T1_byte=1;
+ else
+ T1_byte=0;
+ T1_wordsize=T1_pad;
+
+ if ( i > 0 ) {
+ /* FontID identifies a valid font */
+ fontarrayP = &(pFontBase->pFontArray[FontID]);
+
+ /* Check for size and create it if necessary */
+ if ((font_ptr=T1int_QueryFontSize( FontID, size, NO_ANTIALIAS))==NULL){
+ font_ptr=T1int_CreateNewFontSize( FontID, size, NO_ANTIALIAS);
+ if (font_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ }
+
+ /* handle stroking stuff */
+ if ( fontarrayP->info_flags & RASTER_STROKED) {
+ strokewidth = pFontBase->pFontArray[FontID].StrokeWidth;
+ }
+ else {
+ strokewidth = 0.0f;
+ }
+ }
+ else {
+ fontarrayP = NULL;
+ strokewidth = 0.0f;
+ }
+
+
+ /* Setup an appropriate charspace matrix. Note that the rasterizer
+ assumes vertical values with inverted sign! Transformation should
+ create a copy of the local charspace matrix which then still has
+ to be made permanent. */
+ if ( transform != NULL ) {
+ Current_S = (struct XYspace *)
+ Permanent(Scale(Transform (font_ptr->pCharSpaceLocal,
+ transform->cxx, - transform->cxy,
+ transform->cyx, - transform->cyy),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+ else{
+ Current_S = (struct XYspace *)
+ Permanent(Scale(Transform(font_ptr->pCharSpaceLocal,
+ 1.0, 0.0, 0.0, -1.0),
+ DeviceSpecifics.scale_x, DeviceSpecifics.scale_y));
+ }
+
+ mode=0;
+ area=fontfcnRect( width,
+ height,
+ Current_S,
+ &mode,
+ DO_RASTER,
+ strokewidth);
+ KillSpace (Current_S);
+
+ /* fill the glyph-structure */
+ if ( mode > 0 ) {
+ sprintf( err_warn_msg_buf, "fontfcnRect() set mode=%d", mode);
+ T1_PrintLog( "T1_SetRect()", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+ if ( area == NULL ) {
+ T1_PrintLog( "T1_SetRect()", "area=NULL returned by fontfcnRect()", T1LOG_WARNING);
+ T1_errno=mode;
+ return(NULL);
+ }
+ h = area->ymax - area->ymin;
+ w = area->xmax - area->xmin;
+
+ paddedW = PAD(w, T1_pad);
+
+ if (h > 0 && w > 0) {
+ memsize = h * paddedW / 8 + 1;
+ /* This is for the users copy of the character, for security-reasons
+ the original pointer to the cache area is not used. The entry glyph.bits
+ is free'ed every time this function is called: */
+ glyph.bits = (char *)malloc(memsize*sizeof( char));
+ if ( glyph.bits == NULL ) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ /* make sure to get rid of 'area' before leaving! */
+ KillRegion (area);
+ return(NULL);
+ }
+ }
+ else {
+ h = w = 0;
+ area->xmin = area->xmax = 0;
+ area->ymin = area->ymax = 0;
+ }
+
+ /* Assign metrics */
+ glyph.metrics.leftSideBearing = area->xmin;
+ glyph.metrics.advanceX = NEARESTPEL(area->ending.x - area->origin.x);
+ glyph.metrics.advanceY = - NEARESTPEL(area->ending.y - area->origin.y);
+ glyph.metrics.rightSideBearing = area->xmax;
+ glyph.metrics.descent = - area->ymax;
+ glyph.metrics.ascent = - area->ymin;
+
+
+ if (h > 0 && w > 0) {
+ (void) memset(glyph.bits, 0, memsize);
+ fill(glyph.bits, h, paddedW, area, T1_byte, T1_bit, T1_wordsize );
+ }
+
+ /* make sure to get rid of 'area' before leaving! */
+ KillRegion (area);
+
+ return(&glyph);
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.h
new file mode 100644
index 00000000000..e2fd80a0218
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1set.h
@@ -0,0 +1,98 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1set.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-01-02
+ ----- Description: This file is part of the t1-library. It contains
+ definitions and declarations for t1set.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1SET_C
+
+GLYPH *T1_SetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_SetString( int FontID, char *string, volatile int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+GLYPH* T1_SetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+void fill(char *dest, int h, int w,
+ struct region *area, int byte, int bit,
+ int wordsize);
+void fillrun(char *p, pel x0, pel x1, int bit);
+GLYPH *T1_CopyGlyph(GLYPH *glyph);
+void T1_DumpGlyph( GLYPH *glyph);
+GLYPH *T1_ConcatGlyphs( GLYPH *glyph1, GLYPH *glyph2,
+ int x_off, int y_off, int modflag);
+void T1_DumpGlyph( GLYPH *glyph);
+GLYPH *T1_FillOutline( T1_OUTLINE *path, int modflag);
+
+
+#else
+
+extern GLYPH *T1_SetChar( int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetString( int FontID, char *string, volatile int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH* T1_SetRect( int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern void fill(char *dest, int h, int w,
+ struct region *area, int byte, int bit,
+ int wordsize);
+extern void fillrun(char *p, pel x0, pel x1, int bit);
+extern GLYPH *T1_CopyGlyph(GLYPH *glyph);
+extern void T1_DumpGlyph( GLYPH *glyph);
+extern GLYPH *T1_ConcatGlyphs( GLYPH *glyph1, GLYPH *glyph2,
+ int x_off, int y_off, int modflag);
+extern void T1_DumpGlyph( GLYPH *glyph);
+extern GLYPH *T1_FillOutline( T1_OUTLINE *path, int modflag);
+
+#endif
+
+
+extern struct region *fontfcnB(int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char index, int *mode,
+ psfont *Font_Ptr,
+ int do_raster,
+ float strokewidth);
+extern struct region *fontfcnB_string( int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char *string, int no_chars,
+ int *mode, psfont *Font_Ptr,
+ int *kern_pairs, long spacewidth,
+ int do_raster,
+ float strokewidth);
+extern struct region *fontfcnB_ByName( int FontID, int modflag,
+ struct XYspace *S,
+ char *charname,
+ int *mode, psfont *Font_Ptr,
+ int do_raster);
+extern struct region* fontfcnRect( float width,
+ float height,
+ struct XYspace* S,
+ int* mode,
+ int do_raster,
+ float strokewidth);
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.c
new file mode 100644
index 00000000000..da427b2b826
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.c
@@ -0,0 +1,955 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1subset.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for subsetting type 1 fonts.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1SUBSET_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1finfo.h"
+#include "t1misc.h"
+#include "t1base.h"
+#include "t1delete.h"
+#include "t1subset.h"
+
+/* Segment header for pfb-files (reminder):
+
+ Segment-header:
+
+ Byte 1: always 128 (0x80)
+
+ Byte 2: 1 = ASCII text
+ 2 = Binary text
+ 3 = End of file indicator (EOF)
+
+ Byte 3: least significant byte \
+ Byte 4: \ Length of
+ Byte 5: / data segment in bytes
+ Byte 6: most significant byte /
+
+ */
+#define SEGMENT_ASCII 1
+#define SEGMENT_BINARY 2
+#define SEGMENT_EOF 3
+
+
+extern psobj *StdEncArrayP; /* For accessing StandardEncoding */
+
+static char *charstringP;
+static int charstringL;
+
+
+/* We define two lookup tables to make a fast conversion from
+ binary bytes to ASCII-hex bytes. */
+static unsigned char highHexByte[256]={
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46
+};
+static unsigned char lowHexByte[256]={
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
+};
+
+
+/* parameters for eexec encryption */
+static unsigned short int eexec_r;
+static unsigned short int eexec_c1=52845;
+static unsigned short int eexec_c2=22719;
+
+/* Eexec-encrption according to the Adobe Black Book */
+static unsigned char EexecEncrypt( unsigned char plain)
+{
+
+ unsigned char cipher;
+
+ cipher = (plain ^ (eexec_r>>8));
+ eexec_r = (cipher + eexec_r) * eexec_c1 + eexec_c2;
+ return( cipher);
+}
+
+
+
+static int locateCharString( int FontID, char *charname)
+{
+
+ int namelen;
+ int dictlen;
+ int i;
+ psdict *CharStringsP;
+
+
+ namelen=strlen( charname);
+
+ CharStringsP=pFontBase->pFontArray[FontID].pType1Data->CharStringsP;
+
+ dictlen=CharStringsP[0].key.len;
+ for ( i=1; i<=dictlen; i++) {
+ if (namelen==CharStringsP[i].key.len) {
+ /* This could be the charstring in question */
+ if (strncmp( charname,
+ CharStringsP[i].key.data.nameP,
+ namelen)==0) {
+ /* It is the the desired charstring */
+ charstringP=CharStringsP[i].value.data.valueP;
+ charstringL=CharStringsP[i].value.len;
+ return( i);
+ }
+ }
+ }
+ /* charstring not found ??? */
+ return( 0);
+
+}
+
+
+
+static int make_pfb_segment_header( char *ptr, int type, unsigned long size)
+{
+ ptr[0]=(char) 0x80;
+ ptr[1]=type;
+ if (type==3)
+ return( 2);
+ ptr[2]=(char)(size & 0xFF);
+ ptr[3]=(char)((size>>8) & 0xFF);
+ ptr[4]=(char)((size>>16) & 0xFF);
+ ptr[5]=(char)((size>>24) & 0xFF);
+ return( 6);
+}
+
+
+
+
+char *T1_SubsetFont( int FontID,
+ char *mask,
+ unsigned int flags,
+ int linewidth,
+ unsigned long maxblocksize,
+ unsigned long *bufsize)
+{
+
+ FILE *ifp;
+ static char *filebuf=NULL;
+ unsigned long filesize=0;
+ int filesegs=0;
+
+ char *outbuf=NULL;
+ unsigned long outsize=0;
+ char *encryptbuf=NULL;
+ unsigned long encryptsize=0;
+ int encryptsegs=0;
+ char *trailerbuf=NULL;
+ unsigned long trailersize=0;
+ int trailersegs=0;
+ char linebuf[1025];
+
+ char *csdone; /* stores which charstrings already have been written */
+ int currstring_no=0;
+ char *charnameP;
+ char charnamebuf[257];
+ unsigned char cipher;
+ char rdstring[3];
+ char ndstring[3];
+
+ int retval=1;
+
+ /* Indices. Could save a few but debugging becomes easier this way */
+ int i=0;
+ int j=0;
+ int k=0;
+ int l=0;
+ int m=0;
+ int n=0;
+ int o=0;
+ int p=0;
+
+
+ int notdefencoded=0;
+ int stdenc=0;
+ int reencode=0;
+ int colcount=0;
+ int tr_len=-1;
+ int encrypt=1; /* 1=ASCII-hex, 2=Binary, 0=None (for debugging) */
+ int dindex=0;
+ int nocharstrings=0;
+ char encmask[256]; /* Mask after resolving composite characters */
+ T1_COMP_CHAR_INFO* cci = NULL;
+
+ /* variables for checking SEAC's */
+ int qs_num = 0;
+ unsigned char qs_piece1 = 0;
+ unsigned char qs_piece2 = 0;
+
+
+ /* Otherwise we would get invalid accesses later */
+ if (T1_CheckForFontID(FontID)!=1) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+
+ /* Check parameters */
+ if ( (mask==NULL) || (bufsize==NULL) || (linewidth < 8) ||
+ (linewidth > 1024) || (maxblocksize < 4) ) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ /* Reset resulting encoding mask */
+ for ( j=0; j<256; j++) {
+ encmask[j] = 0;
+ }
+
+ /* Build encmask, a mask, where all required elementary character
+ definitions required are tagged. Font internal SEAC definitions
+ are evaluated at first priority, and as a fallback, also user
+ specified composite character data is taken into account.
+ */
+ for ( j=0; j<256; j++) {
+ if ( mask[j] != 0 ) {
+ /* In any case, tag slot j itself */
+ encmask[j] |= 0x01;
+ /* Now check against correctly defined SEAC (Standard
+ Encoding Accented Character). */
+ if ( (qs_num = T1int_QuerySEAC( FontID,
+ j,
+ &qs_piece1,
+ &qs_piece2
+ )) > 1 ) {
+ /* We have a SEAC --> reserve 2 additional slots,
+ the basechar and the accent. The index numbers in this case
+ always refer to to StandardEncoding, which is not necessarily
+ the font's current encoding. We indicate this by using bit 2
+ 0x2 inverse sign. */
+ encmask[qs_piece1] |= 0x2;
+ encmask[qs_piece2] |= 0x2;
+ }
+ else {
+ /* OK, it is no a SEAC, but we still check against AFM composite character
+ data definition. This is non-standard, but we give the user the chance
+ to access all single character definitions in order construct arbitrary
+ composite characters. */
+ if ( cci != NULL ) {
+ T1_FreeCompCharData( cci);
+ }
+ cci = T1_GetCompCharData( FontID, j);
+
+ if ( (cci != NULL) && (cci->numPieces > 1) ) {
+ /* Tag all components that are required to construct
+ the composite character j. */
+ for ( p=0; p<cci->numPieces; p++) {
+ encmask[cci->pieces[p].piece] |= 0x1;
+ }
+ }
+ }
+ } /* if ( mask[j] != 0 ) */
+ } /* for ... mask */
+
+
+ /* Inspect encmask, get number of atomic charstrings and check for
+ ".notdef" being encoded. */
+ for ( j=0; j<256; j++) {
+ if ( (encmask[j] & 0x01) != 0 ) {
+ ++nocharstrings;
+ /* Obtain name from current encoding */
+ charnameP=T1_GetCharName( FontID, j);
+ }
+ if ( (encmask[j] & 0x02) != 0 ) {
+ ++nocharstrings;
+ /* Obtain name from StandardEncoding */
+ strncpy( charnamebuf, (StdEncArrayP[j]).data.nameP, (StdEncArrayP[j]).len);
+ charnamebuf[StdEncArrayP[j].len] = '\0';
+ charnameP=charnamebuf;
+ }
+ if ( encmask[j] != 0 ) {
+
+ if ( strcmp(charnameP, ".notdef") == 0 ) {
+ notdefencoded=1;
+ }
+ }
+ }
+
+
+ /* adjust encrypting type according to flags. Default is ASCII-hex
+ encryption because the output may be verbatim inserted into a
+ PostScript-file. */
+ if (flags & T1_SUBSET_ENCRYPT_BINARY)
+ encrypt=2;
+ else if (flags & T1_SUBSET_ENCRYPT_NONE)
+ encrypt=0;
+
+ /* Open and initialize scanning machinery */
+ T1io_reset();
+ if ((ifp = (FILE *)T1Open(T1_GetFontFilePath( FontID), "rb"))==NULL) {
+ T1_errno=T1ERR_FILE_OPEN_ERR;
+ return(NULL);
+ }
+
+ if (encrypt==0)
+ sprintf( err_warn_msg_buf, "Subsetting Font %d, flags=0x%X, non-encrypted debug output",
+ FontID, flags);
+ else if (encrypt==1)
+ sprintf( err_warn_msg_buf, "Subsetting Font %d, flags=0x%X, ASCII-hex output with linelength %d",
+ FontID, flags, linewidth);
+ else if (encrypt==2)
+ sprintf( err_warn_msg_buf, "Subsetting Font %d, flags=0x%X, Binary output with maximum blocksize %lu",
+ FontID, flags, maxblocksize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+
+ /* Get size of file */
+ filesize=T1GetFileSize( ifp);
+ sprintf( err_warn_msg_buf, "Source file %s is %lu bytes long",
+ T1_GetFontFilePath( FontID), filesize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ if ((filebuf=(char *)calloc( filesize, sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+
+ while (retval>0) {
+ /* get a line from the file. We have to read enough characters to
+ ensure that "eexec" does not get split between two reads.
+ Otherwise, decryption would not be started. */
+ retval=T1Gets(&(filebuf[i]), 1025, ifp);
+
+ i+=retval;
+ if ( (dindex==0) && (T1GetDecrypt()>0) ) {
+ dindex=i-retval; /* from this point on we have decrypted bytes */
+ sprintf( err_warn_msg_buf, "Human-readable header finished (%d data bytes)",
+ dindex);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+
+ /* Encoding handling follows.
+ Note: If the font file defines StandardEncoding (as we will check shortly),
+ but the font has been reencoded by t1lib, we enforce reencoding
+ in any case so that all characters are accessible eventually in
+ the subset.
+ */
+ if ( pFontBase->pFontArray[FontID].pFontEnc != NULL ) {
+ T1_PrintLog( "T1_SubsetFont()", "Font is reencoded by t1lib, enforcing Reencoding of subset",
+ T1LOG_DEBUG);
+ /* Set flag to enforce reenocde in case of StandardEncoding */
+ flags |= T1_SUBSET_FORCE_REENCODE;
+ /* Reset flag to enforce reenocde in case of StandardEncoding */
+ flags &= ~T1_SUBSET_SKIP_REENCODE;
+ }
+
+ if (strstr( &(filebuf[i-retval]), "/Encoding")!=NULL) {
+ if (strstr( &(filebuf[i-retval]), "StandardEncoding")!=NULL) {
+ stdenc=1;
+
+ if ((flags & T1_SUBSET_FORCE_REENCODE)!=0) {
+ /* we ignore the current line ... */
+ i-=retval;
+ /* and put the encoding header into the buffer */
+ i+=sprintf( &(filebuf[i]),
+ "/Encoding 256 array\n0 1 255 {1 index exch /.notdef put} for\n"
+ );
+ reencode=1;
+ }
+ else {
+ T1_PrintLog( "T1_SubsetFont()", "Leaving StandardEncoding untouched",
+ T1LOG_DEBUG);
+ reencode=0;
+ }
+ }
+ else {
+ /* The encoding is explicitly defined in the font file. We skip copying
+ the whole definition because we will reencode the subset later, unless
+ reencoding should be skipped by means of the flag settings. If the font
+ has been reencoded by t1lib, we enforce reencoding in order to ensure
+ that all characters in the subset will be accessible (see above). */
+ stdenc=0;
+ retval=T1Gets(&(filebuf[i]), 1025, ifp);
+ i+=retval;
+ while (retval>0) {
+ /* get a line and check for end of encoding definition. */
+ retval=T1Gets(&(filebuf[i]), 1025, ifp);
+ if ((flags & T1_SUBSET_SKIP_REENCODE)!=0) { /* we store the encoding
+ defined here */
+ i+=retval;
+ reencode=0;
+ }
+ else {
+ reencode=1;
+ }
+ if ( (dindex==0) && (T1GetDecrypt()>0) ) {
+ dindex=i; /* from this point we have decrypted bytes */
+ }
+ if (strstr( &(filebuf[i-retval]), "readonly def")!=NULL) {
+ break;
+ }
+ }
+ if (reencode==0)
+ T1_PrintLog( "T1_SubsetFont()", "Preserving FontSpecific Encoding",
+ T1LOG_DEBUG);
+ }
+
+ /* At this point, if required, the actual encoding definition
+ follows. */
+ if ( reencode!=0) {
+ k=0;
+
+ /* Write actually required encoding slots. We only encode the
+ characters required from the current fonts encoding. Characters
+ from StandardEncoding required by composite chars are not encoded. */
+ for ( j=0; j<256; j++) {
+ if ( (encmask[j] & 0x01) !=0 ) {
+ charnameP=T1_GetCharName( FontID, j);
+ i+=sprintf( &(filebuf[i]), "dup %d /%s put\n", j,
+ charnameP);
+ k++;
+ }
+ }
+
+ /* finish encoding definition */
+ i+=sprintf( &(filebuf[i]), "readonly def\n");
+ sprintf( err_warn_msg_buf, "Encoded %d characters",
+ k);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ k=0;
+ }
+
+ } /* end of if (...encoding handling...) */
+
+ /* Extract the names that are used for the charstring definitions.
+ We will later need them! */
+ if (strstr( &(filebuf[i-retval]), "/RD")!=NULL) {
+ sprintf( rdstring, "RD");
+ }
+ if (strstr( &(filebuf[i-retval]), "/ND")!=NULL) {
+ sprintf( ndstring, "ND");
+ }
+ if (strstr( &(filebuf[i-retval]), "/-|")!=NULL) {
+ sprintf( rdstring, "-|");
+ }
+ if (strstr( &(filebuf[i-retval]), "/|-")!=NULL) {
+ sprintf( ndstring, "|-");
+ }
+
+ if (strstr( &(filebuf[i-retval]), "/CharStrings")!=NULL) {
+ /* replace dictionary with one of an appropriate size: */
+ i -=retval;
+ sprintf( err_warn_msg_buf, "Private dictionary finished (%u data bytes)",
+ i-dindex);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+
+ /* if .notdef is not in the encoding mask, we have to reserve
+ room for the additional charstring .notdef. Note that still
+ nocharstrings is an upper bound estimation, which is reached
+ in cases where no characters are encoded more than one time. */
+ if ( notdefencoded == 0 ) {
+ nocharstrings++;
+ }
+
+ i+=sprintf( &(filebuf[i]), "2 index /CharStrings %d dict dup begin\n",
+ nocharstrings);
+ break;
+ }
+ } /* the portion until Charstrings-dict is now read in */
+
+
+ /* We now have to write the CharStrings.
+ Each charstring must be written once, even if the respective
+ character appears more than once in the encoding. So we set up
+ table to remember which charstrings already have been written.
+
+ Note: The indices returned by locateCharString() range from 1 to n, so that
+ we have to decrement the index when filling the csdone array!
+ */
+ if (( csdone=(char *)calloc( pFontBase->pFontArray[FontID].pType1Data->CharStringsP[0].key.len,
+ sizeof(char)))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( filebuf);
+ T1Close( ifp);
+ return( NULL);
+ }
+
+ /* The .notdef character is in force! */
+ if ((currstring_no=locateCharString( FontID, ".notdef"))==0) {
+ T1_errno=T1ERR_UNSPECIFIED;
+ free( csdone);
+ T1Close( ifp);
+ return( NULL);
+ }
+ i+=sprintf( &(filebuf[i]), "/.notdef %d %s ", charstringL, rdstring);
+ memcpy(&(filebuf[i]), charstringP, charstringL);
+ i+=charstringL;
+ i+=sprintf( &(filebuf[i]), " %s\n", ndstring);
+ csdone[currstring_no-1]=1;
+ /* Now, step through the specifier matrix and write only the
+ necessary charstrings. */
+ for ( j=0; j<256; j++) {
+ if (encmask[j]!=0) {
+ if ( (encmask[j] & 0x01) != 0 ) {
+ /* Obtain name from current encoding */
+ charnameP=T1_GetCharName( FontID, j);
+ }
+ else {
+ /* Obtain name from StandardEncoding */
+ strncpy( charnamebuf, (StdEncArrayP[j]).data.nameP, (StdEncArrayP[j]).len);
+ charnamebuf[StdEncArrayP[j].len] = '\0';
+ charnameP=charnamebuf;
+ }
+ if ((currstring_no=locateCharString( FontID, charnameP))==0) {
+ /* Atomic character not found. This is mysterious, but causes no harm
+ because .notdef will be substituted */
+ sprintf( err_warn_msg_buf, "Could not locate CS ""%s"" for index %d",
+ charnameP, j);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_WARNING);
+ continue;
+ }
+ /* Process charstring only if it has not already been done */
+ if (csdone[currstring_no-1]==0) {
+ k=i;
+ i+=sprintf( &(filebuf[i]), "/%s %d %s ", charnameP, charstringL, rdstring);
+ memcpy(&(filebuf[i]), charstringP, charstringL);
+ i+=charstringL;
+ i+=sprintf( &(filebuf[i]), " %s\n", ndstring);
+ csdone[currstring_no-1]=1;
+ sprintf( err_warn_msg_buf,
+ "Processing of CS ""%s"" for index %d (EncMaskFlag=0x%X) successful (len=%d bytes, line=%d bytes)",
+ charnameP, j, encmask[j], charstringL, i-k);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ else {
+ sprintf( err_warn_msg_buf, "Skipped multiple processing of CS ""%s"" (index %d)",
+ charnameP, j);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ }
+ }
+ }
+
+ /* Get rid of temporary data */
+ if (csdone!=NULL) {
+ free( csdone);
+ csdone = NULL;
+ }
+ if ( cci != NULL ) {
+ free( cci);
+ cci = NULL;
+ }
+
+ /* All charstrings are written. Some PostScript code follows */
+ i+=sprintf( &(filebuf[i]),
+ "end\nend\nreadonly put\nnoaccess put\ndup /FontName get exch definefont pop\nmark currentfile closefile\n");
+ sprintf( err_warn_msg_buf,
+ "Charstrings and Font definition finished (%d data bytes, from which %d bytes will be encrypted)",
+ i, i-dindex);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+
+ /* we compute the size of the encrypted area. */
+ if (encrypt==1) {
+ encryptsize=i-dindex;
+ encryptsize+=4; /* the four random bytes */
+ encryptsize*=2; /* since we use ASCII-hex output */
+ encryptsize+=(int)ceil((double)encryptsize/linewidth); /* we need a few newline characters
+ to adjust the output format */
+ }
+ else if (encrypt==2) { /* binary encryption. The whole data is contiguous
+ and only at the end of the data a newline is
+ added. */
+ encryptsize=i-dindex+1;
+ encryptsize+=4; /* the four random bytes */
+ }
+ else { /*The case of no encryption does not produce
+ valid fonts, it is for debugging purposes only */
+ encryptsize=i-dindex+1;
+ }
+
+
+ /* we add the size of the 512 zeros and the cleartomark */
+ trailersize+=ZEROS;
+ trailersize+=(int)ceil((double)ZEROS/linewidth);
+ trailersize+=12; /* cleartomark */
+
+ /* Search for remaining PostScript code in the last 1024 bytes. This
+ should suffice for any font. */
+ tr_len=T1GetTrailer( linebuf, 1025, ifp);
+ T1Close(ifp); /* we do not need the file any longer */
+
+ /* And we add the size of the trailer. A trailer only consisting of
+ a newline is ignored because the newline has already been included
+ in the cleartomark-string. */
+ if ( !((tr_len==1) && ((linebuf[0]=='\n') || (linebuf[0]=='\r')) ) ) {
+ trailersize+=tr_len;
+ }
+
+
+ if ((encryptbuf=(char *)calloc( encryptsize, 1))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( filebuf);
+ return( NULL);
+ }
+
+ /* Allocate one byte in orer to be able to use sprintf() (which appends
+ an ASCII-\0).*/
+ if ((trailerbuf=(char *)calloc( trailersize+1, 1))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( filebuf);
+ free( encryptbuf);
+ return( NULL);
+ }
+
+ k=0;
+ colcount=0;
+
+ /* perform eexec-encryption */
+ eexec_r=55665;
+ if (encrypt==0) {
+ for (j=dindex; j<i; j++) {
+ encryptbuf[k++]=filebuf[j];
+ }
+ }
+ else if ( encrypt==1) {
+ /* consume four random bytes. We take the numbers '0', '1', '2'
+ and '3'. The first cipher then is 217-dec (0xD9-hex), i.e., it
+ is no white space character. The resulting font can thus be
+ converted to pfb-format without the risk violating the Adobe spec.*/
+ for (j=0; j<4; j++) {
+ cipher=EexecEncrypt( (unsigned char) j);
+ encryptbuf[k++]=highHexByte[cipher];
+ if (++colcount==linewidth) {
+ colcount=0;
+ encryptbuf[k++]='\n';
+ }
+ encryptbuf[k++]=lowHexByte[cipher];
+ if (++colcount==linewidth) {
+ colcount=0;
+ encryptbuf[k++]='\n';
+ }
+ }
+ for (j=dindex; j<i; j++) {
+ cipher=EexecEncrypt( (unsigned char) filebuf[j]);
+ encryptbuf[k++]=highHexByte[cipher];
+ if (++colcount==linewidth) {
+ colcount=0;
+ encryptbuf[k++]='\n';
+ }
+ encryptbuf[k++]=lowHexByte[cipher];
+ if (++colcount==linewidth) {
+ colcount=0;
+ encryptbuf[k++]='\n';
+ }
+ }
+ /* If necessary, append newline char */
+ if (encryptbuf[k-1]!='\n') {
+ encryptbuf[k++]='\n';
+ }
+ } /* if encrypt==1 */
+ else { /* four random bytes ... */
+ for (j=0; j<4; j++) {
+ encryptbuf[k++]=EexecEncrypt( (unsigned char) j);
+ }
+ for (j=dindex; j<i; j++) { /* and encrypted charstrings */
+ encryptbuf[k++]=EexecEncrypt( (unsigned char) filebuf[j]);
+ }
+ } /* encrypt == 2 */
+ /* Encryption finished */
+
+ /* If necessary, append newline char */
+ if (encryptbuf[k-1]!='\n') {
+ encryptbuf[k++]='\n';
+ }
+
+ colcount=0;
+ /* Append zeroes and cleartomark */
+ for (j=0; j<ZEROS; j++) {
+ trailerbuf[l++]='0';
+ if (++colcount==linewidth) {
+ colcount=0;
+ trailerbuf[l++]='\n';
+ }
+ }
+ /* If necessary, append newline char */
+ if (trailerbuf[l-1]!='\n') {
+ trailerbuf[l++]='\n';
+ }
+ l+=sprintf( &(trailerbuf[l]), "cleartomark\n");
+ if ( !((tr_len==1) && ((linebuf[0]=='\n') || (linebuf[0]=='\r')) ) ) {
+ sprintf( err_warn_msg_buf,
+ "Including additional PostScript trailer (%d bytes)",
+ tr_len);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ l+=sprintf( &(trailerbuf[l]), linebuf); /* contains the PostScript trailer */
+ }
+
+ /* compute size of output file */
+ outsize=0;
+ if (encrypt==2) { /* binary encryption, take care about pfb-blocks */
+ /* each segment requires 6 bytes for the header */
+ filesegs=(int)(ceil((double)dindex/maxblocksize));
+ encryptsegs=(int)(ceil((double)k/maxblocksize));
+ trailersegs=(int)(ceil((double)l/maxblocksize));
+ /* trainling ASCII-part: */
+ outsize +=dindex;
+ /* binary encrypted data */
+ outsize +=k;
+ /* leading ASCII-part: */
+ outsize +=l;
+ /* segment headers */
+ outsize +=6*(filesegs+encryptsegs+trailersegs);
+ outsize +=2; /* the EOF-marker segment */
+ }
+ else { /* ASCII-hex encryption or no encryption: no segmentation */
+ outsize=dindex+k+l;
+ }
+
+ if ((outbuf=(char *)calloc( outsize, 1))==NULL) {
+ T1_errno=T1ERR_ALLOC_MEM;
+ free( filebuf);
+ free( encryptbuf);
+ free( trailerbuf);
+ return( NULL);
+ }
+
+
+
+ /* The full bufsize is given as the unencrypted portion plus size
+ of encryptbuf (which also inccorporates an unencrypted trailer).
+ In addition, the segment headers have to be taken into account for
+ pfb-format. */
+ i=0;
+ if (encrypt==2) { /* we have to add segment headers */
+ T1_PrintLog( "T1_SubsetFont()", "Setting up segmented binary buffer (pfb-format)",
+ T1LOG_DEBUG);
+ /* Clear text header */
+ m=0;
+ for ( j=0; j<filesegs; j++) {
+ if (j==filesegs-1)
+ n=dindex % maxblocksize;
+ else
+ n=maxblocksize;
+ i +=make_pfb_segment_header( &(outbuf[i]), SEGMENT_ASCII, n);
+ memcpy( &(outbuf[i]), &(filebuf[m]), n);
+ i +=n;
+ m +=n;
+ }
+ sprintf( err_warn_msg_buf,
+ " Readable header (%d bytes: %d data bytes in %d ASCII-segments of maximum size %lu bytes)",
+ i, dindex, filesegs, maxblocksize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ /* Binary data */
+ m=0;
+ o=i;
+ for ( j=0; j<encryptsegs; j++) {
+ if (j==encryptsegs-1)
+ n=k % maxblocksize;
+ else
+ n=maxblocksize;
+ i +=make_pfb_segment_header( &(outbuf[i]), SEGMENT_BINARY, n);
+ memcpy( &(outbuf[i]), &(encryptbuf[m]), n);
+ i +=n;
+ m +=n;
+ }
+ sprintf( err_warn_msg_buf,
+ " Binary data (%d bytes: %d data bytes in %d binary segments of maximum size %lu bytes)",
+ i-o, k, encryptsegs, maxblocksize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ /* Readable ASCII-trailer */
+ m=0;
+ o=i;
+ for ( j=0; j<trailersegs; j++) {
+ if (j==trailersegs-1)
+ n=l % maxblocksize;
+ else
+ n=maxblocksize;
+ i +=make_pfb_segment_header( &(outbuf[i]), SEGMENT_ASCII, n);
+ memcpy( &(outbuf[i]), &(trailerbuf[m]), n);
+ i +=n;
+ m +=n;
+ }
+ sprintf( err_warn_msg_buf,
+ " Readable trailer (%d bytes: %d data bytes in %d ASCII-segments of maximum size %lu bytes)",
+ i-o, l, trailersegs, maxblocksize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ i +=make_pfb_segment_header( &(outbuf[i]), SEGMENT_EOF, 0);
+ sprintf( err_warn_msg_buf,
+ " EOF-segment marker (2 bytes)");
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ *bufsize=i;
+ } /* end of pfb-setup */
+ else { /* we continuously copy the data */
+ if (encrypt==1)
+ sprintf( err_warn_msg_buf,
+ "Dumping output buffer (%d bytes: %d readable ASCII, %d ASCII-hex in lines of width %d, %d readable ASCII)",
+ dindex+k+l, dindex, k, linewidth, l);
+ else
+ sprintf( err_warn_msg_buf,
+ "Dumping output buffer (%d bytes: %d readable ASCII, %d non-encrypted binary, %d readable ASCII)",
+ dindex+k+l, dindex, k, l);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+ memcpy( outbuf, filebuf, dindex);
+ memcpy( &(outbuf[dindex]), encryptbuf, k);
+ memcpy( &(outbuf[dindex+k]), trailerbuf, l);
+ *bufsize=dindex+k+l;
+ }
+
+ sprintf( err_warn_msg_buf,
+ "Output buffer is %ld bytes, original file size is %lu bytes",
+ *bufsize, filesize);
+ T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
+ T1LOG_DEBUG);
+
+
+ if (encryptbuf!=NULL)
+ free(encryptbuf);
+ if (trailerbuf!=NULL)
+ free(trailerbuf);
+ if (filebuf!=NULL)
+ free( filebuf);
+
+ return( outbuf);
+
+}
+
+
+
+/* This function returns the encrypted charstring of character
+ charname of font FontID. The length is saved at len */
+char *T1_GetCharString( int FontID, char *charname, int *len)
+{
+
+ static char *charstring=NULL;
+
+ if (T1_CheckForFontID(FontID)!=1) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(NULL);
+ }
+
+ if ( (charname==NULL) || (len==0) ) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return(NULL);
+ }
+
+ if ((locateCharString( FontID, charname))==0) {
+ *len=0;
+ T1_errno=T1ERR_UNSPECIFIED;
+ return( NULL);
+ }
+
+ if (charstring!=NULL) {
+ free( charstring);
+ charstring=NULL;
+ }
+ if ((charstring=(char *)malloc( charstringL))==NULL) {
+ *len=0;
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+
+ memcpy( charstring, charstringP, charstringL);
+ *len=charstringL;
+ return( charstring);
+
+}
+
+
+
+/* For those who really need it, this function returns the value
+ of lenIV from the Private dictionary. It specifies how many
+ random leading bytes are used in Charstring encryption in the
+ current font. */
+int T1_GetlenIV( int FontID)
+{
+
+ if (T1_CheckForFontID(FontID)!=1) {
+ T1_errno=T1ERR_INVALID_FONTID;
+ return( -2);
+ }
+ return( pFontBase->pFontArray[FontID].pType1Data->Private[LENIV].value.data.integer);
+
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.h
new file mode 100644
index 00000000000..8564bc83d81
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1subset.h
@@ -0,0 +1,82 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1subset.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2004-12-02
+ ----- Description: This file is part of the t1-library. It contains
+ declarations and definitions for t1subset.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2004.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independ from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#ifdef T1SUBSET_C
+
+
+#define T1_SUBSET_DEFAULT 0x00
+#define T1_SUBSET_FORCE_REENCODE 0x01
+#define T1_SUBSET_SKIP_REENCODE 0x02
+#define T1_SUBSET_ENCRYPT_BINARY 0x04
+/* This is only for debugging, it does not produce valid font-files! */
+#define T1_SUBSET_ENCRYPT_NONE 0x08
+
+
+/* Functions used from the t1io-module, partially written
+ and added for font-subsetting. We don't care about the
+ special F_FILE-type defined in that module because all
+ accesses are done via pointers. */
+extern unsigned long T1GetFileSize( FILE *f);
+extern FILE *T1Open( char *fn, char *mode);
+extern int T1Gets(char *string, int size, FILE *f);
+extern int T1GetDecrypt( void);
+extern int T1GetTrailer(char *string, int size, FILE *f);
+extern int T1Close( FILE *f);
+extern void T1io_reset( void);
+
+extern int T1int_QuerySEAC( int FontID,
+ unsigned char index,
+ unsigned char* piece1,
+ unsigned char* piece2
+ );
+
+char *T1_SubsetFont( int FontID,
+ char *mask,
+ unsigned int flags,
+ int linewidth,
+ unsigned long maxblocksize,
+ unsigned long *bufsize);
+char *T1_GetCharString( int FontID, char *charname, int *len);
+int T1_GetlenIV( int FontID);
+
+
+#define ZEROS 512
+
+#else
+
+extern char *T1_SubsetFont( int FontID,
+ char *mask,
+ unsigned int flags,
+ int linewidth,
+ unsigned long maxblocksize,
+ unsigned long *bufsize);
+extern char *T1_GetCharString( int FontID, char *charname, int *len);
+extern int T1_GetlenIV( int FontID);
+
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.c
new file mode 100644
index 00000000000..764c01f42bf
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.c
@@ -0,0 +1,703 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1trans.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for transforming fonts and setting
+ line-parameters.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1TRANS_C
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "../type1/ffilest.h"
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1trans.h"
+#include "t1base.h"
+
+
+/* T1_ExtendFont(): Extend the font referenced by FontID by the factor
+ extend. This is only allowed if no size dependent data exists.
+ Of course, the font must already have been loaded.
+ Returns 0 for success and -1 otherwise.
+ */
+int T1_ExtendFont( int FontID, double extend)
+{
+
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ /* Second, check whether size-dependent data exists: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps != NULL){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pFontBase->pFontArray[FontID].extend=extend;
+ pFontBase->pFontArray[FontID].FontTransform[0] = extend;
+ return(0);
+}
+
+
+
+/* T1_GetExtend(): Return the current extension factor of the
+ font FontID
+ Return: 0.0 if font not loaded
+ current extent otherwise
+*/
+double T1_GetExtend( int FontID)
+{
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return( pFontBase->pFontArray[FontID].extend);
+}
+
+
+
+
+/* T1_SlantFont(): Slant the font referenced by FontID by the factor
+ extend. This is only allowed if no size dependent data exists.
+ Of course, the font must already have been loaded.
+ Returns 0 for success and -1 otherwise.
+ */
+int T1_SlantFont( int FontID, double slant)
+{
+
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ /* Second, check whether size-dependent data exists: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps != NULL){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pFontBase->pFontArray[FontID].slant=slant;
+ pFontBase->pFontArray[FontID].FontTransform[2] = slant;
+ return(0);
+}
+
+
+
+/* T1_GetSlant(): Return the current slanting factor of the
+ font FontID
+ Return: 0.0 if font not loaded
+ current slant otherwise (may also be 0.0!)
+*/
+double T1_GetSlant( int FontID)
+{
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ return( pFontBase->pFontArray[FontID].slant);
+}
+
+
+
+/* T1_TransformFont(): Transform the font referenced by FontID according
+ to the transform matrix. This is only allowed if no size dependent
+ data exists. Of course, the font must already have been loaded.
+ Returns 0 for success and -1 otherwise.
+ */
+int T1_TransformFont( int FontID, T1_TMATRIX *matrix)
+{
+
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ /* Second, check whether size-dependent data exists: */
+ if (pFontBase->pFontArray[FontID].pFontSizeDeps != NULL){
+ T1_errno=T1ERR_OP_NOT_PERMITTED;
+ return(-1);
+ }
+
+ pFontBase->pFontArray[FontID].FontTransform[0] = matrix->cxx;
+ pFontBase->pFontArray[FontID].FontTransform[1] = matrix->cxy;
+ pFontBase->pFontArray[FontID].FontTransform[2] = matrix->cyx;
+ pFontBase->pFontArray[FontID].FontTransform[3] = matrix->cyy;
+ return(0);
+}
+
+
+
+/* T1_GetTransform(): Return the current transformation matrix for the
+ font FontID
+ Return: [0.0, 0.0, 0.0, 0.0] if font not loaded
+ current tmatrix otherwise
+*/
+T1_TMATRIX T1_GetTransform( int FontID)
+{
+ T1_TMATRIX tmatrix={0.0, 0.0, 0.0, 0.0};
+
+ /* First, check for font residing in memory: */
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(tmatrix);
+ }
+
+ tmatrix.cxx=pFontBase->pFontArray[FontID].FontTransform[0];
+ tmatrix.cxy=pFontBase->pFontArray[FontID].FontTransform[1];
+ tmatrix.cyx=pFontBase->pFontArray[FontID].FontTransform[2];
+ tmatrix.cyy=pFontBase->pFontArray[FontID].FontTransform[3];
+
+ return( tmatrix);
+}
+
+
+
+/* Functions for setting line-parameters:
+ linetypeis expected to be an OR'ed combination of
+ T1_UNDERLINE, T1_OVERLINE and T1_OVERSTRIKE.
+ */
+int T1_SetLinePosition( int FontID, int linetype, float value)
+{
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ if (linetype & T1_UNDERLINE){
+ pFontBase->pFontArray[FontID].UndrLnPos=value;
+ return( 0);
+ }
+ if (linetype & T1_OVERLINE){
+ pFontBase->pFontArray[FontID].OvrLnPos=value;
+ return( 0);
+ }
+ if (linetype & T1_OVERSTRIKE){
+ pFontBase->pFontArray[FontID].OvrStrkPos=value;
+ return( 0);
+ }
+
+ /* The linetype was bad */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( -1);
+
+}
+
+
+
+int T1_SetLineThickness( int FontID, int linetype, float value)
+{
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(-1);
+ }
+
+ if (linetype & T1_UNDERLINE){
+ pFontBase->pFontArray[FontID].UndrLnThick=value;
+ return( 0);
+ }
+ if (linetype & T1_OVERLINE){
+ pFontBase->pFontArray[FontID].OvrLnThick=value;
+ return( 0);
+ }
+ if (linetype & T1_OVERSTRIKE){
+ pFontBase->pFontArray[FontID].OvrStrkThick=value;
+ return( 0);
+ }
+
+ /* The linetype was bad */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( -1);
+
+}
+
+
+float T1_GetLinePosition( int FontID, int linetype)
+{
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ if (linetype & T1_UNDERLINE)
+ return( pFontBase->pFontArray[FontID].UndrLnPos);
+ if (linetype & T1_OVERLINE)
+ return( pFontBase->pFontArray[FontID].OvrLnPos);
+ if (linetype & T1_OVERSTRIKE)
+ return( pFontBase->pFontArray[FontID].OvrStrkPos);
+
+ /* The linetype was bad */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( 0.0);
+
+}
+
+
+
+float T1_GetLineThickness( int FontID, int linetype)
+{
+
+ if (T1_CheckForFontID(FontID)!=1){
+ T1_errno=T1ERR_INVALID_FONTID;
+ return(0.0);
+ }
+
+ if (linetype & T1_UNDERLINE)
+ return( pFontBase->pFontArray[FontID].UndrLnThick);
+ if (linetype & T1_OVERLINE)
+ return( pFontBase->pFontArray[FontID].OvrLnThick);
+ if (linetype & T1_OVERSTRIKE)
+ return( pFontBase->pFontArray[FontID].OvrStrkThick);
+
+ /* The linetype was bad */
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( 0.0);
+
+}
+
+
+/* Functions for intuitively transforming matrices. All function operate on their
+ original objects. In case NULL is specified, a unity-matrix is allocated by
+ the function and then tranformed appropriately. Note that in order to concatenate
+ transformation in the sense of t1lib the current transformation matrix must be
+ left-multiplied by the trnasformation to be applied! */
+/* Rotation:
+ ( x11' x21' ) ( cos(a) -sin(a) ) ( x11 x21 )
+ ( ) = ( ) * ( )
+ ( x12' x22' ) ( sin(a) cos(a) ) ( x12 x22 )
+*/
+T1_TMATRIX *T1_RotateMatrix( T1_TMATRIX *matrix, double angle)
+{
+ T1_TMATRIX tmat;
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ memcpy( &tmat, matrix, sizeof(T1_TMATRIX));
+ /* Convert angle to radians: */
+ angle=angle*PI/180.0;
+ /* multiply matrices */
+ matrix->cxx=cos((double)angle) * tmat.cxx - sin((double)angle) * tmat.cxy;
+ matrix->cyx=cos((double)angle) * tmat.cyx - sin((double)angle) * tmat.cyy;
+ matrix->cxy=sin((double)angle) * tmat.cxx + cos((double)angle) * tmat.cxy;
+ matrix->cyy=sin((double)angle) * tmat.cyx + cos((double)angle) * tmat.cyy;
+ return( matrix);
+}
+
+
+/* Horizontal mirroring */
+/* H-Mirror:
+ ( x11' x21' ) ( -1 0 ) ( x11 x21 ) ( -x11 -x21 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( 0 1 ) ( x12 x22 ) ( x12 x22 )
+*/
+T1_TMATRIX *T1_MirrorHMatrix( T1_TMATRIX *matrix)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxx *=-1.0;
+ matrix->cyx *=-1.0;
+ return( matrix);
+}
+
+
+/* Vertical mirroring */
+/* V-Mirror:
+ ( x11' x21' ) ( 1 0 ) ( x11 x21 ) ( x11 x21 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( 0 -1 ) ( x12 x22 ) ( -x12 -x22 )
+*/
+T1_TMATRIX *T1_MirrorVMatrix( T1_TMATRIX *matrix)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxy *=-1.0;
+ matrix->cyy *=-1.0;
+ return( matrix);
+
+}
+
+
+/* Horizontal shearing */
+/* H-Shearing:
+ ( x11' x21' ) ( 1 f ) ( x11 x21 ) ( x11+f*x12 x21+f*x22 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( 0 1 ) ( x12 x22 ) ( x12 x22 )
+*/
+T1_TMATRIX *T1_ShearHMatrix( T1_TMATRIX *matrix, double shear)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxx +=shear*matrix->cxy;
+ matrix->cyx +=shear*matrix->cyy;
+ return( matrix);
+
+}
+
+
+/* Vertical shearing */
+/* V-Shearing:
+ ( x11' x21' ) ( 1 0 ) ( x11 x21 ) ( x11 x21 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( f 1 ) ( x12 x22 ) ( x12+f*x11 x22+f*x21 )
+*/
+T1_TMATRIX *T1_ShearVMatrix( T1_TMATRIX *matrix, double shear)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxy +=shear*matrix->cxx;
+ matrix->cyy +=shear*matrix->cyx;
+ return( matrix);
+
+}
+
+
+/* Horizontal extension */
+/* Horizontal-Extension:
+ ( x11' x21' ) ( f 0 ) ( x11 x21 ) ( f*x11 f*x21 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( 0 1 ) ( x12 x22 ) ( x12 x22 )
+*/
+T1_TMATRIX *T1_ExtendHMatrix( T1_TMATRIX *matrix, double extent)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxx *=extent;
+ matrix->cyx *=extent;
+ return( matrix);
+
+}
+
+
+/* Vertical extension */
+/* Vertical-Extension:
+ ( x11' x21' ) ( 1 0 ) ( x11 x21 ) ( x11 x21 )
+ ( ) = ( ) * ( ) = ( )
+ ( x12' x22' ) ( 0 f ) ( x12 x22 ) ( f*x12 f*x22 )
+*/
+T1_TMATRIX *T1_ExtendVMatrix( T1_TMATRIX *matrix, double extent)
+{
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ matrix->cxy *=extent;
+ matrix->cyy *=extent;
+ return( matrix);
+
+}
+
+
+/* General transformation */
+/*
+ ( x11 x21 ) ( y11 y21 ) ( x11*y11+x21*y12 x11*y21+x21*y22 )
+ ( ) * ( ) = ( )
+ ( x12 x22 ) ( y12 y22 ) ( x12*y11+x22*y12 x12*y21+x22*y22 )
+*/
+T1_TMATRIX *T1_TransformMatrix( T1_TMATRIX *matrix,
+ double cxx, double cyx,
+ double cxy, double cyy)
+{
+ T1_TMATRIX tmat;
+
+ if (matrix==NULL){
+ if ((matrix=(T1_TMATRIX *)malloc( sizeof(T1_TMATRIX)))==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return( NULL);
+ }
+ matrix->cxx=1.0;
+ matrix->cyx=0.0;
+ matrix->cxy=0.0;
+ matrix->cyy=1.0;
+ }
+ memcpy( &tmat, matrix, sizeof(T1_TMATRIX));
+ matrix->cxx=cxx * tmat.cxx + cyx * tmat.cxy;
+ matrix->cyx=cxx * tmat.cyx + cyx * tmat.cyy;
+ matrix->cxy=cxy * tmat.cxx + cyy * tmat.cxy;
+ matrix->cyy=cxy * tmat.cyx + cyy * tmat.cyy;
+
+ return( matrix);
+}
+
+
+
+/* T1_StrokeFont(): Switch the font referenced by FontID to stroking
+ or filling. The stroked character will be cached and
+ filled characters are no longer cached and vice versa.
+ This is only allowed if no size dependent data exists.
+ Of course, the font must already have been loaded.
+ Returns 0 for success and -1 otherwise.
+ */
+int T1_StrokeFont( int FontID, int dostroke)
+{
+
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID( FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return -1;
+ }
+
+ /* Second, check whether size-dependent data exists: */
+ if ( pFontBase->pFontArray[FontID].pFontSizeDeps != NULL ) {
+ T1_errno = T1ERR_OP_NOT_PERMITTED;
+ return -1;
+ }
+
+ if ( dostroke != 0 ) {
+ pFontBase->pFontArray[FontID].info_flags |= RASTER_STROKED;
+ pFontBase->pFontArray[FontID].info_flags |= CACHE_STROKED;
+ }
+ else {
+ pFontBase->pFontArray[FontID].info_flags &= ~RASTER_STROKED;
+ pFontBase->pFontArray[FontID].info_flags &= ~CACHE_STROKED;
+ }
+
+
+ return 0;
+}
+
+
+
+/* T1_SetStrokeFlag(): Return the stroke flag for font FontID.
+ Return: 0 flag has been set
+ -1 flag could not be set
+*/
+int T1_SetStrokeFlag( int FontID)
+{
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID(FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return -1;
+ }
+
+ /* Set stroke flag to true */
+ pFontBase->pFontArray[FontID].info_flags |= RASTER_STROKED;
+
+ return 0;
+
+}
+
+
+
+/* T1_ClearStrokeFlag(): Reset the stroke flag for font FontID.
+ Return: 0 flag has been reset
+ -1 flag could not be reset
+*/
+int T1_ClearStrokeFlag( int FontID)
+{
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID(FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return -1;
+ }
+
+ /* Reset stroke flag */
+ pFontBase->pFontArray[FontID].info_flags &= ~RASTER_STROKED;
+
+ return 0;
+
+}
+
+
+
+/* T1_GetStrokeMode(): Return the stroke flag for font FontID.
+ Return: -1 if font is not loaded.
+ 0 if flag is reset,
+ 1 if stroking is enabled for this font,
+ 2 if stroked characters are cached,
+ 3 if stroking is enabled and stroked
+ characters are cached.
+*/
+int T1_GetStrokeMode( int FontID)
+{
+ int outval = 0;
+
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID( FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return -1;
+ }
+
+ if ( (pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) != 0 )
+ outval |= 0x02;
+
+ if ( (pFontBase->pFontArray[FontID].info_flags & RASTER_STROKED) != 0 )
+ outval |= 0x01;
+
+ return outval;
+
+}
+
+
+
+/* T1_SetStrokeWidth(): Set the penwidth used when stroking font FontID.
+ Return -1 If width could not be set.
+ 0 if width has been set.
+ */
+int T1_SetStrokeWidth( int FontID, float strokewidth)
+{
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID( FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return -1;
+ }
+
+ /* Second, check whether caching stroked characters is enabled
+ for this font and glyph data is already existing. In this case
+ the operation is forbidden, unless the previous non-zero value
+ is just restored! */
+ if ( ((pFontBase->pFontArray[FontID].info_flags & CACHE_STROKED) != 0) &&
+ (pFontBase->pFontArray[FontID].pFontSizeDeps != NULL) &&
+ (pFontBase->pFontArray[FontID].SavedStrokeWidth != strokewidth)
+ ) {
+ T1_errno = T1ERR_OP_NOT_PERMITTED;
+ return -1;
+ }
+
+ /* OK, accept stroke width after ensuring a numerically meaningful
+ value */
+ if ( strokewidth < 0.0f ) {
+ T1_errno = T1ERR_INVALID_PARAMETER;
+ return -1;
+ }
+
+ pFontBase->pFontArray[FontID].StrokeWidth = strokewidth;
+
+ if ( strokewidth != 0.0f )
+ pFontBase->pFontArray[FontID].SavedStrokeWidth = strokewidth;
+
+ return 0;
+
+}
+
+
+
+/* T1_GetStrokeWidth(): Get the penwidth used when stroking font FontID.
+ If 0.0 is returned, it might also indicate that the font is not loaded.
+*/
+float T1_GetStrokeWidth( int FontID)
+{
+ /* First, check for font residing in memory: */
+ if ( T1_CheckForFontID( FontID) != 1 ) {
+ T1_errno = T1ERR_INVALID_FONTID;
+ return 0.0f;
+ }
+
+ return pFontBase->pFontArray[FontID].StrokeWidth;
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.h
new file mode 100644
index 00000000000..1d8685b98a4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1trans.h
@@ -0,0 +1,89 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1trans.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-10-19
+ ----- Description: This file is part of the t1-library. It contains
+ definitions and declarations fort t1trans.c
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#ifdef T1TRANS_C
+
+int T1_ExtendFont( int FontID, double extend);
+int T1_SlantFont( int FontID, double slant);
+int T1_TransformFont( int FontID, T1_TMATRIX *matrix);
+double T1_GetExtend( int FontID);
+double T1_GetSlant( int FontID);
+T1_TMATRIX T1_GetTransform( int FontID);
+int T1_SetLinePosition( int FontID, int linetype, float value);
+int T1_SetLineThickness( int FontID, int linetype, float value);
+float T1_GetLinePosition( int FontID, int linetype);
+float T1_GetLineThickness( int FontID, int linetype);
+T1_TMATRIX *T1_RotateMatrix( T1_TMATRIX *matrix, double angle);
+T1_TMATRIX *T1_MirrorHMatrix( T1_TMATRIX *matrix);
+T1_TMATRIX *T1_MirrorVMatrix( T1_TMATRIX *matrix);
+T1_TMATRIX *T1_ShearHMatrix( T1_TMATRIX *matrix, double shear);
+T1_TMATRIX *T1_ShearVMatrix( T1_TMATRIX *matrix, double shear);
+T1_TMATRIX *T1_ExtendHMatrix( T1_TMATRIX *matrix, double extent);
+T1_TMATRIX *T1_ExtendVMatrix( T1_TMATRIX *matrix, double extent);
+T1_TMATRIX *T1_TransformMatrix( T1_TMATRIX *matrix,
+ double cxx, double cyx,
+ double cxy, double cyy);
+int T1_StrokeFont( int FontID, int dostroke);
+int T1_SetStrokeFlag( int FontID);
+int T1_ClearStrokeFlag( int FontID);
+int T1_GetStrokeMode( int FontID);
+int T1_SetStrokeWidth( int FontID, float strokewidth);
+float T1_GetStrokeWidth( int FontID);
+
+
+#else
+
+
+extern int T1_ExtendFont( int FontID, double extend);
+extern int T1_SlantFont( int FontID, double slant);
+extern int T1_TransformFont( int FontID, T1_TMATRIX *matrix);
+extern double T1_GetExtend( int FontID);
+extern double T1_GetSlant( int FontID);
+extern T1_TMATRIX T1_GetTransform( int FontID);
+extern int T1_SetLinePosition( int FontID, int linetype, float value);
+extern int T1_SetLineThickness( int FontID, int linetype, float value);
+extern float T1_GetLinePosition( int FontID, int linetype);
+extern float T1_GetLineThickness( int FontID, int linetype);
+extern T1_TMATRIX *T1_RotateMatrix( T1_TMATRIX *matrix, double angle);
+extern T1_TMATRIX *T1_MirrorHMatrix( T1_TMATRIX *matrix);
+extern T1_TMATRIX *T1_MirrorVMatrix( T1_TMATRIX *matrix);
+extern T1_TMATRIX *T1_ShearHMatrix( T1_TMATRIX *matrix, double shear);
+extern T1_TMATRIX *T1_ShearVMatrix( T1_TMATRIX *matrix, double shear);
+extern T1_TMATRIX *T1_ExtendHMatrix( T1_TMATRIX *matrix, double extent);
+extern T1_TMATRIX *T1_ExtendVMatrix( T1_TMATRIX *matrix, double extent);
+extern T1_TMATRIX *T1_TransformMatrix( T1_TMATRIX *matrix,
+ double cxx, double cyx,
+ double cxy, double cyy);
+extern int T1_StrokeFont( int FontID, int dostroke);
+extern int T1_SetStrokeFlag( int FontID);
+extern int T1_ClearStrokeFlag( int FontID);
+extern int T1_GetStrokeMode( int FontID);
+extern int T1_SetStrokeWidth( int FontID, float strokewidth);
+extern float T1_GetStrokeWidth( int FontID);
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1types.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1types.h
new file mode 100644
index 00000000000..20a4641343c
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1types.h
@@ -0,0 +1,225 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1types.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2004-12-09
+ ----- Description: This file is part of the t1-library. It contains
+ type definitions used by the t1-library.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2004.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#define T1TYPES_H
+
+#include "sysconf.h"
+
+typedef struct
+{
+ int flags;
+ int chars;
+ int hkern;
+} METRICS_ENTRY;
+
+
+typedef struct
+{
+ char *pFontFileName; /* Pointer to the font's filename */
+ char *pAfmFileName; /* Pointer to the afm filename, IFF set explicitly */
+ FontInfo *pAFMData; /* A pointer to a struct which gives access to all
+ the data contained in the .afm-file. If this
+ pointer is NULL, no .afm-file had been found.
+ => There's no advanced info on the font available.
+ */
+ psfont *pType1Data; /* A pointer to a struct giving access to all
+ information contained in the .pfa/.pfb-file. This
+ is needed! */
+ int *pEncMap; /* For fast mapping from charnames to encoding
+ indices */
+ METRICS_ENTRY *pKernMap; /* dito */
+ int KernMapSize;
+ char **pFontEnc; /* This is the pointer to the encoding array
+ associated with that particular font. If
+ FontEnc=NULL, it means the internal
+ (fontspecific) encoding is to be used. */
+ char *vm_base; /* The base address of the virtual memory area for this
+ font. It must be stored in order to be able to realloc
+ and free those memory areas later. */
+ void *pFontSizeDeps; /* This one points to a linked list of structures
+ which store all font size dependent data. */
+ double FontMatrix[4]; /* Two matrices which store the font matrix and special
+ Transformation to be applied, such as slant and
+ extend or probably some rotation. */
+ double FontTransform[4];
+ float slant; /* A slant factor for the font */
+ float extend; /* A extension factor for the font */
+ float UndrLnPos; /* Parameters for ~lining rules */
+ float UndrLnThick;
+ float OvrLnPos;
+ float OvrLnThick;
+ float OvrStrkPos;
+ float OvrStrkThick;
+ float StrokeWidth;
+ float SavedStrokeWidth;
+
+ unsigned short physical; /* This entry is used to decide, whether a
+ font is associated with an own physical
+ fontfile, or whether it has been created
+ as a "logical" font by copying another
+ "physical" font. */
+ unsigned short refcount; /* At load time this counter is set to 1. Every
+ time, a T1_CopyFont() is executed on this font,
+ this counter is incremented by 1. This gives
+ the possibility to decide whether a physical
+ font is used by some logical font. */
+ short space_position; /* The position where "space" is encoded, is saved
+ in this entry. The space character needs special
+ treatment. Saving its position here yields faster
+ execution during rastering of strings with a
+ user-supplied space-offset! */
+ short info_flags; /* Here some info may be stored */
+} FONTPRIVATE;
+
+
+/* A structure representing a matrix */
+typedef struct
+{
+ double cxx;
+ double cyx;
+ double cxy;
+ double cyy;
+} T1_TMATRIX;
+
+
+/* Following struct is used for storing all information for a particular
+ rendered character glyph */
+typedef struct
+{
+ char *bits; /* A pointer to the characters local bitmap */
+ struct /* A struct containing diverse metric information */
+ {
+ int ascent;
+ int descent;
+ int leftSideBearing;
+ int rightSideBearing;
+ int advanceX;
+ int advanceY;
+ } metrics;
+ void *pFontCacheInfo;
+ unsigned long bpp; /* The number of bits that represent 1 pixel */
+} GLYPH;
+
+
+
+/* Next comes the struct declaration for FontSizeDeps, which stores size
+ specific data of a font */
+typedef struct
+{
+ GLYPH *pFontCache; /* Pointer to the cache area of this
+ font at this size */
+ void *pNextFontSizeDeps; /* A pointer to the next size's
+ FontSizeDeps-structure. */
+ void *pPrevFontSizeDeps; /* A pointer to the previous size's
+ FontSizeDeps-structure or NULL if
+ the current is the first. */
+ struct XYspace *pCharSpaceLocal; /* This is a scaled version of the
+ global version for this font. */
+ float size; /* The desired size, to be specified
+ in bp's. */
+ int antialias; /* Switch for marking the current size
+ antialiased */
+} FONTSIZEDEPS;
+
+
+
+/* A data type that makes most important information available to user. */
+typedef struct
+{
+ int width; /* The glyph's width */
+ BBox bbox; /* The glyph's bounding box */
+ int numchars; /* The number of characters in the glyph (string) */
+ int *charpos; /* A pointer to an integer array were the horizontal
+ positions in (afm units) of the individual
+ characters in the string are stored */
+} METRICSINFO;
+
+
+/* Handling of outlines: These definitions decouple from the type 1 rasterizers
+ def's and make the necessary stuff available to end users */
+
+#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */
+/* From/to conversion of pels/fractpels */
+#define T1_TOPATHPOINT(p) (((T1_AA_TYPE32)p)<<FRACTBITS)
+#define PPHALF (1<<(FRACTBITS-1))
+#define T1_NEARESTPOINT(fp) (((fp)+PPHALF)>>FRACTBITS)
+
+/* A fractional point */
+typedef struct {
+ T1_AA_TYPE32 x;
+ T1_AA_TYPE32 y;
+} T1_PATHPOINT;
+
+
+/* A straight outline segment, stroked or not stroked */
+typedef struct pathsegment {
+ char type; /* type of segment (line or move) */
+ unsigned char flag; /* type1 rasterizer internal stuff */
+ short references; /* type1 rasterizer internal stuff */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* index to device context */
+ struct pathsegment *link; /* pointer to next structure in linked list */
+ struct pathsegment *last; /* pointer to last structure in list */
+ T1_PATHPOINT dest; /* relative ending location of path segment */
+} T1_PATHSEGMENT;
+
+/* A third order bezier segment */
+typedef struct bezierpathsegment {
+ char type; /* type of segment (bezier) */
+ unsigned char flag; /* type1 rasterizer internal stuff */
+ short references; /* type1 rasterizer internal stuff */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ T1_PATHSEGMENT *link; /* as with any 'segment' type */
+ T1_PATHSEGMENT *last; /* as with any 'segment' type */
+ T1_PATHPOINT dest; /* ending point (D) */
+ T1_PATHPOINT B; /* control point B */
+ T1_PATHPOINT C; /* control point C */
+} T1_BEZIERSEGMENT;
+
+typedef T1_PATHSEGMENT T1_OUTLINE;
+
+
+/* Two structures for handling composite character data */
+/* One structure for each symbol of the composite character */
+typedef struct
+{
+ int piece; /* the index of the current symbol */
+ int deltax; /* horizontal displacement of current symbol in CS */
+ int deltay; /* vertical displacement of current symbol in CS */
+} T1_COMP_PIECE;
+
+/* This one defines the composite character, the number of pieces and how to
+ access their data. */
+typedef struct
+{
+ int compchar; /* the base character in the current encoding */
+ int numPieces; /* the number of defined pieces including the base char */
+ T1_COMP_PIECE *pieces; /* a pointer to the pieces' information */
+} T1_COMP_CHAR_INFO;
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.c
new file mode 100644
index 00000000000..d5a7ef525f7
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.c
@@ -0,0 +1,1168 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1x11.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2005-05-01
+ ----- Description: This file is part of the t1-library. It contains
+ functions for generating glyphs with data in
+ X11-Pixmap format.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2005.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#define T1X11_C
+
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+#include "../type1/types.h"
+#include "parseAFM.h"
+#include "../type1/objects.h"
+#include "../type1/spaces.h"
+#include "../type1/util.h"
+#include "../type1/fontfcn.h"
+#include "../type1/paths.h"
+#include "../type1/regions.h"
+
+#include "t1types.h"
+#include "t1extern.h"
+#include "t1set.h"
+#include "t1aaset.h"
+#include "t1load.h"
+#include "t1finfo.h"
+#include "t1misc.h"
+#include "t1x11.h"
+#include "t1base.h"
+
+
+
+#define T1GCMASK GCForeground | GCBackground
+
+/* As a fall back */
+#ifndef T1_AA_TYPE16
+#define T1_AA_TYPE16 short
+#endif
+#ifndef T1_AA_TYPE32
+#define T1_AA_TYPE32 int
+#endif
+
+
+
+/* The three important X11 parameters t1lib has to deal with: */
+static Display *T1_display=NULL; /* Must be accessible from t1delete.c */
+static Visual *T1_visual=NULL;
+static Colormap T1_colormap;
+static unsigned int T1_depth=0;
+static int T1_byte_order;
+static int lastlevel=0;
+static unsigned long oldfg_n=0, oldbg_n=0, oldfg_l=0, oldbg_l=0;
+static unsigned long oldfg_h=0, oldbg_h=0, oldfg=0, oldbg=0;
+
+
+extern int T1aa_SmartOn; /* from t1aaset.c */
+extern float T1aa_smartlimit1;
+extern float T1aa_smartlimit2;
+
+
+
+static XColor aacolors[AAMAXPLANES];
+static unsigned long aapixels[AAMAXPLANES];
+
+
+/* The following parameter determines whether t1lib will use logical
+ positioning of chars and string (place the origin at specified
+ destination-point) or absolute positioning with respect to the
+ origin (upper left corner) of the generated bitmap/pixmap. */
+static int T1_lposition=1;
+
+
+
+/* T1_SetX11Params(): Set X11-parameters which t1lib has to know in order
+ to properly generate pixmaps from characters */
+int T1_SetX11Params( Display *display,
+ Visual *visual,
+ unsigned int depth,
+ Colormap colormap)
+{
+
+ T1_display =display;
+ T1_visual =visual;
+ T1_depth =depth;
+ T1_colormap =colormap;
+
+ if (T1_CheckEndian()==0)
+ T1_byte_order=0;
+ else
+ T1_byte_order=1;
+
+ /* For bug hunting: */
+ if (ImageByteOrder( T1_display)==0)
+ T1_PrintLog( "T1_SetX11Params()",
+ "X-Server uses Little Endian data representation",
+ T1LOG_DEBUG);
+ else
+ T1_PrintLog( "T1_SetX11Params()",
+ "X-Server uses Big Endian data representation",
+ T1LOG_DEBUG);
+
+ return(0);
+}
+
+
+
+/* T1_SetCharX(): Generate an object of type GLYPH, i.e, a glyph with
+ a pixmap ID instead of a pointer to a bitmap: */
+
+GLYPH *T1_SetCharX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+{
+ GLYPH *pglyph;
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width;
+ Pixmap clipmask=0;
+ int opaque;
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+
+ if ((pglyph=T1_SetChar( FontID, charcode, size, transform))==NULL){
+ T1_PrintLog( "T1_SetCharX()",
+ "T1_SetChar() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)pglyph->bits,
+ PAD(width, pFontBase->bitmap_pad),
+ height
+ );
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+ }
+
+ XCopyPlane( T1_display, clipmask, d, gc, 0, 0,
+ width, height, x_dest, y_dest, 0x01);
+
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+
+/* T1_SetStringX(...): Draw a string of characters into an X11 drawable */
+GLYPH *T1_SetStringX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform)
+{
+ GLYPH *pglyph;
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width;
+ Pixmap clipmask=0;
+ int opaque;
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+
+ if ((pglyph=T1_SetString( FontID, string, len,
+ spaceoff, modflag, size,
+ transform))==NULL){
+ T1_PrintLog( "T1_SetStringX()",
+ "T1_SetString() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)pglyph->bits,
+ PAD(width, pFontBase->bitmap_pad), /* width */
+ height
+ );
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+ }
+
+ XCopyPlane( T1_display, clipmask, d, gc, 0, 0,
+ width, height, x_dest, y_dest, 0x01);
+
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+/* T1_SetRectX(): Draw a rectangle into an x11 drawable */
+
+GLYPH *T1_SetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float rwidth, float rheight,
+ T1_TMATRIX *transform)
+{
+ GLYPH *pglyph;
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width;
+ Pixmap clipmask=0;
+ int opaque;
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+
+ if ((pglyph=T1_SetRect( FontID, size, rwidth, rheight, transform))==NULL){
+ T1_PrintLog( "T1_SetRectrX()",
+ "T1_SetRect() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)pglyph->bits,
+ PAD(width, pFontBase->bitmap_pad),
+ height
+ );
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+ }
+
+ XCopyPlane( T1_display, clipmask, d, gc, 0, 0,
+ width, height, x_dest, y_dest, 0x01);
+
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+
+/* T1_AASetCharX(): Generate an object of type GLYPH, i.e, a glyph with
+ a pixmap ID instead of a pointer to a bitmap: */
+GLYPH *T1_AASetCharX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform)
+{
+ int j, k;
+
+ GLYPH *pglyph;
+ XImage *ximage;
+
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width, width_pad;
+
+ XGCValues xgcvalues;
+ static unsigned long fg, bg;
+
+ Pixmap clipmask=0;
+ int clipmask_h, clipmask_v, line_off;
+ char *clipmask_ptr;
+
+ int opaque;
+
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+ xglyph.bpp=T1_depth;
+
+ /* In order to be able to contruct the pixmap we need to know
+ foreground and background color as well the copy function */
+ XGetGCValues( T1_display, gc, T1GCMASK, &xgcvalues);
+ fg=xgcvalues.foreground;
+ bg=xgcvalues.background;
+
+
+ /* At this point we must compute the colors that are needed to do
+ antialiasing between fore- and background. The following function
+ fills the static aacolors */
+ if (T1aa_SmartOn==0)
+ j=T1_AAGetLevel();
+ else if (size>=T1aa_smartlimit2)
+ j=1;
+ else if (size>=T1aa_smartlimit1)
+ j=2;
+ else
+ j=4;
+ if ( j!=lastlevel || fg!=oldfg || bg!=oldbg ){
+ switch ( j){
+ case 1:
+ if ( fg!=oldfg_n || bg!=oldbg_n){
+ oldfg_n=fg;
+ oldbg_n=bg;
+ /* computing colors is not necessary here */
+ T1_AANSetGrayValues( bg, fg);
+ }
+ break;
+ case 2:
+ if ( fg!=oldfg_l || bg!=oldbg_l){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_l=fg;
+ oldbg_l=bg;
+ T1_AASetGrayValues(aapixels[0], /* white */
+ aapixels[4],
+ aapixels[8],
+ aapixels[12],
+ aapixels[16] ); /* black */
+ }
+ break;
+ case 4:
+ if ( fg!=oldfg_h || bg!=oldbg_h){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_h=fg;
+ oldbg_h=bg;
+ T1_AAHSetGrayValues( aapixels);
+ }
+ break;
+ }
+ lastlevel=j;
+ oldfg=fg;
+ oldbg=bg;
+ }
+
+ if ((pglyph=T1_AASetChar( FontID, charcode, size,
+ transform))==NULL){
+ T1_PrintLog( "T1_AASetCharX()",
+ "T1_AASetChar() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ clipmask_v=height;
+ clipmask_h=width;
+ width_pad=PAD(width*T1aa_bpp, pFontBase->bitmap_pad)/T1aa_bpp;
+ clipmask_ptr=(char *)calloc((PAD(clipmask_h, 8)>>3) * clipmask_v, sizeof( char));
+ if (clipmask_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ /* Note: We pad the clipmask always to byte boundary */
+ if (pglyph->bpp==8)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((char *)(pglyph->bits))[k*width_pad+j]!=bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else if (pglyph->bpp==16)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE16 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE16)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE32 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE32)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)clipmask_ptr,
+ width,
+ height
+ );
+ free( clipmask_ptr);
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+
+ }
+ ximage=XCreateImage( T1_display,
+ T1_visual,
+ T1_depth,
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ (char *)pglyph->bits,
+ width,
+ height,
+ pFontBase->bitmap_pad,
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ ximage->byte_order=T1_byte_order;
+ XPutImage(T1_display,
+ d,
+ gc,
+ ximage,
+ 0,
+ 0,
+ x_dest,
+ y_dest,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+
+/* T1_AASetStringX(...): Draw a string of characters into an X11 drawable */
+GLYPH *T1_AASetStringX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag, float size,
+ T1_TMATRIX *transform)
+{
+ int j, k;
+
+ GLYPH *pglyph;
+ XImage *ximage;
+
+
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width, width_pad;
+
+ XGCValues xgcvalues;
+ static unsigned long fg, bg;
+
+
+ Pixmap clipmask=0;
+ int clipmask_h, clipmask_v, line_off;
+ char *clipmask_ptr;
+
+ int opaque;
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+
+ /* In order to be able to contruct the pixmap we need to know
+ foreground and background color as well the copy function */
+ XGetGCValues( T1_display, gc, T1GCMASK, &xgcvalues);
+ fg=xgcvalues.foreground;
+ bg=xgcvalues.background;
+
+ xglyph.bpp=T1_depth;
+
+ /* At this point we must compute the colors that are needed to do
+ antialiasing between fore- and background. The following function
+ fills the static aacolors */
+ if (T1aa_SmartOn==0)
+ j=T1_AAGetLevel();
+ else if (size>=T1aa_smartlimit2)
+ j=1;
+ else if (size>=T1aa_smartlimit1)
+ j=2;
+ else
+ j=4;
+ if ( j!=lastlevel || fg!=oldfg || bg!=oldbg ){
+ switch ( j){
+ case 1:
+ if ( fg!=oldfg_n || bg!=oldbg_n){
+ oldfg_n=fg;
+ oldbg_n=bg;
+ /* computing colors is not necessary here */
+ T1_AANSetGrayValues( bg, fg);
+ }
+ break;
+ case 2:
+ if ( fg!=oldfg_l || bg!=oldbg_l){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_l=fg;
+ oldbg_l=bg;
+ T1_AASetGrayValues(aapixels[0], /* white */
+ aapixels[4],
+ aapixels[8],
+ aapixels[12],
+ aapixels[16] ); /* black */
+ }
+ break;
+ case 4:
+ if ( fg!=oldfg_h || bg!=oldbg_h){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_h=fg;
+ oldbg_h=bg;
+ T1_AAHSetGrayValues( aapixels);
+ }
+ break;
+ }
+ lastlevel=j;
+ oldfg=fg;
+ oldbg=bg;
+ }
+
+
+ if ((pglyph=T1_AASetString( FontID, string, len,
+ spaceoff, modflag, size,
+ transform))==NULL){
+ T1_PrintLog( "T1_AASetStringX()",
+ "T1_AASetString() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ clipmask_v=height;
+ clipmask_h=width;
+ width_pad=PAD(width*T1aa_bpp, pFontBase->bitmap_pad)/T1aa_bpp;
+ clipmask_ptr=(char *)calloc((PAD(clipmask_h, 8)>>3) * clipmask_v, sizeof( char));
+ if (clipmask_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ /* Note: We pad the clipmask always to byte boundary */
+ if (pglyph->bpp==8)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((char *)(pglyph->bits))[k*width_pad+j]!=bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else if (pglyph->bpp==16)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE16 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE16)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE32 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE32)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)clipmask_ptr,
+ width,
+ height
+ );
+ free( clipmask_ptr);
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+
+ }
+ ximage=XCreateImage( T1_display,
+ T1_visual,
+ T1_depth,
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ (char *)pglyph->bits,
+ width,
+ height,
+ pFontBase->bitmap_pad, /* lines padded to bytes */
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ ximage->byte_order=T1_byte_order;
+ XPutImage(T1_display,
+ d,
+ gc,
+ ximage,
+ 0,
+ 0,
+ x_dest,
+ y_dest,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+
+/* T1_AASetCharX(): Draw a rectangle into an x11 drawable */
+GLYPH *T1_AASetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float rwidth, float rheight,
+ T1_TMATRIX *transform)
+{
+ int j, k;
+
+ GLYPH *pglyph;
+ XImage *ximage;
+
+ static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
+
+ int height, width, width_pad;
+
+ XGCValues xgcvalues;
+ static unsigned long fg, bg;
+
+ Pixmap clipmask=0;
+ int clipmask_h, clipmask_v, line_off;
+ char *clipmask_ptr;
+
+ int opaque;
+
+
+
+ xglyph.metrics.leftSideBearing=0;
+ xglyph.metrics.rightSideBearing=0;
+ xglyph.metrics.advanceX=0;
+ xglyph.metrics.advanceY=0;
+ xglyph.metrics.ascent=0;
+ xglyph.metrics.descent=0;
+ xglyph.pFontCacheInfo=NULL;
+
+
+ opaque=mode;
+
+ xglyph.bpp=T1_depth;
+
+ /* In order to be able to contruct the pixmap we need to know
+ foreground and background color as well the copy function */
+ XGetGCValues( T1_display, gc, T1GCMASK, &xgcvalues);
+ fg=xgcvalues.foreground;
+ bg=xgcvalues.background;
+
+
+ /* At this point we must compute the colors that are needed to do
+ antialiasing between fore- and background. The following function
+ fills the static aacolors */
+ if (T1aa_SmartOn==0)
+ j=T1_AAGetLevel();
+ else if (size>=T1aa_smartlimit2)
+ j=1;
+ else if (size>=T1aa_smartlimit1)
+ j=2;
+ else
+ j=4;
+ if ( j!=lastlevel || fg!=oldfg || bg!=oldbg ){
+ switch ( j){
+ case 1:
+ if ( fg!=oldfg_n || bg!=oldbg_n){
+ oldfg_n=fg;
+ oldbg_n=bg;
+ /* computing colors is not necessary here */
+ T1_AANSetGrayValues( bg, fg);
+ }
+ break;
+ case 2:
+ if ( fg!=oldfg_l || bg!=oldbg_l){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_l=fg;
+ oldbg_l=bg;
+ T1_AASetGrayValues(aapixels[0], /* white */
+ aapixels[4],
+ aapixels[8],
+ aapixels[12],
+ aapixels[16] ); /* black */
+ }
+ break;
+ case 4:
+ if ( fg!=oldfg_h || bg!=oldbg_h){
+ T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
+ /*~derekn*/
+ /* If fg=bg, the clipmask will be messed up; in this case */
+ /* we can arbitrarily change bg to get a correct clipmask. */
+ if (opaque == 0 && fg == bg)
+ aapixels[0] = bg = (fg > 0) ? fg - 1 : fg + 1;
+ oldfg_h=fg;
+ oldbg_h=bg;
+ T1_AAHSetGrayValues( aapixels);
+ }
+ break;
+ }
+ lastlevel=j;
+ oldfg=fg;
+ oldbg=bg;
+ }
+
+ if ((pglyph=T1_AASetRect( FontID, size, rwidth, rheight, transform))==NULL){
+ T1_PrintLog( "T1_AASetRectX()",
+ "T1_AASetRect() returned NULL-pointer!",
+ T1LOG_WARNING);
+ return(NULL);
+ }
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ xglyph=*pglyph;
+ return( &xglyph);
+ }
+
+ width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
+ height=pglyph->metrics.ascent-pglyph->metrics.descent;
+
+
+ /* Correct position */
+ if (T1_lposition){
+ x_dest += pglyph->metrics.leftSideBearing;
+ y_dest -= pglyph->metrics.ascent;
+ }
+
+ if (opaque==0){
+ clipmask_v=height;
+ clipmask_h=width;
+ width_pad=PAD(width*T1aa_bpp, pFontBase->bitmap_pad)/T1aa_bpp;
+ clipmask_ptr=(char *)calloc((PAD(clipmask_h, 8)>>3) * clipmask_v, sizeof( char));
+ if (clipmask_ptr==NULL){
+ T1_errno=T1ERR_ALLOC_MEM;
+ return(NULL);
+ }
+ /* Note: We pad the clipmask always to byte boundary */
+ if (pglyph->bpp==8)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((char *)(pglyph->bits))[k*width_pad+j]!=bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else if (pglyph->bpp==16)
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE16 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE16)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+ else
+ for ( k=0; k<clipmask_v; k++){
+ line_off=k*(PAD(clipmask_h, 8)>>3);
+ for (j=0; j<clipmask_h; j++){
+ if (((T1_AA_TYPE32 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE32)bg)
+ clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
+ }
+ }
+
+ clipmask=XCreateBitmapFromData( T1_display,
+ d,
+ (char *)clipmask_ptr,
+ width,
+ height
+ );
+ free( clipmask_ptr);
+ XSetClipMask(T1_display, gc, clipmask);
+ XSetClipOrigin(T1_display, gc, x_dest, y_dest);
+
+ }
+ ximage=XCreateImage( T1_display,
+ T1_visual,
+ T1_depth,
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ (char *)pglyph->bits,
+ width,
+ height,
+ pFontBase->bitmap_pad,
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ ximage->byte_order=T1_byte_order;
+ XPutImage(T1_display,
+ d,
+ gc,
+ ximage,
+ 0,
+ 0,
+ x_dest,
+ y_dest,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ if (clipmask){
+ XFreePixmap( T1_display, clipmask);
+ clipmask=0;
+ XSetClipMask(T1_display, gc, None);
+ XSetClipOrigin(T1_display, gc, 0, 0);
+ }
+
+ pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+ xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
+ xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
+ xglyph.metrics.advanceX=pglyph->metrics.advanceX;
+ xglyph.metrics.advanceY=pglyph->metrics.advanceY;
+ xglyph.metrics.ascent=pglyph->metrics.ascent;
+ xglyph.metrics.descent=pglyph->metrics.descent;
+ xglyph.bpp=pglyph->bpp;
+
+ return( &xglyph);
+
+
+}
+
+
+
+/* T1_ComputeAAColorsX(): Compute the antialiasing colors in dependency
+ of foreground and background */
+int T1_ComputeAAColorsX( unsigned long fg, unsigned long bg, int nolevels)
+{
+
+ static unsigned long last_fg;
+ static unsigned long last_bg;
+ long delta_red, delta_green, delta_blue;
+ int i;
+ int nocolors=0;
+
+
+ aacolors[0].pixel=bg;
+ aacolors[nolevels-1].pixel=fg;
+
+ if ((fg==last_fg)&&(bg==last_bg))
+ return(nocolors);
+
+ /* Get RGB values for fore- and background */
+ XQueryColor( T1_display, T1_colormap, &aacolors[0]);
+ XQueryColor( T1_display, T1_colormap, &aacolors[nolevels-1]);
+ delta_red = (aacolors[nolevels-1].red - aacolors[0].red)/(nolevels-1);
+ delta_green = (aacolors[nolevels-1].green - aacolors[0].green)/(nolevels-1);
+ delta_blue = (aacolors[nolevels-1].blue - aacolors[0].blue)/(nolevels-1);
+ aapixels[0]=aacolors[0].pixel;
+ aapixels[nolevels-1]=aacolors[nolevels-1].pixel;
+
+ for (i=1; i<nolevels-1; i++){
+ aacolors[i].red = aacolors[0].red + i*delta_red;
+ aacolors[i].green = aacolors[0].green + i*delta_green;
+ aacolors[i].blue = aacolors[0].blue + i*delta_blue;
+ aacolors[i].flags = DoRed | DoGreen | DoBlue;
+ aacolors[i].pad = aacolors[0].pad;
+ /* Allocate color in current palette */
+ if (XAllocColor( T1_display, T1_colormap, &aacolors[i])!=0){
+ aapixels[i]=aacolors[i].pixel;
+ nocolors++;
+ }
+ }
+
+ return(nocolors);
+
+}
+
+
+
+/* Set the positioning switch */
+void T1_LogicalPositionX( int pos_switch)
+{
+ if (pos_switch)
+ T1_lposition=1;
+ else
+ T1_lposition=0;
+ return;
+}
+
+
+
+XImage *T1_XImageFromGlyph( GLYPH *pglyph)
+{
+ XImage *ximage;
+
+ /* Check for empty bitmap */
+ if (pglyph->bits==NULL) {
+ T1_errno=T1ERR_INVALID_PARAMETER;
+ return( NULL);
+ }
+
+ if (pglyph->bpp==1) { /* we have a bitmap glyph */
+ ximage=XCreateImage( T1_display,
+ T1_visual,
+ 1,
+ XYBitmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ (char *)pglyph->bits,
+ pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing,
+ pglyph->metrics.ascent-pglyph->metrics.descent,
+ pFontBase->bitmap_pad,
+ 0 /* number of bytes per line */
+ );
+ }
+ else { /* we have an anztialiased glyph */
+ ximage=XCreateImage( T1_display,
+ T1_visual,
+ T1_depth,
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ (char *)pglyph->bits,
+ pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing,
+ pglyph->metrics.ascent-pglyph->metrics.descent,
+ pFontBase->bitmap_pad,
+ 0 /* number of bytes per line */
+ );
+ }
+
+ if (ximage==NULL) {
+ T1_errno=T1ERR_X11;
+ return( NULL);
+ }
+ ximage->byte_order=T1_byte_order; /* Set t1lib´s byteorder */
+
+ return( ximage);
+
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.h
new file mode 100644
index 00000000000..e6413085c1e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/t1lib/t1x11.h
@@ -0,0 +1,103 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1x11.h
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-01-02
+ ----- Description: This file is part of the t1-library. It contains
+ definitions and declarations for t1x11.c.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+#include <X11/Xlib.h>
+
+#ifdef T1X11_C
+
+int T1_SetX11Params( Display *display,
+ Visual *visual,
+ unsigned int depth,
+ Colormap colormap);
+GLYPH *T1_SetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_SetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_SetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+GLYPH *T1_AASetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_AASetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+GLYPH *T1_AASetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+int T1_ComputeAAColorsX( unsigned long fg,
+ unsigned long bg,
+ int nolevels);
+int T1_GetDepthOfDrawable( Drawable drawable);
+void T1_LogicalPositionX( int pos_switch);
+
+
+#else
+
+extern Display *T1_display;
+
+extern int T1_SetX11Params( Display *display,
+ Visual *visual,
+ unsigned int depth,
+ Colormap colormap);
+extern GLYPH *T1_SetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_SetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern GLYPH *T1_AASetCharX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char charcode,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetStringX( Drawable d, GC gc, int mode, int x, int y,
+ int FontID, char *string, int len,
+ long spaceoff, int modflag,
+ float size, T1_TMATRIX *transform);
+extern GLYPH *T1_AASetRectX( Drawable d, GC gc, int mode, int x_dest, int y_dest,
+ int FontID, float size,
+ float width, float height,
+ T1_TMATRIX *transform);
+extern int T1_ComputeAAColorsX( unsigned long fg,
+ unsigned long bg,
+ int nolevels);
+extern int T1_GetDepthOfDrawable( Drawable drawable);
+extern void T1_LogicalPositionX( int pos_switch);
+
+
+#endif
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/.dependencies b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/.dependencies
new file mode 100644
index 00000000000..117efab1c59
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/.dependencies
@@ -0,0 +1,28 @@
+arith.lo: arith.c types.h objects.h spaces.h arith.h
+bstring.lo: bstring.c
+curves.lo: curves.c types.h objects.h spaces.h paths.h regions.h \
+ curves.h lines.h arith.h
+fontfcn.lo: fontfcn.c t1imager.h types.h fontmisc.h util.h fontfcn.h \
+ paths_rmz.h spaces_rmz.h ../t1lib/parseAFM.h ../t1lib/t1types.h \
+ ../t1lib/sysconf.h ../t1lib/t1extern.h ../t1lib/t1misc.h \
+ ../t1lib/t1base.h ../t1lib/t1finfo.h
+hints.lo: hints.c types.h objects.h spaces.h paths.h regions.h hints.h
+lines.lo: lines.c types.h objects.h spaces.h paths.h regions.h lines.h
+objects.lo: objects.c types.h objects.h spaces.h paths.h regions.h \
+ fonts.h pictures.h strokes.h cluts.h
+paths.lo: paths.c types.h objects.h spaces.h paths.h regions.h fonts.h \
+ pictures.h strokes.h trig.h
+regions.lo: regions.c types.h objects.h spaces.h paths.h regions.h \
+ curves.h lines.h pictures.h fonts.h hints.h strokes.h
+scanfont.lo: scanfont.c t1stdio.h types.h util.h token.h fontfcn.h \
+ blues.h ../t1lib/t1misc.h
+spaces.lo: spaces.c types.h objects.h spaces.h paths.h pictures.h \
+ fonts.h arith.h trig.h
+t1io.lo: t1io.c t1stdio.h types.h t1hdigit.h
+t1snap.lo: t1snap.c objects.h types.h spaces.h paths.h
+t1stub.lo: t1stub.c objects.h types.h
+token.lo: token.c types.h t1stdio.h util.h digit.h token.h tokst.h \
+ hdigit.h
+type1.lo: type1.c types.h objects.h spaces.h paths.h fonts.h pictures.h \
+ util.h fontfcn.h blues.h
+util.lo: util.c types.h util.h fontmisc.h
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/CHANGES b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/CHANGES
new file mode 100644
index 00000000000..25e772128b0
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/CHANGES
@@ -0,0 +1,71 @@
+This are the sources as I have found them on the X11R5 distribution. In
+order to use them for my purpose (ps2pk: conversion tool for Type1 fonts to
+packed TeX fonts) a number of changes were needed (see Changelog).
+
+--Piet
+
+internet: rcpt@urc.tue.nl | Piet Tutelaers
+bitnet: rcpt@heitue5.BITNET | Computer Center Room RC 1.90
+phone: +31 (0)40 474541 | Eindhoven University of Technology
+fax: +31 (0)40 434438 | P.O. Box 513, 5600 MB Eindhoven, NL
+
+Changelog (the main-line):
+--------------------------
+92-02: Start of ps2pk project
+ - decoupling Type1 library from X11 (changes in t1intf.h + t1funcs.h;
+ added Xstuff.h to replace X header files)
+ - user definable encoding schemes (removed hardwired ISOLatin1 and
+ Symbol encodings from t1funcs.c and replaced by encoding paramater
+ in Type1OpenScalable)
+92-03: First release 1.0 (pre-release)
+92-04: - added expansion and slanting features as suggested by Lee
+ Hetherington (changes in spaces.c, t1funcs.c)
+ - changed t1test.c in order to test above features; added ISOLatin1
+ encoding vector.
+ - README2 replaced by CHANGES (this file)
+ - MSDOS concession (thanks to Sebastian Rahtz): renamed
+ fontfilest.h to ffilest.h so it does not clash with fontfile.h
+ (affects: fontfilest.h (->ffilest.h), t1funcs.c, t1info.c and
+ t1test.c).
+ - MSDOS concession: all file extensions .c.orig and .h.orig renamed
+ to .crg respectivally .hrg
+ - patch to handle /negationslash and /mapsto from LucidaMath-Symbol
+ correctly in t1funcs.c (ILH: Lee Hetherington).
+92-05: AMIGA/Aztec:
+ - added type1.ami (contains order of objects in library)
+ - added Makefile.ami
+ - added bstring.c (contains a bzero())
+92-05: - fixed a reference to a NULL pointer in t1info.c
+ - more verbose error messages in type1 library (NDW: Norman Walsh)
+ - changed memory heuristic in type1 library from static (one chunk)
+ into dynamic (up to a maximum of 10 chunks). This was needed for
+ big fonts like daysrib.pfa (reported by Norman Walsh).
+ (Changes in t1funcs.c and t1malloc.c)
+ - added Makefile.tcc for MSDOS/Turbo C, removed Makefile.dos
+92-06: - added Makefile.djg for MSDOS/GCC 386 (djgpp)
+ - fixed bug in t1io.c so MSDOS can read its own .pfb format
+92-08: - fixed alligment problem for machines with wordlength other than 32
+ bits (patch in util.c). Reported by J"urgen Marenda
+ <marenda@ford.uni-koblenz.de> for DataGeneral AViiON (Motorola
+ M88k machine)
+ - The type1 library did not render Oblique fonts correctly.
+ Erik Schenk <schenk@cpsc.ucalgary.ca> provided a patch for
+ this problem (patches in fontfcn.c and t1util.c).
+ - Official X11.5 patches (Stephen Gildea 920728) merged in the type1
+ library version of ps2pk. These patches were available on:
+ export.lcs.mit.edu:/pub/R5/contrib-fixes/Type1.patch
+ - portability: index() in t1info.c replaced by strchr()
+94-01: Version 1.4 (bug fix release)
+ - types.h: added basic type definitions for non 32-bit platforms
+ - fontfcn.c: made `virtual memory' management dynamically
+ (reported by Norman Walsh, needed for complicated fonts)
+ - Makefile.*: improved
+ - original X11R5 sources no longer included (see X11R5 sources if
+ you want to see them)
+ - t1malloc.c removed, not longer needed.
+95-11 Version 1.5
+ - Makefile.bcc, Makefile.djg and Makefile.wat removed in favour
+ of Makefile.unx and Makefile.emx
+ - bzero() dropped in favour of ANSI C's memset()
+ - Improved cooperation between the master makefile and
+ its depending makefiles (thanks <ripley@stats.ox.ac.uk>)
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Makefile.in
new file mode 100644
index 00000000000..241f12436f9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Makefile.in
@@ -0,0 +1,106 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 04/06/1997
+# Last modified: 2001-04-01
+#
+# Modified by H.Kakugawa to use libtool
+
+LIBTOOL = ../../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS)
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+
+# targets to build:
+
+OBJS = \
+ arith.lo \
+ curves.lo \
+ fontfcn.lo \
+ hints.lo \
+ lines.lo \
+ objects.lo \
+ paths.lo \
+ regions.lo \
+ scanfont.lo \
+ spaces.lo \
+ t1io.lo \
+ t1snap.lo \
+ t1stub.lo \
+ token.lo \
+ type1.lo \
+ util.lo
+
+
+.SUFFIXES: .c .o .lo
+.c.lo:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+.c.o:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+
+all: $(OBJS)
+
+.PHONY: clean
+
+dependencies: dummy
+ gcc -MM *.c | sed 's/\.o:/.lo:/g' > .dependencies
+
+clean: dummy
+ -$(RM) *.lo *.o .libs/*
+ -$(RM) *~ *.bak \#*\#
+ -rmdir .libs
+
+install: dummy
+
+
+dummy:
+
+
+# Dependencies of object files
+include .dependencies
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README
new file mode 100644
index 00000000000..4ce796d75c4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README
@@ -0,0 +1,25 @@
+This directory contains a rasterizer for "Type 1" (PostScript) format
+outline fonts. It was donated by IBM for the R5 contrib tape and has
+been maintained since then by the MIT X Consortium. This version is
+compatible with X11R5 public patch 13.
+
+To be used, this rasterizer must be bound into the X server and the font
+server. It is most convenient to do this if this directory is moved
+into the 'mit' directory tree (i.e., mit/font/lib/font/Type1, a peer of
+the 'Speedo' directory). Of course, mit/font/lib/font/Imakefile must be
+made aware of its new subdirectory and the objects in it. In any case,
+you must ensure that the library mit/font/lib/font/libfont.a contains
+this code.
+
+In addition, the rasterizer must be "registered" with X. The source in
+mit/fonts/lib/font/fontfile/renderers.c, specifically the routine
+FontFileRegisterFontFileFunctions(), must be modified to add the line:
+
+ Type1RegisterFontFileFunctions();
+
+after the call to "SpeedoRegisterFontFileFunctions".
+
+Some Type 1 fonts have been donated; see, for example, the directory
+contrib/fonts/scaled/Type1. In order to use them, they must be in the
+font path, either by combining them in some existing font object
+directory, or adding a new font directory to the path.
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README.RMz b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README.RMz
new file mode 100644
index 00000000000..ec55697354d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/README.RMz
@@ -0,0 +1,12 @@
+Dear Folks,
+
+this directory basically contains the Type 1 rasterizer code, donated
+to the X11-project by IBM and afterwards modified by Piet Tutelaers
+for his ps2pk-package. But there are several files modified by
+myself. Thus the state of this directory is not an official one and
+subject to further changes!
+
+Before version 0.6 of t1lib I have cleaned the sources, removed the X11-dummy
+function and made the sources more ANSI-C compliant.
+
+ (03/09/1998, RMz)
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Xstuff.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Xstuff.h
new file mode 100644
index 00000000000..523767da378
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/Xstuff.h
@@ -0,0 +1,42 @@
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef XMD_H
+#define XMD_H 1
+
+#include "types.h"
+
+/*
+ * Bitfield suffixes for the protocol structure elements, if you
+ * need them. Note that bitfields are not guarranteed to be signed
+ * (or even unsigned) according to ANSI C.
+ */
+#ifdef WORD64
+#define B32 :32
+#define B16 :16
+#else
+#define B32
+#define B16
+#endif
+
+typedef struct {
+ SHORT leftSideBearing B16,
+ rightSideBearing B16,
+ characterWidth B16,
+ ascent B16,
+ descent B16;
+ USHORT attributes;
+} xCharInfo;
+#endif /* XMD_H */
+
+#ifndef _FS_PROTO_H_
+#define _FS_PROTO_H_
+
+typedef struct {
+ USHORT x_resolution B16;
+ USHORT y_resolution B16;
+ USHORT point_size B16;
+} fsResolution;
+
+#endif /* _FS_PROTO_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.c
new file mode 100644
index 00000000000..4d60c83d569
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.c
@@ -0,0 +1,424 @@
+/* $XConsortium: arith.c,v 1.2 91/10/10 11:14:06 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* ARITH CWEB V0006 ******** */
+/*
+:h1.ARITH Module - Portable Module for Multiple Precision Fixed Point Arithmetic
+
+This module provides division and multiplication of 64-bit fixed point
+numbers. (To be more precise, the module works on numbers that take
+two 'longs' to store. That is almost always equivalent to saying 64-bit
+numbers.)
+
+Note: it is frequently easy and desirable to recode these functions in
+assembly language for the particular processor being used, because
+assembly language, unlike C, will have 64-bit multiply products and
+64-bit dividends. This module is offered as a portable version.
+
+&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Sten F. Andler
+
+
+:h3.Include Files
+
+The included files are:
+*/
+
+#include <stdio.h>
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "arith.h"
+
+/*
+:h3.
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+Reference for all algorithms: Donald E. Knuth, "The Art of Computer
+Programming, Volume 2, Semi-Numerical Algorithms," Addison-Wesley Co.,
+Massachusetts, 1969, pp. 229-279.
+
+Knuth talks about a 'digit' being an arbitrary sized unit and a number
+being a sequence of digits. We'll take a digit to be a 'short'.
+The following assumption must be valid for these algorithms to work:
+:ol.
+:li.A 'long' is two 'short's.
+:eol.
+The following code is INDEPENDENT of:
+:ol.
+:li.The actual size of a short.
+:li.Whether shorts and longs are stored most significant byte
+first or least significant byte first.
+:eol.
+
+SHORTSIZE is the number of bits in a short; LONGSIZE is the number of
+bits in a long; MAXSHORT is the maximum unsigned short:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+ASSEMBLE concatenates two shorts to form a long:
+*/
+#define ASSEMBLE(hi,lo) ((((ULONG)hi)<<SHORTSIZE)+(lo))
+/*
+HIGHDIGIT extracts the most significant short from a long; LOWDIGIT
+extracts the least significant short from a long:
+*/
+#define HIGHDIGIT(u) ((u)>>SHORTSIZE)
+#define LOWDIGIT(u) ((u)&MAXSHORT)
+
+/*
+SIGNBITON tests the high order bit of a long 'w':
+*/
+#define SIGNBITON(w) (((LONG)w)<0)
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h2.Double Long Arithmetic
+
+:h3.DLmult() - Multiply Two Longs to Yield a Double Long
+
+The two multiplicands must be positive.
+*/
+
+void DLmult(product, u, v)
+ register doublelong *product;
+ register ULONG u;
+ register ULONG v;
+{
+ register ULONG u1, u2; /* the digits of u */
+ register ULONG v1, v2; /* the digits of v */
+ register unsigned int w1, w2, w3, w4; /* the digits of w */
+ register ULONG t; /* temporary variable */
+/* printf("DLmult(? ?, %x, %x)\n", u, v); */
+ u1 = HIGHDIGIT(u);
+ u2 = LOWDIGIT(u);
+ v1 = HIGHDIGIT(v);
+ v2 = LOWDIGIT(v);
+
+ if (v2 == 0) w4 = w3 = w2 = 0;
+ else
+ {
+ t = u2 * v2;
+ w4 = LOWDIGIT(t);
+ t = u1 * v2 + HIGHDIGIT(t);
+ w3 = LOWDIGIT(t);
+ w2 = HIGHDIGIT(t);
+ }
+
+ if (v1 == 0) w1 = 0;
+ else
+ {
+ t = u2 * v1 + w3;
+ w3 = LOWDIGIT(t);
+ t = u1 * v1 + w2 + HIGHDIGIT(t);
+ w2 = LOWDIGIT(t);
+ w1 = HIGHDIGIT(t);
+ }
+
+ product->high = ASSEMBLE(w1, w2);
+ product->low = ASSEMBLE(w3, w4);
+}
+
+/*
+:h2.DLdiv() - Divide Two Longs by One Long, Yielding Two Longs
+
+Both the dividend and the divisor must be positive.
+*/
+
+void DLdiv(quotient, divisor)
+ doublelong *quotient; /* also where dividend is, originally */
+ ULONG divisor;
+{
+ register ULONG u1u2 = quotient->high;
+ register ULONG u3u4 = quotient->low;
+ register LONG u3; /* single digit of dividend */
+ register int v1,v2; /* divisor in registers */
+ register LONG t; /* signed copy of u1u2 */
+ register int qhat; /* guess at the quotient digit */
+ register ULONG q3q4; /* low two digits of quotient */
+ register int shift; /* holds the shift value for normalizing */
+ register int j; /* loop variable */
+
+/* printf("DLdiv(%x %x, %x)\n", quotient->high, quotient->low, divisor); */
+ /*
+ * Knuth's algorithm works if the dividend is smaller than the
+ * divisor. We can get to that state quickly:
+ */
+ if (u1u2 >= divisor) {
+ quotient->high = u1u2 / divisor;
+ u1u2 %= divisor;
+ }
+ else
+ quotient->high = 0;
+
+ if (divisor <= MAXSHORT) {
+
+ /*
+ * This is the case where the divisor is contained in one
+ * 'short'. It is worthwhile making this fast:
+ */
+ u1u2 = ASSEMBLE(u1u2, HIGHDIGIT(u3u4));
+ q3q4 = u1u2 / divisor;
+ u1u2 %= divisor;
+ u1u2 = ASSEMBLE(u1u2, LOWDIGIT(u3u4));
+ quotient->low = ASSEMBLE(q3q4, u1u2 / divisor);
+ return;
+ }
+
+
+ /*
+ * At this point the divisor is a true 'long' so we must use
+ * Knuth's algorithm.
+ *
+ * Step D1: Normalize divisor and dividend (this makes our 'qhat'
+ * guesses more accurate):
+ */
+ for (shift=0; !SIGNBITON(divisor); shift++, divisor <<= 1) { ; }
+ shift--;
+ divisor >>= 1;
+
+ if ((u1u2 >> (LONGSIZE - shift)) != 0 && shift != 0)
+ abort("DLdiv: dividend too large", 1);
+ u1u2 = (u1u2 << shift) + ((shift == 0) ? 0 : u3u4 >> (LONGSIZE - shift));
+ u3u4 <<= shift;
+
+ /*
+ * Step D2: Begin Loop through digits, dividing u1,u2,u3 by v1,v2,
+ * then shifting U left by 1 digit:
+ */
+ v1 = HIGHDIGIT(divisor);
+ v2 = LOWDIGIT(divisor);
+ q3q4 = 0;
+ u3 = HIGHDIGIT(u3u4);
+
+ for (j=0; j < 2; j++) {
+
+ /*
+ * Step D3: make a guess (qhat) at the next quotient denominator:
+ */
+ qhat = (HIGHDIGIT(u1u2) == v1) ? MAXSHORT : u1u2 / v1;
+ /*
+ * At this point Knuth would have us further refine our
+ * guess, since we know qhat is too big if
+ *
+ * v2 * qhat > ASSEMBLE(u1u2 % v, u3)
+ *
+ * That would make sense if u1u2 % v was easy to find, as it
+ * would be in assembly language. I ignore this step, and
+ * repeat step D6 if qhat is too big.
+ */
+
+ /*
+ * Step D4: Multiply v1,v2 times qhat and subtract it from
+ * u1,u2,u3:
+ */
+ u3 -= qhat * v2;
+ /*
+ * The high digit of u3 now contains the "borrow" for the
+ * rest of the substraction from u1,u2.
+ * Sometimes we can lose the sign bit with the above.
+ * If so, we have to force the high digit negative:
+ */
+ t = HIGHDIGIT(u3);
+ if (t > 0)
+ t |= -1 << SHORTSIZE;
+ t += u1u2 - qhat * v1;
+/* printf("..>divide step qhat=%x t=%x u3=%x u1u2=%x v1=%x v2=%x\n",
+ qhat, t, u3, u1u2, v1, v2); */
+ while (t < 0) { /* Test is Step D5. */
+
+ /*
+ * D6: Oops, qhat was too big. Add back in v1,v2 and
+ * decrease qhat by 1:
+ */
+ u3 = LOWDIGIT(u3) + v2;
+ t += HIGHDIGIT(u3) + v1;
+ qhat--;
+/* printf("..>>qhat correction t=%x u3=%x qhat=%x\n", t, u3, qhat); */
+ }
+ /*
+ * Step D7: shift U left one digit and loop:
+ */
+ u1u2 = t;
+ if (HIGHDIGIT(u1u2) != 0)
+ abort("divide algorithm error", 2);
+ u1u2 = ASSEMBLE(u1u2, LOWDIGIT(u3));
+ u3 = LOWDIGIT(u3u4);
+ q3q4 = ASSEMBLE(q3q4, qhat);
+ }
+ quotient->low = q3q4;
+/* printf("DLdiv returns %x %x\n", quotient->high, quotient->low); */
+ return;
+}
+
+/*
+:h3.DLadd() - Add Two Double Longs
+
+In this case, the doublelongs may be signed. The algorithm takes the
+piecewise sum of the high and low longs, with the possibility that the
+high should be incremented if there is a carry out of the low. How to
+tell if there is a carry? Alex Harbury suggested that if the sum of
+the lows is less than the max of the lows, there must have been a
+carry. Conversely, if there was a carry, the sum of the lows must be
+less than the max of the lows. So, the test is "if and only if".
+*/
+
+void DLadd(u, v)
+ doublelong *u; /* u = u + v */
+ doublelong *v;
+{
+ register ULONG lowmax = TYPE1_MAX(u->low, v->low);
+
+/* printf("DLadd(%x %x, %x %x)\n", u->high, u->low, v->high, v->low); */
+ u->high += v->high;
+ u->low += v->low;
+ if (lowmax > u->low)
+ u->high++;
+}
+/*
+:h3.DLsub() - Subtract Two Double Longs
+
+Testing for a borrow is even easier. If the v.low is greater than
+u.low, there must be a borrow.
+*/
+
+void DLsub(u, v)
+ doublelong *u; /* u = u - v */
+ doublelong *v;
+{
+/* printf("DLsub(%x %x, %x %x)\n", u->high, u->low, v->high, v->low);*/
+ u->high -= v->high;
+ if (v->low > u->low)
+ u->high--;
+ u->low -= v->low;
+}
+/*
+:h3.DLrightshift() - Macro to Shift Double Long Right by N
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h2.Fractional Pel Arithmetic
+*/
+/*
+:h3.FPmult() - Multiply Two Fractional Pel Values
+
+This funtion first calculates w = u * v to "doublelong" precision.
+It then shifts w right by FRACTBITS bits, and checks that no
+overflow will occur when the resulting value is passed back as
+a fractpel.
+*/
+
+fractpel FPmult(u, v)
+ register fractpel u,v;
+{
+ doublelong w;
+ register int negative = FALSE; /* sign flag */
+ int maxshort = MAXSHORT; /* To avoid that overflow warning (RMz) */
+
+ if ((u == 0) || (v == 0)) return (0);
+
+
+ if (u < 0) {u = -u; negative = TRUE;}
+ if (v < 0) {v = -v; negative = !negative;}
+
+ if (u == TOFRACTPEL(1)) return ((negative) ? -v : v);
+ if (v == TOFRACTPEL(1)) return ((negative) ? -u : u);
+
+ DLmult(&w, u, v);
+ DLrightshift(w, FRACTBITS);
+ if (w.high != 0 || SIGNBITON(w.low)) {
+ IfTrace2(TRUE,"FPmult: overflow, %dx%d\n", u, v);
+ w.low = TOFRACTPEL(maxshort);
+ }
+
+ return ((negative) ? -w.low : w.low);
+}
+
+/*
+:h3.FPdiv() - Divide Two Fractional Pel Values
+
+These values may be signed. The function returns the quotient.
+*/
+
+fractpel FPdiv(dividend, divisor)
+ register fractpel dividend;
+ register fractpel divisor;
+{
+ doublelong w; /* result will be built here */
+ int negative = FALSE; /* flag for sign bit */
+ int maxshort = MAXSHORT; /* To avoid that overflow warning (RMz) */
+
+ if (dividend < 0) {
+ dividend = -dividend;
+ negative = TRUE;
+ }
+ if (divisor < 0) {
+ divisor = -divisor;
+ negative = !negative;
+ }
+ w.low = dividend << FRACTBITS;
+ w.high = dividend >> (LONGSIZE - FRACTBITS);
+ DLdiv(&w, divisor);
+ if (w.high != 0 || SIGNBITON(w.low)) {
+ IfTrace2(TRUE,"FPdiv: overflow, %d/%d\n", dividend, divisor);
+ w.low = TOFRACTPEL(maxshort);
+ }
+ return( (negative) ? -w.low : w.low);
+}
+
+/*
+:h3.FPstarslash() - Multiply then Divide
+
+Borrowing a chapter from the language Forth, it is useful to define
+an operator that first multiplies by one constant then divides by
+another, keeping the intermediate result in extended precision.
+*/
+
+fractpel FPstarslash(a, b, c)
+ register fractpel a,b,c; /* result = a * b / c */
+{
+ doublelong w; /* result will be built here */
+ int negative = FALSE;
+ int maxshort = MAXSHORT; /* To avoid that overflow warning (RMz) */
+
+ if (a < 0) { a = -a; negative = TRUE; }
+ if (b < 0) { b = -b; negative = !negative; }
+ if (c < 0) { c = -c; negative = !negative; }
+
+ DLmult(&w, a, b);
+ DLdiv(&w, c);
+ if (w.high != 0 || SIGNBITON(w.low)) {
+ IfTrace3(TRUE,"FPstarslash: overflow, %d*%d/%d\n", a, b, c);
+ w.low = TOFRACTPEL(maxshort);
+ }
+ return((negative) ? -w.low : w.low);
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.h
new file mode 100644
index 00000000000..ef63b80c567
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/arith.h
@@ -0,0 +1,62 @@
+/* $XConsortium: arith.h,v 1.2 91/10/10 11:17:49 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#include "types.h"
+
+void DLmult(),DLdiv(),DLadd(),DLsub();
+
+fractpel FPmult();
+fractpel FPdiv();
+fractpel FPstarslash();
+
+/*END SHARED*/
+/*SHARED*/
+
+#define SHORTSIZE (sizeof(SHORT)*8)
+#define LONGSIZE (SHORTSIZE*2)
+#define MAXSHORT ((1<<SHORTSIZE)-1)
+
+/*END SHARED*/
+/*SHARED*/
+
+typedef struct {
+ LONG high;
+ ULONG low;
+} doublelong;
+
+/*END SHARED*/
+/*SHARED*/
+
+#define DLrightshift(dl,N) { \
+ dl.low = (dl.low >> N) + (((ULONG) dl.high) << (LONGSIZE - N)); \
+ dl.high >>= N; \
+}
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/blues.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/blues.h
new file mode 100644
index 00000000000..a5cdafb8b72
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/blues.h
@@ -0,0 +1,95 @@
+/* $XConsortium: blues.h,v 1.2 91/10/10 11:17:52 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ * Portions Copyright (c) 1990 Adobe Systems Incorporated.
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark or Adobe
+ * not be used in advertising or publicity pertaining to distribution of
+ * the software without specific, written prior permission.
+ *
+ * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY
+ * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE
+ * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING
+ * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY
+ * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM,
+ * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND
+ * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "types.h"
+
+extern psobj *GetType1CharString();
+
+#define TOPLEFT 1
+#define BOTTOMRIGHT 2
+
+#define NUMBLUEVALUES 14
+#define NUMOTHERBLUES 10
+#define NUMFAMILYBLUES 14
+#define NUMFAMILYOTHERBLUES 10
+#define NUMSTEMSNAPH 12
+#define NUMSTEMSNAPV 12
+#define NUMSTDHW 1
+#define NUMSTDVW 1
+
+#define DEFAULTBOLDSTEMWIDTH 2.0
+
+#define MAXALIGNMENTZONES ((NUMBLUEVALUES+NUMOTHERBLUES)/2)
+#define DEFAULTBLUESCALE 0.039625
+#define DEFAULTBLUESHIFT 7
+#define DEFAULTBLUEFUZZ 1
+#define DEFAULTSTDHW 0
+#define DEFAULTSTDVW 0
+#define DEFAULTFORCEBOLD FALSE
+#define DEFAULTLANGUAGEGROUP 0
+#define DEFAULTRNDSTEMUP FALSE
+#define DEFAULTLENIV 4
+#define DEFAULTEXPANSIONFACTOR 0.06
+
+/* see Type 1 Font Format book for explanations of these values */
+/* Note that we're currently doing nothing for minfeature and password. */
+struct blues_struct {
+ struct blues_struct *next; /* ptr to next Blues structure in list */
+ int numBlueValues; /* # of BlueValues in following array */
+ int BlueValues[NUMBLUEVALUES];
+ int numOtherBlues; /* # of OtherBlues values in following array */
+ int OtherBlues[NUMOTHERBLUES];
+ int numFamilyBlues; /* # of FamilyBlues values in following array */
+ int FamilyBlues[NUMFAMILYBLUES];
+ int numFamilyOtherBlues; /* # of FamilyOtherBlues values in */
+ int FamilyOtherBlues[NUMFAMILYOTHERBLUES]; /* this array */
+ DOUBLE BlueScale;
+ int BlueShift;
+ int BlueFuzz;
+ DOUBLE StdHW;
+ DOUBLE StdVW;
+ int numStemSnapH; /* # of StemSnapH values in following array */
+ DOUBLE StemSnapH[NUMSTEMSNAPH];
+ int numStemSnapV; /* # of StemSnapV values in following array */
+ DOUBLE StemSnapV[NUMSTEMSNAPV];
+ int ForceBold;
+ int LanguageGroup;
+ int RndStemUp;
+ int lenIV;
+ DOUBLE ExpansionFactor;
+};
+
+/* the alignment zone structure -- somewhat similar to the stem structure */
+/* see Adobe Type1 Font Format book about the terms used in this structure */
+struct alignmentzone {
+ int topzone; /* TRUE if a topzone, FALSE if a bottom zone */
+ DOUBLE bottomy, topy; /* interval of this alignment zone */
+};
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/bstring.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/bstring.c
new file mode 100644
index 00000000000..c6a06016f36
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/bstring.c
@@ -0,0 +1,9 @@
+/*
+ * A simple memset() in case your ANSI C does not provide it
+ */
+
+memset(void *s, int c, int length)
+{ char *p = s;
+
+ while (length--) *(p++) = c;
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/cluts.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/cluts.h
new file mode 100644
index 00000000000..fe51e02f9aa
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/cluts.h
@@ -0,0 +1,35 @@
+/* $XConsortium: cluts.h,v 1.2 91/10/10 11:17:54 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* STUB */
+
+#define KillCLUT(T)
+#define CopyCLUT(T) T
+#define UniqueCLUT(T)
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.c
new file mode 100644
index 00000000000..b79f084de48
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.c
@@ -0,0 +1,220 @@
+/* $XConsortium: curves.c,v 1.3 91/10/10 11:17:56 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991 */
+/* All Rights Reserved */
+
+/* License to use, copy, modify, and distribute this software */
+/* and its documentation for any purpose and without fee is */
+/* hereby granted, provided that licensee provides a license to */
+/* IBM, Corp. to use, copy, modify, and distribute derivative */
+/* works and their documentation for any purpose and without */
+/* fee, that the above copyright notice appear in all copies */
+/* and that both that copyright notice and this permission */
+/* notice appear in supporting documentation, and that the name */
+/* of IBM not be used in advertising or publicity pertaining to */
+/* distribution of the software without specific, written prior */
+/* permission. */
+
+/* IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES */
+/* OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT */
+/* LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, */
+/* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF */
+/* THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND */
+/* PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT */
+/* OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF */
+/* THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES */
+/* THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN */
+/* NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR */
+/* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING */
+/* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF */
+/* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT */
+/* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS */
+/* SOFTWARE. */
+/*
+:h1.CURVES Module - Stepping Beziers
+
+This module is responsible for "rasterizing"
+third order curves. That is, it changes the high level curve
+specification into a list of pels that that curve travels
+through.
+
+:h3.Include Files
+
+Include files needed:
+*/
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h"
+#include "curves.h"
+#include "lines.h"
+#include "arith.h"
+
+
+/*
+:h3.Functions Provided to Other Modules
+
+External entry points:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+Note that "stepping" and "flattening" are so similiar that they use the
+same routine. When the "region" parameter is NULL, that is a flag that
+we are flattening instead of stepping.
+*/
+/*
+:h2.Bezier Third Order Curves
+*/
+/*
+:h3.The "bezierinfo" Structure
+
+This structure is used to store information used when we subdivide
+Bezier curves.
+*/
+
+struct bezierinfo {
+ struct region *region; /* the region being built or NULL */
+ struct fractpoint last; /* not used yet; maybe could save some work */
+ struct fractpoint origin; /* the origin of the bezier */
+} ;
+
+/*
+ Checking for termination of the subdivision process:
+ This is the stupidest test in the world, just check if the coordinatewise
+ distance from an end control point to the next control point is less than
+ one half pel. If so, we must be done.
+ This returns 1 if the subdivision is terminated and 0 if you still need
+ to subdivide.
+*/
+
+int BezierTerminationTest(xa,ya,xb,yb,xc,yc,xd,yd)
+fractpel xa,ya,xb,yb,xc,yc,xd,yd;
+{
+ fractpel dmax;
+ dmax = TYPE1_ABS(xa - xb);
+ dmax = TYPE1_MAX(dmax,TYPE1_ABS(ya - yb));
+ dmax = TYPE1_MAX(dmax,TYPE1_ABS(xd - xc));
+ dmax = TYPE1_MAX(dmax,TYPE1_ABS(yd - yc));
+ if(dmax > FPHALF)
+ return(0); /* not done yet */
+ else
+ return(1); /* done */
+}
+
+/*
+:h3.StepBezierRecurse() - The Recursive Logic in StepBezier()
+
+The recursion involves dividing the control polygon into two smaller
+control polygons by finding the midpoints of the lines. This idea is
+described in any graphics text book and its simplicity is what caused
+Bezier to define his curves as he did. If the input region 'R' is NULL,
+the result is a path that is the 'flattened' curve; otherwise StepBezier
+returns nothing special.
+*/
+static struct segment *StepBezierRecurse(I,xA,yA,xB,yB,xC,yC,xD,yD)
+ struct bezierinfo *I; /* Region under construction or NULL */
+ fractpel xA,yA; /* A control point */
+ fractpel xB,yB; /* B control point */
+ fractpel xC,yC; /* C control point */
+ fractpel xD,yD; /* D control point */
+
+{
+ if (BezierTerminationTest(xA,yA,xB,yB,xC,yC,xD,yD))
+ {
+ if (I->region == NULL)
+ return(PathSegment(LINETYPE, xD - xA, yD - yA));
+ else
+ StepLine(I->region, I->origin.x + xA, I->origin.y + yA,
+ I->origin.x + xD, I->origin.y + yD);
+ }
+ else
+ {
+ fractpel xAB,yAB;
+ fractpel xBC,yBC;
+ fractpel xCD,yCD;
+ fractpel xABC,yABC;
+ fractpel xBCD,yBCD;
+ fractpel xABCD,yABCD;
+
+ xAB = xA + xB; yAB = yA + yB;
+ xBC = xB + xC; yBC = yB + yC;
+ xCD = xC + xD; yCD = yC + yD;
+
+ xABC = xAB + xBC; yABC = yAB + yBC;
+ xBCD = xBC + xCD; yBCD = yBC + yCD;
+
+ xABCD = xABC + xBCD; yABCD = yABC + yBCD;
+
+ xAB >>= 1; yAB >>= 1;
+ xBC >>= 1; yBC >>= 1;
+ xCD >>= 1; yCD >>= 1;
+ xABC >>= 2; yABC >>= 2;
+ xBCD >>= 2; yBCD >>= 2;
+ xABCD >>= 3; yABCD >>= 3;
+
+ if (I->region == NULL)
+ {
+ return( Join(
+ StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD),
+ StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD)
+ )
+ );
+ }
+ else
+ {
+ StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD);
+ StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD);
+ }
+ }
+ /*NOTREACHED*/
+ /* To make ANSI-C-comnpiler happy (RMz): */
+ return(0);
+}
+
+/*
+:h3.TOOBIG() - Macro to Test if a Coordinate is Too Big to Bezier SubDivide Normally
+
+Intermediate values in the Bezier subdivision are 8 times bigger than
+the starting values. If this overflows, a 'long', we are in trouble:
+*/
+
+#define BITS (sizeof(LONG)*8)
+#define HIGHTEST(p) (((p)>>(BITS-4)) != 0) /* includes sign bit */
+#define TOOBIG(xy) ((xy < 0) ? HIGHTEST(-xy) : HIGHTEST(xy))
+
+/*
+:h3.StepBezier() - Produce Run Ends for a Bezier Curve
+
+This is the entry point called from outside the module.
+*/
+
+struct segment *StepBezier(R, xA, yA, xB, yB, xC, yC, xD, yD)
+ struct region *R; /* Region under construction or NULL */
+ fractpel xA,yA; /* A control point */
+ fractpel xB,yB; /* B control point */
+ fractpel xC,yC; /* C control point */
+ fractpel xD,yD; /* D control point */
+{
+ struct bezierinfo Info;
+
+ Info.region = R;
+ Info.origin.x = xA;
+ Info.origin.y = yA;
+
+ xB -= xA;
+ xC -= xA;
+ xD -= xA;
+ yB -= yA;
+ yC -= yA;
+ yD -= yA;
+
+ if ( TOOBIG(xB) || TOOBIG(yB) || TOOBIG(xC) || TOOBIG(yC)
+ || TOOBIG(xD) || TOOBIG(yD) )
+ abort("Beziers this big not yet supported", 3);
+
+ return(StepBezierRecurse(&Info,
+ (fractpel) 0, (fractpel) 0, xB, yB, xC, yC, xD, yD));
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.h
new file mode 100644
index 00000000000..80a73be2dd6
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/curves.h
@@ -0,0 +1,40 @@
+/* $XConsortium: curves.h,v 1.2 91/10/10 11:17:59 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#define StepConic(R,xA,yA,xB,yB,xC,yC,r) t1_StepConic(R,xA,yA,xB,yB,xC,yC,r)
+#define StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD) t1_StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD)
+
+#define FlattenConic(xM,yM,xC,yC,r) t1_StepConic(NULL,(fractpel)0,(fractpel)0,xM,yM,xC,yC,r)
+#define FlattenBezier(xB,yB,xC,yC,xD,yD) t1_StepBezier(NULL,(fractpel)0,(fractpel)0,xB,yB,xC,yC,xD,yD)
+
+struct segment *t1_StepConic();
+struct segment *t1_StepBezier();
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/digit.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/digit.h
new file mode 100644
index 00000000000..4ed89c765c3
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/digit.h
@@ -0,0 +1,64 @@
+/* $XConsortium: digit.h,v 1.2 91/10/10 11:18:01 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* -------------------------------------- */
+/* --- MACHINE GENERATED, DO NOT EDIT --- */
+/* -------------------------------------- */
+
+#ifndef DIGIT
+#define DIGIT 1
+
+/*
+ * Digit Value Table --
+ *
+ * The entries in the Digit Value Table map character
+ * codes in the set {0-9,a-z,A-Z} to their numeric
+ * values as part of numbers of radix 2-36.
+ *
+ */
+unsigned char digit_value[256] = {
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
+ 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
+ 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
+};
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/ffilest.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/ffilest.h
new file mode 100644
index 00000000000..6a13d034088
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/ffilest.h
@@ -0,0 +1,151 @@
+/*
+ * $XConsortium: fontfilest.h,v 1.3 91/07/16 20:15:16 keith Exp $
+ *
+ * Copyright 1991 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifndef _FONTFILEST_H_
+#define _FONTFILEST_H_
+
+#ifdef XSERVER
+#include <X11/Xos.h>
+#else
+#include "types.h"
+#include "Xstuff.h"
+#endif
+
+#include "fontmisc.h"
+#include "fontstruct.h"
+#include "fontfile.h"
+#include "fontxlfd.h"
+
+typedef struct _FontName {
+ char *name;
+ short length;
+ short ndashes;
+} FontNameRec;
+
+typedef struct _FontScaled {
+ FontScalableRec vals;
+ FontEntryPtr bitmap;
+ FontPtr pFont;
+} FontScaledRec;
+
+typedef struct _FontScalableExtra {
+ FontScalableRec defaults;
+ int numScaled;
+ int sizeScaled;
+ FontScaledPtr scaled;
+ pointer private;
+} FontScalableExtraRec;
+
+typedef struct _FontScalableEntry {
+ FontRendererPtr renderer;
+ char *fileName;
+ FontScalableExtraPtr extra;
+} FontScalableEntryRec;
+
+/*
+ * This "can't" work yet - the returned alias string must be permanent,
+ * but this layer would need to generate the appropriate name from the
+ * resolved scalable + the XLFD values passed in. XXX
+ */
+
+typedef struct _FontScaleAliasEntry {
+ char *resolved;
+} FontScaleAliasEntryRec;
+
+typedef struct _FontBitmapEntry {
+ FontRendererPtr renderer;
+ char *fileName;
+ FontPtr pFont;
+} FontBitmapEntryRec;
+
+typedef struct _FontAliasEntry {
+ char *resolved;
+} FontAliasEntryRec;
+
+typedef struct _FontBCEntry {
+ FontScalableRec vals;
+ FontEntryPtr entry;
+} FontBCEntryRec;
+
+typedef struct _FontEntry {
+ FontNameRec name;
+ int type;
+ union _FontEntryParts {
+ FontScalableEntryRec scalable;
+ FontBitmapEntryRec bitmap;
+ FontAliasEntryRec alias;
+ FontBCEntryRec bc;
+ } u;
+} FontEntryRec;
+
+typedef struct _FontTable {
+ int used;
+ int size;
+ FontEntryPtr entries;
+ Bool sorted;
+} FontTableRec;
+
+typedef struct _FontDirectory {
+ char *directory;
+ ULONG dir_mtime;
+ ULONG alias_mtime;
+ FontTableRec scalable;
+ FontTableRec nonScalable;
+} FontDirectoryRec;
+
+typedef struct _FontRenderer {
+ char *fileSuffix;
+ int fileSuffixLen;
+ int (*OpenBitmap)(/* fpe, pFont, flags, entry, fileName, format, fmask */);
+ int (*OpenScalable)(/* fpe, pFont, flags, entry, fileName, vals, format, fmask */);
+ int (*GetInfoBitmap)(/* fpe, pFontInfo, entry, fileName */);
+ int (*GetInfoScalable)(/* fpe, pFontInfo, entry, fileName, vals */);
+ int number;
+} FontRendererRec;
+
+typedef struct _FontRenders {
+ int number;
+ FontRendererPtr *renderers;
+} FontRenderersRec, *FontRenderersPtr;
+
+typedef struct _BitmapInstance {
+ FontScalableRec vals;
+ FontBitmapEntryPtr bitmap;
+} BitmapInstanceRec, *BitmapInstancePtr;
+
+typedef struct _BitmapScalablePrivate {
+ int numInstances;
+ BitmapInstancePtr instances;
+} BitmapScalablePrivateRec, *BitmapScalablePrivatePtr;
+
+typedef struct _BitmapSources {
+ FontPathElementPtr *fpe;
+ int size;
+ int count;
+} BitmapSourcesRec, *BitmapSourcesPtr;
+
+extern BitmapSourcesRec FontFileBitmapSources;
+
+#endif /* _FONTFILEST_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/font.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/font.h
new file mode 100644
index 00000000000..8de6e908f31
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/font.h
@@ -0,0 +1,107 @@
+/* $XConsortium: font.h,v 1.8 91/07/19 21:03:49 rws Exp $ */
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/* $NCDId: @(#)font.h,v 1.7 1991/06/24 17:00:23 lemke Exp $ */
+
+#ifndef FONT_H
+#define FONT_H
+
+#ifndef BitmapFormatByteOrderMask
+#include "fsmasks.h"
+#endif
+
+/* data structures */
+typedef struct _Font *FontPtr;
+typedef struct _FontInfo *FontInfoPtr;
+typedef struct _FontProp *FontPropPtr;
+typedef struct _ExtentInfo *ExtentInfoPtr;
+typedef struct _FontPathElement *FontPathElementPtr;
+typedef struct _CharInfo *CharInfoPtr;
+typedef struct _FontNames *FontNamesPtr;
+typedef struct _FontResolution *FontResolutionPtr;
+
+#define NullCharInfo ((CharInfoPtr) 0)
+#define NullFont ((FontPtr) 0)
+#define NullFontInfo ((FontInfoPtr) 0)
+
+ /* draw direction */
+#define LeftToRight 0
+#define RightToLeft 1
+#define BottomToTop 2
+#define TopToBottom 3
+typedef int DrawDirection;
+
+#define NO_SUCH_CHAR -1
+
+
+#define FontAliasType 0x1000
+
+#define AllocError 80
+#define StillWorking 81
+#define FontNameAlias 82
+#define BadFontName 83
+#define Suspended 84
+#define Successful 85
+#define BadFontPath 86
+#define BadCharRange 87
+#define BadFontFormat 88
+#define FPEResetFailed 89 /* for when an FPE reset won't work */
+
+/* OpenFont flags */
+#define FontLoadInfo 0x0001
+#define FontLoadProps 0x0002
+#define FontLoadMetrics 0x0004
+#define FontLoadBitmaps 0x0008
+#define FontLoadAll 0x000f
+#define FontOpenSync 0x0010
+
+/* Query flags */
+#define LoadAll 0x1
+#define FinishRamge 0x2
+#define EightBitFont 0x4
+#define SixteenBitFont 0x8
+
+typedef char *closure;
+
+extern int StartListFontsWithInfo( /* client, length, pattern, maxNames */ );
+extern int ListFonts( /* client, length, pattern, maxNames */ );
+
+extern FontNamesPtr MakeFontNamesRecord( /* size */ );
+extern void FreeFontNames();
+extern int AddFontNamesName();
+
+extern int FontToFSError();
+
+extern FontResolutionPtr GetClientResolution();
+
+typedef struct _FontPatternCache *FontPatternCachePtr;
+
+extern FontPatternCachePtr MakeFontPatternCache ();
+extern void FreeFontPatternCache ();
+extern void EmtpyFontPatternCache ();
+extern void CacheFontPattern ();
+extern FontPtr FindCachedFontPattern ();
+extern void RemoveCachedFontPattern ();
+
+#endif /* FONT_H */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.c
new file mode 100644
index 00000000000..4c5b8e5d628
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.c
@@ -0,0 +1,1266 @@
+/* $XConsortium: fontfcn.c,v 1.8 92/03/27 18:15:45 eswu Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "t1imager.h"
+#include "util.h"
+#include "fontfcn.h"
+#include "fontmisc.h"
+#include "paths_rmz.h"
+
+#include "../t1lib/parseAFM.h"
+#include "../t1lib/t1types.h"
+#include "../t1lib/t1extern.h"
+#include "../t1lib/t1misc.h"
+#include "../t1lib/t1base.h"
+#include "../t1lib/t1finfo.h"
+
+/* Note: The argument decodeonly is used to make Type1Char() decode only
+ such that later certain characterictics of the pass can be queried
+ (here, information about the parts of a seac).
+*/
+extern xobject Type1Char(psfont *env, struct XYspace *S,
+ psobj *charstrP, psobj *subrsP,
+ psobj *osubrsP,
+ struct blues_struct *bluesP,
+ int *modeP, char *name,
+ float strokewidth,
+ int decodeonly);
+extern xobject Type1Line(psfont *env, struct XYspace *S,
+ float line_position,
+ float line_thickness,
+ float line_length,
+ float strokewidth);
+extern int T1int_Type1QuerySEAC( unsigned char* base,
+ unsigned char* accent);
+void objFormatName(psobj *objP, int length, char *valueP);
+
+extern void T1io_reset( void);
+
+#define BEZIERTYPE 0x10+0x02
+#define LINETYPE 0x10+0x00
+#define MOVETYPE 0x10+0x05
+
+#if 1
+struct region {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = REGIONTYPE */
+ struct fractpoint origin; /* beginning handle: X,Y origin of region */
+ struct fractpoint ending; /* ending handle: X,Y change after painting region */
+ pel xmin,ymin; /* minimum X,Y of region */
+ pel xmax,ymax; /* mat1_mum X,Y of region */
+ struct edgelist *anchor; /* list of edges that bound the region */
+ struct picture *thresholded; /* region defined by thresholded picture*/
+ /*
+ Note that the ending handle and the bounding box values are stored
+ relative to 'origin'.
+
+ The above elements describe a region. The following elements are
+ scratchpad areas used while the region is being built:
+ */
+ fractpel lastdy; /* direction of last segment */
+ fractpel firstx,firsty; /* starting point of current edge */
+ fractpel edgexmin,edgexmax; /* x extent of current edge */
+ struct edgelist *lastedge,*firstedge; /* last and first edges in subpath */
+ pel *edge; /* pointer to array of X values for edge */
+ fractpel edgeYstop; /* Y value where 'edges' array ends */
+ int (*newedgefcn)(); /* function to use when building a new edge */
+ struct strokeinfo *strokeinfo; /* scratchpad info during stroking only */
+} ;
+struct edgelist {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = EDGETYPE */
+ struct edgelist *link; /* pointer to next in linked list */
+ struct edgelist *subpath; /* informational link for "same subpath" */
+ pel xmin,xmax; /* range of edge in X */
+ pel ymin,ymax; /* range of edge in Y */
+ pel *xvalues; /* pointer to ymax-ymin X values */
+};
+#endif
+
+/***================================================================***/
+/* GLOBALS */
+/***================================================================***/
+static char CurCharName[257]="";
+static char BaseCharName[257]="";
+char CurFontName[MAXPATHLEN+1];
+char *CurFontEnv;
+char *vm_base = NULL;
+
+static char notdef[]=".notdef";
+
+
+/* the following is inserted by RMz for VM checking and reallocating: */
+char *vm_used = NULL;
+extern int vm_init_count;
+extern int vm_init_amount;
+
+static psfont *FontP = NULL;
+psfont TheCurrentFont;
+
+
+/***================================================================***/
+/* SearchDict - look for name */
+/* - compare for match on len and string */
+/* return 0 - not found. */
+/* return n - nth element in dictionary. */
+/***================================================================***/
+int SearchDictName(dictP,keyP)
+ psdict *dictP;
+ psobj *keyP;
+{
+ int i,n;
+
+
+ n = dictP[0].key.len;
+ for (i=1;i<=n;i++) { /* scan the intire dictionary */
+ if (
+ (dictP[i].key.len == keyP->len )
+ &&
+ (strncmp(dictP[i].key.data.valueP,
+ keyP->data.valueP,
+ keyP->len) == 0
+ )
+ ) return(i);
+ }
+ return(0);
+}
+/***================================================================***/
+/* assignment of &TheCurrentFont removed by RMz:
+ */
+boolean initFont()
+{
+ if (!(vm_init())) return(FALSE);
+ vm_base = vm_next_byte();
+ strcpy(CurFontName, ""); /* iniitialize to none */
+ FontP->vm_start = vm_next_byte();
+ FontP->FontFileName.len = 0;
+ FontP->FontFileName.data.valueP = CurFontName;
+ return(TRUE);
+}
+/***================================================================***/
+int resetFont(env)
+char *env;
+{
+
+ vm_next = FontP->vm_start;
+ vm_free = vm_size - ( vm_next - vm_base);
+ FontP->Subrs.len = 0;
+ FontP->Subrs.data.stringP = NULL;
+ FontP->CharStringsP = NULL;
+ FontP->Private = NULL;
+ FontP->fontInfoP = NULL;
+ FontP->BluesP = NULL;
+ /* This will load the font into the FontP */
+ strncpy(CurFontName,env, MAXPATHLEN);
+ CurFontName[MAXPATHLEN] = '\0';
+ FontP->FontFileName.len = strlen(CurFontName);
+ FontP->FontFileName.data.nameP = CurFontName;
+ T1io_reset();
+
+ return(0);
+
+}
+/***================================================================***/
+/* Read font used to attempt to load the font and, upon failure,
+ try a second time with twice as much memory. Unfortunately, if
+ it's a really complex font, simply using 2*vm_size may be insufficient.
+ I've modified it so that the program will try progressively larger
+ amounts of memory until it really runs out or the font loads
+ successfully. (ndw)
+*/
+int readFont(env)
+char *env;
+{
+ int rcode;
+ /* int memscale = 2; */ /* initially, try twice just like we used to ... */
+
+ /* restore the virtual memory and eliminate old font */
+
+ resetFont(env);
+ /* This will load the font into the FontP */
+
+ rcode = scan_font(FontP);
+ return(rcode);
+}
+
+
+static int isCompositeChar( int FontID,
+ char *charname)
+{
+ int i;
+ FontInfo *pAFMData;
+
+ if (pFontBase->pFontArray[FontID].pAFMData==NULL) {
+ /* No AFM data present */
+ return( -1);
+ }
+
+ pAFMData=pFontBase->pFontArray[FontID].pAFMData;
+ for ( i=0; i<pAFMData->numOfComps; i++) {
+ if (strcmp( pAFMData->ccd[i].ccName, charname)==0)
+ return( i);
+ }
+
+ return( -1);
+
+}
+
+
+
+/* dump a description of path elements to stdout */
+static T1_PATHPOINT getDisplacement( struct segment *path)
+{
+
+ register struct segment *ipath;
+ register struct beziersegment *ibpath;
+ T1_PATHPOINT point={0,0};
+
+ /* Step through the path list */
+ ipath=(struct segment *)path;
+
+ do {
+ if (ipath->type==LINETYPE) {
+ point.x+=ipath->dest.x;
+ point.y+=ipath->dest.y;
+ }
+ else if (ipath->type==MOVETYPE) {
+ point.x+=ipath->dest.x;
+ point.y+=ipath->dest.y;
+ }
+ else if (ipath->type==BEZIERTYPE) {
+ ibpath=(struct beziersegment *)ipath;
+ point.x+=ibpath->dest.x;
+ point.y+=ibpath->dest.y;
+ }
+ ipath=ipath->link;
+ } while (ipath!=NULL);
+ return( point);
+
+}
+
+
+
+/***================================================================***/
+/* RMz: instead of code, which is a character pointer to the name
+ of the character, we use "ev" which is a pointer to a desired
+ encoding vector (or NULL if font-internal encoding should be
+ used) and "index" as an index into the desired encoding vector!
+ The user thus has the opportunity of supplying whatever encoding
+ he wants. Font_Ptr is the pointer to the local psfont-structure.
+ */
+
+xobject fontfcnB(int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char index, int *mode,
+ psfont *Font_Ptr,
+ int do_raster,
+ float strokewidth)
+{
+
+ psobj *charnameP; /* points to psobj that is name of character*/
+ FontInfo *pAFMData=NULL;
+ int i=-1;
+ int j=0;
+ int numPieces=1;
+ int N;
+ T1_PATHPOINT currdisp;
+ int basechar;
+
+ psdict *CharStringsDictP; /* dictionary with char strings */
+ psobj CodeName; /* used to store the translation of the name*/
+ psobj *SubrsArrayP;
+ psobj *theStringP;
+ int localmode=0;
+
+ struct segment *charpath=NULL; /* the path for this character */
+ struct segment *tmppath1=NULL;
+ struct segment *tmppath2=NULL;
+ struct segment *tmppath3=NULL;
+ struct segment *tmppath4=NULL;
+
+
+ /* set the global font pointer to the address of already allocated
+ structure and setup pointers*/
+ FontP=Font_Ptr;
+ CharStringsDictP = FontP->CharStringsP;
+ SubrsArrayP = &(FontP->Subrs);
+ charnameP = &CodeName;
+
+ if (ev==NULL){ /* font-internal encoding should be used */
+ charnameP->len = FontP->fontInfoP[ENCODING].value.data.arrayP[index].len;
+ charnameP->data.stringP = (unsigned char *) FontP->fontInfoP[ENCODING].value.data.arrayP[index].data.arrayP;
+ }
+ else{ /* some user-supplied encoding is to be used */
+ charnameP->len = strlen(ev[index]);
+ charnameP->data.stringP = (unsigned char *) ev[index];
+ }
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+
+
+ /* search the chars string for this charname as key */
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ if (basechar<=0) {
+ /* Check first, whether a char in question is a composite char */
+ if ((i=isCompositeChar( FontID, CurCharName))>-1) {
+ /* i is now the index of the composite char definitions
+ (starting at 0). At this point it is clear that AFM-info
+ must be present -> fetch first component of composite char. */
+ pAFMData=pFontBase->pFontArray[FontID].pAFMData;
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[0].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[0].pccName;
+ numPieces=pAFMData->ccd[i].numOfPieces;
+
+ if ((basechar=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* this is bad, AFM-file and font file do not match. This
+ will most probably lead to errors or inconsistencies later.
+ However, we substitute .notdef and inform the user via
+ logfile and T1_errno. */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[0].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=T1ERR_COMPOSITE_CHAR;
+ }
+ }
+ }
+
+ if (basechar<=0) { /* This means the requested char is unknown or the
+ base char of a composite is not found ->
+ we substitute .notdef */
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* Font must be completely damaged if it doesn't define a .notdef */
+ if (basechar<=0) {
+ *mode=FF_PARSE_ERROR;
+ return(NULL);
+ }
+ } /* if (basechar<=0) */
+ /* basechar is now the index of the base character in the CharStrings
+ dictionary */
+
+ /* we provide the Type1Char() procedure with the name of the character
+ to rasterize for debugging purposes */
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ /* get CharString and character path */
+ theStringP = &(CharStringsDictP[basechar].value);
+ tmppath2 = (struct segment *) Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName,strokewidth,0);
+ /* if Type1Char reported an error, then return */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR)
+ return(NULL);
+
+ /* Defer rastering to later, we first have to handle the composite
+ symbols */
+ for (j=1; j<numPieces; j++) {
+ /* get composite symbol name */
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[j].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[j].pccName;
+ /* get CharString definition */
+ if ((N=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* handling of errors, see comments above ... */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[j].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ N = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* damaged Font */
+ if (N<=0) {
+ *mode=FF_PARSE_ERROR;
+ if (charpath!=NULL) {
+ KillPath( charpath);
+ }
+ return(NULL);
+ }
+ }
+ theStringP = &(CharStringsDictP[N].value);
+ tmppath1=(struct segment *)ILoc(S,
+ pAFMData->ccd[i].pieces[j].deltax,
+ pAFMData->ccd[i].pieces[j].deltay);
+
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ charpath=(struct segment *)Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName,strokewidth,0);
+ /* return if Type1Char reports an error */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR)
+ return(NULL);
+ /* get escapement of current symbol */
+ currdisp=getDisplacement( charpath);
+ /* concat displacement and symbol path */
+ charpath=(struct segment *)Join(tmppath1,charpath);
+ /* for composite symbols we have to step back the char escapement.
+ this is, in order to be able to use accents that cause a
+ non zero displacement of the current point! We further have to
+ step back the displacement from composite char data. */
+ tmppath1=(struct segment *)t1_PathSegment( MOVETYPE, -currdisp.x, -currdisp.y);
+ tmppath3=(struct segment *)ILoc(S,
+ -pAFMData->ccd[i].pieces[j].deltax,
+ -pAFMData->ccd[i].pieces[j].deltay);
+ tmppath3=(struct segment *)Join(tmppath1,tmppath3);
+ /* create path, or, respectively, append to existing path */
+ if (tmppath4==NULL) {
+ tmppath4=(struct segment *)Join(charpath,tmppath3);
+ }
+ else {
+ charpath=(struct segment *)Join(charpath,tmppath3);
+ tmppath4=(struct segment *)Join(tmppath4,charpath);
+ }
+ }
+
+ /* concat composite symbols and base char */
+ if (tmppath4==NULL) { /* no previous composite symbols */
+ charpath=tmppath2; /* a simple char */
+ }
+ else {
+ charpath=(struct segment *)Join(tmppath4,tmppath2);
+ }
+
+
+ if (do_raster) {
+ /* fill with winding rule unless path was requested */
+ if (*mode != FF_PATH) {
+ charpath = (struct segment *)Interior(charpath,WINDINGRULE+CONTINUITY);
+ }
+ }
+
+ if (*mode==0)
+ *mode=localmode;
+
+ return((xobject) charpath);
+}
+
+
+
+
+/***================================================================***/
+/* fontfcnA(env, mode) */
+/* */
+/* env is a pointer to a string that contains the fontname. */
+/* */
+/* 1) initialize the font - global indicates it has been done */
+/* 2) load the font */
+/* */
+/* This function has been modified by RMz. It now takes a pointer which
+ already contains the address of a valid type1 font structure as the
+ third argument. The value of this pointer is first handed to FontP
+ so that most other routines may be used without changes */
+
+#define MAXTRIAL 4
+
+/***================================================================***/
+Bool fontfcnA(env,mode,Font_Ptr)
+char *env;
+int *mode;
+psfont *Font_Ptr;
+
+{
+ int i, result;
+
+ /* set the global font pointer to the address of already allocated
+ structure */
+ FontP=Font_Ptr;
+
+ InitImager();
+
+ /* Read the font program. */
+ for (i=1; i<MAXTRIAL; i++){
+ vm_init_count=0;
+ /* We allocate larger chunks (4*65536 Bytes) in order to reduce load
+ time for large fonts by initially requesting somewhat more
+ memory. */
+ vm_init_amount=MAX_STRING_LEN * 4 * i;
+ if (!(initFont())) {
+ /* we are really out of memory, not simulated! */
+ *mode = SCAN_OUT_OF_MEMORY;
+ return(FALSE);
+ }
+ /* Try to read font into memory */
+ if ((result=readFont(env))==0){
+ /* In order to get the amount of memory that was really used */
+ vm_used=vm_next_byte();
+ return(TRUE);
+ }
+ else{
+ /* VM did not suffice, free it and try again with larger
+ value: */
+ free(vm_base);
+ }
+ }
+ /* Font could not be loaded: */
+ *mode = result;
+ return(FALSE);
+
+}
+
+
+/***================================================================***/
+/* QueryFontLib(env, infoName,infoValue,rcodeP) */
+/* */
+/* env is a pointer to a string that contains the fontname. */
+/* */
+/* 1) initialize the font - global indicates it has been done */
+/* 2) load the font */
+/* 3) use the font to call getInfo for that value. */
+/***================================================================***/
+
+void QueryFontLib(env,infoName,infoValue,rcodeP)
+char *env;
+char *infoName;
+pointer infoValue; /* parameter returned here */
+int *rcodeP;
+{
+
+ int rc,N,i;
+ psdict *dictP;
+ psobj nameObj;
+ psobj *valueP;
+
+ /* Has the FontP initialized? If not, then */
+ /* Initialize */
+ if (FontP == NULL) {
+ InitImager();
+ if (!(initFont())) {
+ *rcodeP = 1;
+ return;
+ }
+ }
+ /* if the env is null, then use font already loaded */
+ /* if the not same font name, reset and load next font */
+ if ( (env) && (strcmp(env,CurFontName) != 0 ) ) {
+ /* restore the virtual memory and eliminate old font */
+ rc = readFont(env);
+ if (rc != 0 ) {
+ strcpy(CurFontName, ""); /* no font loaded */
+ *rcodeP = 1;
+ return;
+ }
+ }
+ dictP = FontP->fontInfoP;
+ objFormatName(&nameObj,strlen(infoName),infoName);
+ N = SearchDictName(dictP,&nameObj);
+ /* if found */
+ if ( N > 0 ) {
+ *rcodeP = 0;
+ switch (dictP[N].value.type) {
+ case OBJ_ARRAY:
+ valueP = dictP[N].value.data.arrayP;
+ if (strcmp(infoName,"FontMatrix") == 0) {
+ /* 6 elments, return them as floats */
+ for (i=0;i<6;i++) {
+ if (valueP->type == OBJ_INTEGER )
+ ((float *)infoValue)[i] = valueP->data.integer;
+ else
+ ((float *)infoValue)[i] = valueP->data.real;
+ valueP++;
+ }
+ }
+ if (strcmp(infoName,"FontBBox") == 0) {
+ /* 4 elments for Bounding Box. all integers */
+ for (i=0;i<4;i++) {
+ ((int *)infoValue)[i] = valueP->data.integer;
+ valueP++;
+ }
+ break;
+ case OBJ_INTEGER:
+ case OBJ_BOOLEAN:
+ *((int *)infoValue) = dictP[N].value.data.integer;
+ break;
+ case OBJ_REAL:
+ *((float *)infoValue) = dictP[N].value.data.real;
+ break;
+ case OBJ_NAME:
+ case OBJ_STRING:
+ *((char **)infoValue) = dictP[N].value.data.valueP;
+ break;
+ default:
+ *rcodeP = 1;
+ break;
+ }
+ }
+ }
+ else *rcodeP = 1;
+}
+
+
+/***================================================================***/
+/* RMz: instead of code, which is a character pointer to the name
+ of the character, we use "ev" which is a pointer to a desired
+ encoding vector (or NULL if font-internal encoding should be
+ used) and "index" as an index into the desired encoding vector!
+ The user thus has the opportunity of supplying whatever encoding
+ he wants. Font_Ptr is the pointer to the local psfont-structure.
+ */
+xobject fontfcnB_string( int FontID, int modflag,
+ struct XYspace *S, char **ev,
+ unsigned char *string, int no_chars,
+ int *mode, psfont *Font_Ptr,
+ int *kern_pairs, long spacewidth,
+ int do_raster,
+ float strokewidth)
+{
+
+ psobj *charnameP; /* points to psobj that is name of character*/
+ FontInfo *pAFMData=NULL;
+ int i=-1;
+ int j=0;
+ int k=0;
+ long acc_width=0;
+ int numPieces=1;
+ int N;
+ T1_PATHPOINT currdisp;
+ int basechar;
+
+ psdict *CharStringsDictP; /* dictionary with char strings */
+ psobj CodeName; /* used to store the translation of the name*/
+ psobj *SubrsArrayP;
+ psobj *theStringP;
+ int localmode=0;
+
+ struct segment *charpath=NULL; /* the path for this character */
+ struct segment *tmppath1=NULL;
+ struct segment *tmppath2=NULL;
+ struct segment *tmppath3=NULL;
+ struct segment *tmppath4=NULL;
+ struct segment *tmppath5=NULL;
+
+
+ /* set the global font pointer to the address of already allocated
+ structure and setup pointers*/
+ FontP=Font_Ptr;
+ CharStringsDictP = FontP->CharStringsP;
+ SubrsArrayP = &(FontP->Subrs);
+ charnameP = &CodeName;
+
+
+ /* In the following for-loop, all characters are processed, one after
+ the other. Between them, the amount of kerning is inserted.
+ The number of path variables used is somewhat numerous. We use the
+ follwing conventions:
+
+ charpath: the overall path of the string.
+ tmppath5: the overall path of one component (possibly a composite symbol)
+ tmppath2: the path of a simple char or base char of a composite
+ tmppath4: the path of all "accents" of a composite symbol
+ */
+ for (k=0; k<no_chars;k++) {
+ if (ev==NULL){ /* font-internal encoding should be used */
+ charnameP = &CodeName;
+ charnameP->len = FontP->fontInfoP[ENCODING].value.data.arrayP[string[k]].len;
+ charnameP->data.stringP = (unsigned char *) FontP->fontInfoP[ENCODING].value.data.arrayP[string[k]].data.arrayP;
+ }
+ else { /* some user-supplied encoding is to be used */
+ charnameP = &CodeName;
+ charnameP->len = strlen(ev[string[k]]);
+ charnameP->data.stringP = (unsigned char*) ev[string[k]];
+ }
+
+ /* Spacing is to be under users control: => if space is the charname, don't
+ raster it. Rather, generate a horizontal movement of spacewidth: */
+ if (strcmp((char *)charnameP->data.stringP, "space")==0){
+ tmppath5=(struct segment *)ILoc(S, spacewidth,0);
+ acc_width += spacewidth;
+ }
+ else {
+ /* here a character or composite character is to be constructed */
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+
+ /* search the CharString for this charname as key */
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ if (basechar<=0) {
+ /* Check first, whether a char in question is a composite char */
+ if ((i=isCompositeChar( FontID, CurCharName))>-1) {
+ /* i is now the index of the composite char definitions
+ (starting at 0). At this point it is clear that AFM-info
+ must be present -> fetch first component of composite char. */
+ pAFMData=pFontBase->pFontArray[FontID].pAFMData;
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[0].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[0].pccName;
+ numPieces=pAFMData->ccd[i].numOfPieces;
+
+ if ((basechar=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* this is bad, AFM-file and font file do not match. This
+ will most probably lead to errors or inconsistencies later.
+ However, we substitute .notdef and inform the user via
+ logfile and T1_errno. */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[0].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=T1ERR_COMPOSITE_CHAR;
+ }
+ }
+ }
+
+ if (basechar<=0) { /* This means the requested char is unknown or the
+ base char of a composite is not found ->
+ we substitute .notdef */
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* Font must be completely damaged if it doesn't define a .notdef */
+ if (basechar<=0) {
+ *mode=FF_PARSE_ERROR;
+ return(NULL);
+ }
+ } /* if (basechar<=0) */
+ /* basechar is now the index of the base character in the CharStrings
+ dictionary */
+
+ /* we provide the Type1Char() procedure with the name of the character
+ to rasterize for debugging purposes */
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ /* get CharString and character path */
+ theStringP = &(CharStringsDictP[basechar].value);
+ tmppath2 = (struct segment *) Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName,strokewidth,0);
+ strcpy( BaseCharName, CurCharName);
+ /* if Type1Char reports an error, clean up and return */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR) {
+ if (charpath!=NULL) {
+ KillPath( charpath);
+ }
+ if (tmppath1!=NULL) {
+ KillPath( tmppath1);
+ }
+ if (tmppath2!=NULL) {
+ KillPath( tmppath2);
+ }
+ if (tmppath3!=NULL) {
+ KillPath( tmppath3);
+ }
+ if (tmppath4!=NULL) {
+ KillPath( tmppath4);
+ }
+ if (tmppath5!=NULL) {
+ KillPath( tmppath5);
+ }
+ return(NULL);
+ }
+
+ /* Defer rastering to later, we first have to handle the composite
+ symbols */
+ for (j=1; j<numPieces; j++) {
+ /* get composite symbol name */
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[j].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[j].pccName;
+ /* get CharString definition */
+ if ((N=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* handling of errors, see comments above ... */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[j].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ N = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* an undefined .notdef is fatal -> clean up and return */
+ if (N<=0) {
+ *mode=FF_PARSE_ERROR;
+ if (charpath!=NULL) {
+ KillPath( charpath);
+ }
+ if (tmppath1!=NULL) {
+ KillPath( tmppath1);
+ }
+ if (tmppath2!=NULL) {
+ KillPath( tmppath2);
+ }
+ if (tmppath3!=NULL) {
+ KillPath( tmppath3);
+ }
+ if (tmppath4!=NULL) {
+ KillPath( tmppath4);
+ }
+ if (tmppath5!=NULL) {
+ KillPath( tmppath5);
+ }
+ return(NULL);
+ }
+ }
+ theStringP = &(CharStringsDictP[N].value);
+ tmppath1=(struct segment *)ILoc(S,
+ pAFMData->ccd[i].pieces[j].deltax,
+ pAFMData->ccd[i].pieces[j].deltay);
+
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ tmppath5=(struct segment *)Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName,strokewidth,0);
+ /* return if Type1Char reports an error */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR)
+ return(NULL);
+ /* get escapement of current symbol */
+ currdisp=getDisplacement( tmppath5);
+ /* concat displacement and symbol path */
+ tmppath5=(struct segment *)Join(tmppath1,tmppath5);
+ /* for composite symbols we have to step back the char escapement.
+ this is, in order to be able to use accents that cause a
+ non zero displacement of the current point! We further have to
+ step back the displacement from composite char data. */
+ tmppath1=(struct segment *)t1_PathSegment( MOVETYPE, -currdisp.x, -currdisp.y);
+ tmppath3=(struct segment *)ILoc(S,
+ -pAFMData->ccd[i].pieces[j].deltax,
+ -pAFMData->ccd[i].pieces[j].deltay);
+ tmppath3=(struct segment *)Join(tmppath1,tmppath3);
+ /* create path, or, respectively, append to existing path */
+ if (tmppath4==NULL) {
+ tmppath4=(struct segment *)Join(tmppath5,tmppath3);
+ }
+ else {
+ tmppath5=(struct segment *)Join(tmppath5,tmppath3);
+ tmppath4=(struct segment *)Join(tmppath4,tmppath5);
+ }
+ }
+
+ /* concat composite symbols and base char. We use tmppath5 to store
+ the path of the resulting (possibly composite) character. */
+ if (tmppath4==NULL) { /* no previous composite symbols */
+ tmppath5=tmppath2; /* a simple char */
+ }
+ else {
+ tmppath5=(struct segment *)Join(tmppath4,tmppath2);
+ }
+
+
+ /* Accumulate displacement, but be careful: In case of composite
+ characters, we have to take the escapement of the base char only
+ into account, because accents do not cause spacing. The path is
+ constructed in a way that this automatically matches.
+ */
+ if (numPieces>1) { /* composite character */
+ acc_width +=pFontBase->pFontArray[FontID].pAFMData->ccd[-(pFontBase->pFontArray[FontID].pEncMap[string[k]]+1)].wx;
+ }
+ else { /* ordinary character */
+ acc_width +=pFontBase->pFontArray[FontID].pAFMData->cmi[pFontBase->pFontArray[FontID].pEncMap[string[k]]-1].wx;
+ }
+
+ } /* else (if (char==space) */
+
+ /* character path is now stored in tmppath5. It may be a composite character.
+ Insert kerning amount, if it is not the last character of the string. */
+ if (k<no_chars-1){
+ tmppath2=(struct segment *)ILoc(S,kern_pairs[k],0);
+ tmppath5=(struct segment *)Join(tmppath5,tmppath2);
+ acc_width += kern_pairs[k];
+ }
+ if (charpath!=NULL){
+ charpath=(struct segment *)Join(charpath,tmppath5);
+ }
+ else{
+ charpath=(struct segment *)tmppath5;
+ }
+ /* reset the temporary paths so that constructing composite
+ characters wiil continue to work properly in the next interation. */
+ tmppath1=NULL;
+ tmppath2=NULL;
+ tmppath3=NULL;
+ tmppath4=NULL;
+ tmppath5=NULL;
+ /* reset composition parameters */
+ i=-1;
+ numPieces=1;
+
+ } /* for (k<no_chars) */
+
+
+ /* Take care for underlining and such */
+ if (modflag & T1_UNDERLINE){
+ tmppath2=(struct segment *)Type1Line(FontP,S,
+ pFontBase->pFontArray[FontID].UndrLnPos,
+ pFontBase->pFontArray[FontID].UndrLnThick,
+ (float) acc_width,strokewidth);
+ charpath=(struct segment *)Join(charpath,tmppath2);
+ }
+ if (modflag & T1_OVERLINE){
+ tmppath2=(struct segment *)Type1Line(FontP,S,
+ pFontBase->pFontArray[FontID].OvrLnPos,
+ pFontBase->pFontArray[FontID].OvrLnThick,
+ (float) acc_width,strokewidth);
+ charpath=(struct segment *)Join(charpath,tmppath2);
+ }
+ if (modflag & T1_OVERSTRIKE){
+ tmppath2=(struct segment *)Type1Line(FontP,S,
+ pFontBase->pFontArray[FontID].OvrStrkPos,
+ pFontBase->pFontArray[FontID].OvrStrkThick,
+ (float) acc_width,strokewidth);
+ charpath=(struct segment *)Join(charpath,tmppath2);
+ }
+
+ /*
+ printf("charpath->type: %x\n",charpath->type);
+ printf("path1->type: %x\n",path1->type);
+ printf("path2->type: %x\n",path2->type);
+ */
+
+ /* if Type1Char reported an error, then return */
+
+ if ( *mode == FF_PARSE_ERROR) return(NULL);
+ if ( *mode == FF_PATH_ERROR) return(NULL);
+ if (do_raster) {
+ /* fill with winding rule unless path was requested */
+ if (*mode != FF_PATH) {
+ charpath = (struct segment *) Interior((path) charpath,WINDINGRULE+CONTINUITY);
+ }
+ }
+
+ if (*mode==0)
+ *mode=localmode;
+
+ return((path)charpath);
+}
+
+
+/* This special variant is for generating character bitmaps from
+ charactername */
+xobject fontfcnB_ByName( int FontID, int modflag,
+ struct XYspace *S,
+ unsigned char *charname,
+ int *mode, psfont *Font_Ptr,
+ int do_raster)
+{
+
+ psobj *charnameP; /* points to psobj that is name of character*/
+ FontInfo *pAFMData=NULL;
+ int i=-1;
+ int j=0;
+ int numPieces=1;
+ int N;
+ T1_PATHPOINT currdisp;
+ int basechar;
+
+ psdict *CharStringsDictP; /* dictionary with char strings */
+ psobj CodeName; /* used to store the translation of the name*/
+ psobj *SubrsArrayP;
+ psobj *theStringP;
+ int localmode=0;
+
+ struct segment *charpath=NULL; /* the path for this character */
+ struct segment *tmppath1=NULL;
+ struct segment *tmppath2=NULL;
+ struct segment *tmppath3=NULL;
+ struct segment *tmppath4=NULL;
+
+
+ /* set the global font pointer to the address of already allocated
+ structure and setup pointers*/
+ FontP=Font_Ptr;
+ CharStringsDictP = FontP->CharStringsP;
+ SubrsArrayP = &(FontP->Subrs);
+ charnameP = &CodeName;
+
+ charnameP->len = strlen((char*)charname);
+ charnameP->data.stringP = charname;
+
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+
+
+ /* search the chars string for this charname as key */
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ if (basechar<=0) {
+ /* Check first, whether a char in question is a composite char */
+ if ((i=isCompositeChar( FontID, CurCharName))>-1) {
+ /* i is now the index of the composite char definitions
+ (starting at 0). At this point it is clear that AFM-info
+ must be present -> fetch first component of composite char. */
+ pAFMData=pFontBase->pFontArray[FontID].pAFMData;
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[0].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[0].pccName;
+ numPieces=pAFMData->ccd[i].numOfPieces;
+
+ if ((basechar=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* this is bad, AFM-file and font file do not match. This
+ will most probably lead to errors or inconsistencies later.
+ However, we substitute .notdef and inform the user via
+ logfile and T1_errno. */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[0].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ T1_errno=T1ERR_COMPOSITE_CHAR;
+ }
+ }
+ }
+
+ if (basechar<=0) { /* This means the requested char is unknown or the
+ base char of a composite is not found ->
+ we substitute .notdef */
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ basechar = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* Font must be completely damaged if it doesn't define a .notdef */
+ if (basechar<=0) {
+ *mode=FF_PARSE_ERROR;
+ return(NULL);
+ }
+ } /* if (basechar<=0) */
+ /* basechar is now the index of the base character in the CharStrings
+ dictionary */
+
+ /* we provide the Type1Char() procedure with the name of the character
+ to rasterize for debugging purposes */
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ /* get CharString and character path */
+ theStringP = &(CharStringsDictP[basechar].value);
+ tmppath2 = (struct segment *) Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName, 0.0f, 0);
+ /* if Type1Char reported an error, then return */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR)
+ return(NULL);
+
+ /* Defer rastering to later, we first have to handle the composite
+ symbols */
+ for (j=1; j<numPieces; j++) {
+ /* get composite symbol name */
+ charnameP->len=strlen( pAFMData->ccd[i].pieces[j].pccName);
+ charnameP->data.stringP=(unsigned char*)pAFMData->ccd[i].pieces[j].pccName;
+ /* get CharString definition */
+ if ((N=SearchDictName(CharStringsDictP,charnameP))<=0) {
+ /* handling of errors, see comments above ... */
+ sprintf( err_warn_msg_buf,
+ "Charstring \"%s\" needed to construct composite char \"%s\" not defined (FontID=%d)",
+ pAFMData->ccd[i].pieces[j].pccName,
+ pAFMData->ccd[i].ccName, FontID);
+ T1_PrintLog( "fontfcnB():", err_warn_msg_buf, T1LOG_WARNING);
+ charnameP = &CodeName;
+ charnameP->len = 7;
+ charnameP->data.stringP = (unsigned char *) notdef;
+ N = SearchDictName(CharStringsDictP,charnameP);
+ localmode=FF_NOTDEF_SUBST;
+ /* damaged Font */
+ if (N<=0) {
+ *mode=FF_PARSE_ERROR;
+ if (charpath!=NULL) {
+ KillPath( charpath);
+ }
+ return(NULL);
+ }
+ }
+ theStringP = &(CharStringsDictP[N].value);
+ tmppath1=(struct segment *)ILoc(S,
+ pAFMData->ccd[i].pieces[j].deltax,
+ pAFMData->ccd[i].pieces[j].deltay);
+
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ charpath=(struct segment *)Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,mode,CurCharName,0.0f,0);
+ /* return if Type1Char reports an error */
+ if ( *mode == FF_PARSE_ERROR || *mode==FF_PATH_ERROR)
+ return(NULL);
+ /* get escapement of current symbol */
+ currdisp=getDisplacement( charpath);
+ /* concat displacement and symbol path */
+ charpath=(struct segment *)Join(tmppath1,charpath);
+ /* for composite symbols we have to step back the char escapement.
+ this is, in order to be able to use accents that cause a
+ non zero displacement of the current point! We further have to
+ step back the displacement from composite char data. */
+ tmppath1=(struct segment *)t1_PathSegment( MOVETYPE, -currdisp.x, -currdisp.y);
+ tmppath3=(struct segment *)ILoc(S,
+ -pAFMData->ccd[i].pieces[j].deltax,
+ -pAFMData->ccd[i].pieces[j].deltay);
+ tmppath3=(struct segment *)Join(tmppath1,tmppath3);
+ /* create path, or, respectively, append to existing path */
+ if (tmppath4==NULL) {
+ tmppath4=(struct segment *)Join(charpath,tmppath3);
+ }
+ else {
+ charpath=(struct segment *)Join(charpath,tmppath3);
+ tmppath4=(struct segment *)Join(tmppath4,charpath);
+ }
+ }
+
+ /* concat composite symbols and base char */
+ if (tmppath4==NULL) { /* no previous composite symbols */
+ charpath=tmppath2; /* a simple char */
+ }
+ else {
+ charpath=(struct segment *)Join(tmppath4,tmppath2);
+ }
+
+
+ if (do_raster) {
+ /* fill with winding rule unless path was requested */
+ if (*mode != FF_PATH) {
+ charpath = (struct segment *)Interior(charpath,WINDINGRULE+CONTINUITY);
+ }
+ }
+
+ if (*mode==0)
+ *mode=localmode;
+
+ return((xobject) charpath);
+
+}
+
+
+xobject fontfcnRect( float width,
+ float height,
+ struct XYspace* S,
+ int *mode,
+ int do_raster,
+ float strokewidth)
+{
+ struct segment *charpath = NULL; /* the path for this character (rectangle) */
+
+ charpath = (struct segment *) Type1Line( NULL, S,
+ 0.5f * height, /* position */
+ height, /* thickness */
+ -width, /* width */
+ strokewidth /* strokewidth */
+ );
+
+ if (do_raster) {
+ /* fill with winding rule unless path was requested */
+ if (*mode != FF_PATH) {
+ charpath = (struct segment *)Interior(charpath,WINDINGRULE+CONTINUITY);
+ }
+ }
+
+ return((xobject) charpath);
+
+}
+
+
+
+/* T1int_QuerySEAC(): Query for Type of character definition of index "index".
+
+ Returns: 0 if charstring for currenc[index] not defined
+ 1 if charstring defines a self-containing character
+ 2 if charstring references other definition by means of
+ the SEAC directive.
+*/
+int T1int_QuerySEAC( int FontID,
+ unsigned char index,
+ unsigned char* basepiece,
+ unsigned char* accpiece
+ )
+{
+
+ psobj *charnameP; /* points to psobj that is name of character*/
+ int thischar;
+ int mode = 0;
+
+ psdict *CharStringsDictP; /* dictionary with char strings */
+ psobj CodeName; /* used to store the translation of the name*/
+ psobj *SubrsArrayP;
+ psobj *theStringP;
+ char **ev;
+ struct XYspace *S;
+ struct segment *path=NULL; /* the path for this character */
+
+
+ /* set the global font pointer to the address of already allocated
+ structure and setup pointers*/
+ FontP=pFontBase->pFontArray[FontID].pType1Data;
+ CharStringsDictP = FontP->CharStringsP;
+ SubrsArrayP = &(FontP->Subrs);
+ charnameP = &CodeName;
+
+ /* get encoding */
+ ev=pFontBase->pFontArray[FontID].pFontEnc;
+
+ if (ev==NULL){ /* font-internal encoding should be used */
+ charnameP->len = FontP->fontInfoP[ENCODING].value.data.arrayP[index].len;
+ charnameP->data.stringP = (unsigned char *) FontP->fontInfoP[ENCODING].value.data.arrayP[index].data.arrayP;
+ }
+ else{ /* some user-supplied encoding is to be used */
+ charnameP->len = strlen(ev[index]);
+ charnameP->data.stringP = (unsigned char *) ev[index];
+ }
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+
+
+ /* search the chars string for this charname as key */
+ thischar = SearchDictName(CharStringsDictP,charnameP);
+ /* thischar is now the index of the base character in the CharStrings
+ dictionary */
+
+ if ( thischar <= 0 ) {
+ /* CharString not defined, return */
+ return 0;
+ }
+
+ /* Setup NULL-space, not needed when paths aren't created */
+ S = NULL;
+
+
+ /* we provide the Type1Char() procedure with the name of the character
+ to rasterize for debugging purposes */
+ strncpy( (char *)CurCharName, (char *)charnameP->data.stringP, charnameP->len);
+ CurCharName[charnameP->len]='\0';
+ /* get CharString and character path */
+ theStringP = &(CharStringsDictP[thischar].value);
+
+ path = (struct segment *) Type1Char(FontP,S,theStringP,SubrsArrayP,NULL,
+ FontP->BluesP,&mode,CurCharName,0, 1);
+
+ /* if Type1Char reported an error, then return */
+ if ( mode == FF_PARSE_ERROR || mode==FF_PATH_ERROR) {
+ return -1;
+ }
+
+ if ( T1int_Type1QuerySEAC( basepiece, accpiece) > 0 ) {
+ return 2;
+ }
+
+ return 1;
+
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.h
new file mode 100644
index 00000000000..55275ad8560
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfcn.h
@@ -0,0 +1,99 @@
+/* $XConsortium: fontfcn.h,v 1.3 92/03/26 16:42:23 eswu Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Definition of a PostScript FONT */
+typedef struct ps_font {
+ char *vm_start;
+ psobj FontFileName;
+ psobj Subrs;
+ psdict *CharStringsP;
+ psdict *Private;
+ psdict *fontInfoP;
+struct blues_struct *BluesP;
+} psfont;
+/***================================================================***/
+/* Routines in scan_font */
+/***================================================================***/
+
+extern boolean Init_StdEnc();
+extern int scan_font();
+extern int GetFontInfo();
+/***================================================================***/
+/* Return codes from scan_font */
+/***================================================================***/
+#define SCAN_OK 0
+#define SCAN_FILE_EOF -1
+#define SCAN_ERROR -2
+#define SCAN_OUT_OF_MEMORY -3
+#define SCAN_FILE_OPEN_ERROR -4
+#define SCAN_MMFONT -5 /* font is a Multiple Master Font */
+#define SCAN_TRUE -6
+#define SCAN_FALSE -7
+#define SCAN_END -8
+
+/***================================================================***/
+/* Name of FontInfo fields */
+/***================================================================***/
+
+#define FONTNAME 1
+#define PAINTTYPE 2
+#define FONTTYPENUM 3
+#define FONTMATRIX 4
+#define FONTBBOX 5
+#define UNIQUEID 6
+#define STROKEWIDTH 7
+#define VERSION 8
+#define NOTICE 9
+#define FULLNAME 10
+#define FAMILYNAME 11
+#define WEIGHT 12
+#define ITALICANGLE 13
+#define ISFIXEDPITCH 14
+#define UNDERLINEPOSITION 15
+#define UNDERLINETHICKNESS 16
+#define ENCODING 17
+/***================================================================***/
+/* Name of Private values */
+/***================================================================***/
+#define BLUEVALUES 1
+#define OTHERBLUES 2
+#define FAMILYBLUES 3
+#define FAMILYOTHERBLUES 4
+#define BLUESCALE 5
+#define BLUESHIFT 6
+#define BLUEFUZZ 7
+#define STDHW 8
+#define STDVW 9
+#define STEMSNAPH 10
+#define STEMSNAPV 11
+#define FORCEBOLD 12
+#define LANGUAGEGROUP 13
+#define LENIV 14
+#define RNDSTEMUP 15
+#define EXPANSIONFACTOR 16
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfile.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfile.h
new file mode 100644
index 00000000000..166aac3a01e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontfile.h
@@ -0,0 +1,72 @@
+/*
+ * $XConsortium: fontfile.h,v 1.1 91/05/11 09:11:58 rws Exp $
+ *
+ * Copyright 1991 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifndef _FONTFILE_H_
+#define _FONTFILE_H_
+typedef struct _FontEntry *FontEntryPtr;
+typedef struct _FontTable *FontTablePtr;
+typedef struct _FontName *FontNamePtr;
+typedef struct _FontScaled *FontScaledPtr;
+typedef struct _FontScalableExtra *FontScalableExtraPtr;
+typedef struct _FontScalableEntry *FontScalableEntryPtr;
+typedef struct _FontScaleAliasEntry *FontScaleAliasEntryPtr;
+typedef struct _FontBitmapEntry *FontBitmapEntryPtr;
+typedef struct _FontAliasEntry *FontAliasEntryPtr;
+typedef struct _FontBCEntry *FontBCEntryPtr;
+typedef struct _FontDirectory *FontDirectoryPtr;
+typedef struct _FontRenderer *FontRendererPtr;
+
+#define NullFontEntry ((FontEntryPtr) 0)
+#define NullFontTable ((FontTablePtr) 0)
+#define NullFontName ((FontNamePtr) 0)
+#define NullFontScaled ((FontScaled) 0)
+#define NullFontScalableExtra ((FontScalableExtra) 0)
+#define NullFontscalableEntry ((FontScalableEntry) 0)
+#define NullFontScaleAliasEntry ((FontScaleAliasEntry) 0)
+#define NullFontBitmapEntry ((FontBitmapEntry) 0)
+#define NullFontAliasEntry ((FontAliasEntry) 0)
+#define NullFontBCEntry ((FontBCEntry) 0)
+#define NullFontDirectory ((FontDirectoryPtr) 0)
+#define NullFontRenderer ((FontRendererPtr) 0)
+
+#define FONT_ENTRY_SCALABLE 0
+#define FONT_ENTRY_SCALE_ALIAS 1
+#define FONT_ENTRY_BITMAP 2
+#define FONT_ENTRY_ALIAS 3
+#define FONT_ENTRY_BC 4
+
+#define MAXFONTNAMELEN 1024
+#define MAXFONTFILENAMELEN 1024
+
+#define FontDirFile "fonts.dir"
+#define FontAliasFile "fonts.alias"
+#define FontScalableFile "fonts.scale"
+
+extern FontEntryPtr FontFileFindNameInDir ();
+extern FontDirectoryPtr FontFileMakeDir ();
+extern FontRendererPtr FontFileMatchRenderer ();
+extern char *SaveString ();
+extern FontScaledPtr FontFileFindScaledInstance ();
+#endif /* _FONTFILE_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontmisc.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontmisc.h
new file mode 100644
index 00000000000..e6a68332755
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontmisc.h
@@ -0,0 +1,63 @@
+/*
+ * $XConsortium: fontmisc.h,v 1.5 91/05/12 16:15:48 rws Exp $
+ *
+ * Copyright 1991 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifndef _FONTMISC_H_
+#define _FONTMISC_H_
+
+#ifdef XSERVER
+#include "Xfuncs.h"
+#endif
+
+typedef unsigned char *pointer;
+/* To suppress gcc-warning (11/25/97, RMz) */
+#ifndef T1DELETE_C
+typedef int Bool;
+#endif
+
+#ifndef X_PROTOCOL
+typedef unsigned long Atom;
+typedef unsigned long XID;
+#endif
+#ifndef LSBFirst
+#define LSBFirst 0
+#define MSBFirst 1
+#endif
+
+#ifndef None
+#define None 0l
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+extern char *NameForAtom ();
+
+#define lowbit(x) ((x) & (~(x) + 1))
+
+#define assert(x)
+
+#endif /* _FONTMISC_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fonts.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fonts.h
new file mode 100644
index 00000000000..cf29c3c8f25
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fonts.h
@@ -0,0 +1,49 @@
+/* $XConsortium: fonts.h,v 1.2 91/10/10 11:18:09 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+/* STUB */
+
+#define CopyFont(f) f
+#define UniqueFont(f) f
+#define KillFont(f)
+#define KillText(t)
+#define CopyText(t) t
+#define I_DumpText(t)
+#define CoerceText(t) t
+#define TextDelta(t,pt)
+#define XformText(p,s)
+#define GimeSpace() FALSE
+
+#define LibInit()
+#define InitFonts()
+#define InitFiles()
+#define TraceClose()
+
+#define FF_PARSE_ERROR -1
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontstruct.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontstruct.h
new file mode 100644
index 00000000000..39c40f477f4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontstruct.h
@@ -0,0 +1,224 @@
+/* $Header: fontstruct.h,v 1.10 91/07/22 15:37:41 keith Exp $ */
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+ @(#)fontstruct.h 3.2 91/04/15
+
+******************************************************************/
+
+#ifndef FONTSTR_H
+#define FONTSTR_H
+
+#ifdef XSERVER
+#include <X11/Xproto.h>
+#else
+#include "Xstuff.h"
+#endif
+
+#include "font.h"
+
+/*
+ * This version of the server font data strucutre is only for describing
+ * the in memory data structure. The file structure is not necessarily a
+ * copy of this. That is up to the compiler and the OS layer font loading
+ * machinery.
+ */
+
+#define GLYPHPADOPTIONS 4 /* 1, 2, 4, or 8 */
+
+typedef enum {
+ Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit
+} FontEncoding;
+
+typedef struct _FontProp {
+ long name;
+ long value; /* assumes ATOM is not larger than INT32 */
+} FontPropRec;
+
+typedef struct _FontResolution {
+ unsigned short x_resolution;
+ unsigned short y_resolution;
+ unsigned short point_size;
+} FontResolutionRec;
+
+typedef struct _ExtentInfo {
+ DrawDirection drawDirection;
+ int fontAscent;
+ int fontDescent;
+ int overallAscent;
+ int overallDescent;
+ int overallWidth;
+ int overallLeft;
+ int overallRight;
+} ExtentInfoRec;
+
+typedef struct _CharInfo {
+ xCharInfo metrics; /* info preformatted for Queries */
+ char *bits; /* pointer to glyph image */
+} CharInfoRec;
+
+/*
+ * Font is created at font load time. It is specific to a single encoding.
+ * e.g. not all of the glyphs in a font may be part of a single encoding.
+ */
+
+typedef struct _FontInfo {
+ unsigned short firstCol;
+ unsigned short lastCol;
+ unsigned short firstRow;
+ unsigned short lastRow;
+ unsigned short defaultCh;
+ unsigned int noOverlap:1;
+ unsigned int terminalFont:1;
+ unsigned int constantMetrics:1;
+ unsigned int constantWidth:1;
+ unsigned int inkInside:1;
+ unsigned int inkMetrics:1;
+ unsigned int allExist:1;
+ unsigned int drawDirection:2;
+ unsigned int cachable:1;
+ unsigned int anamorphic:1;
+ short maxOverlap;
+ short pad;
+ xCharInfo maxbounds;
+ xCharInfo minbounds;
+ xCharInfo ink_maxbounds;
+ xCharInfo ink_minbounds;
+ short fontAscent;
+ short fontDescent;
+ int nprops;
+ FontPropPtr props;
+ char *isStringProp;
+} FontInfoRec;
+
+typedef struct _Font {
+ int refcnt;
+ FontInfoRec info;
+ char bit;
+ char byte;
+ char glyph;
+ char scan;
+ fsBitmapFormat format;
+ int (*get_glyphs) ( /* font, count, chars, encoding, count, glyphs */ );
+ int (*get_metrics) ( /* font, count, chars, encoding, count, glyphs */ );
+ int (*get_bitmaps) (/* client, font, flags, ranges, nranges,
+ nextents, extents */ );
+ int (*get_extents) (/* client, font, format, flags, ranges,
+ nranges, nglyphs, offsets, glyphs */ );
+ void (*unload_font) ( /* font */ );
+ FontPathElementPtr fpe;
+ pointer svrPrivate;
+ pointer fontPrivate;
+ pointer fpePrivate;
+ int maxPrivate;
+ pointer *devPrivates;
+} FontRec;
+
+extern Bool _FontSetNewPrivate (/* pFont, n, ptr */);
+extern int AllocateFontPrivateIndex ();
+
+#define FontGetPrivate(pFont,n) ((n) > (pFont)->maxPrivate ? (pointer) 0 : \
+ (pFont)->devPrivates[n])
+
+#define FontSetPrivate(pFont,n,ptr) ((n) > (pFont)->maxPrivate ? \
+ _FontSetNewPrivate (pFont, n, ptr) : \
+ ((((pFont)->devPrivates[n] = (ptr)) != 0) || TRUE))
+
+typedef struct _FontNames {
+ int nnames;
+ int size;
+ int *length;
+ char **names;
+} FontNamesRec;
+
+/* External view of font paths */
+typedef struct _FontPathElement {
+ int name_length;
+ char *name;
+ int type;
+ int refcount;
+ pointer private;
+} FontPathElementRec;
+
+typedef struct _FPEFunctions {
+ int (*name_check) ( /* name */ );
+ int (*init_fpe) ( /* fpe */ );
+ int (*reset_fpe) ( /* fpe */ );
+ int (*free_fpe) ( /* fpe */ );
+ int (*open_font) ( /* client, fpe, flags, name, namelen, format,
+ fid, ppfont, alias */ );
+ int (*close_font) ( /* pfont */ );
+ int (*list_fonts) ( /* client, fpe, pattern, patlen, maxnames,
+ paths */ );
+ int (*start_list_fonts_with_info) ( /* client, fpe, name, namelen,
+ maxnames, data */ );
+ int (*list_next_font_with_info) ( /* client, fpe, name, namelen,
+ info, num, data */ );
+ int (*wakeup_fpe) ( /* fpe, mask */ );
+ int (*client_died) ( /* client, fpe */ );
+} FPEFunctionsRec, FPEFunctions;
+
+extern int InitFPETypes();
+
+/*
+ * Various macros for computing values based on contents of
+ * the above structures
+ */
+
+#define GLYPHWIDTHPIXELS(pci) \
+ ((pci)->metrics.rightSideBearing - (pci)->metrics.leftSideBearing)
+
+#define GLYPHHEIGHTPIXELS(pci) \
+ ((pci)->metrics.ascent + (pci)->metrics.descent)
+
+#define GLYPHWIDTHBYTES(pci) (((GLYPHWIDTHPIXELS(pci))+7) >> 3)
+
+#define GLYPHWIDTHPADDED(bc) (((bc)+7) & ~0x7)
+
+#define BYTES_PER_ROW(bits, nbytes) \
+ ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \
+ :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \
+ :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \
+ :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \
+ : 0)
+
+#define BYTES_FOR_GLYPH(ci,pad) (GLYPHHEIGHTPIXELS(ci) * \
+ BYTES_PER_ROW(GLYPHWIDTHPIXELS(ci),pad))
+/*
+ * Macros for computing different bounding boxes for fonts; from
+ * the font protocol
+ */
+
+#define FONT_MAX_ASCENT(pi) ((pi)->fontAscent > (pi)->ink_maxbounds.ascent ? \
+ (pi)->fontAscent : (pi)->ink_maxbounds.ascent)
+#define FONT_MAX_DESCENT(pi) ((pi)->fontDescent > (pi)->ink_maxbounds.descent ? \
+ (pi)->fontDescent : (pi)->ink_maxbounds.descent)
+#define FONT_MAX_HEIGHT(pi) (FONT_MAX_ASCENT(pi) + FONT_MAX_DESCENT(pi))
+#define FONT_MIN_LEFT(pi) ((pi)->ink_minbounds.leftSideBearing < 0 ? \
+ (pi)->ink_minbounds.leftSideBearing : 0)
+#define FONT_MAX_RIGHT(pi) ((pi)->ink_maxbounds.rightSideBearing > \
+ (pi)->ink_maxbounds.characterWidth ? \
+ (pi)->ink_maxbounds.rightSideBearing : \
+ (pi)->ink_maxbounds.characterWidth)
+#define FONT_MAX_WIDTH(pi) (FONT_MAX_RIGHT(pi) - FONT_MIN_LEFT(pi))
+
+#endif /* FONTSTR_H */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontxlfd.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontxlfd.h
new file mode 100644
index 00000000000..282ad6ca5d9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fontxlfd.h
@@ -0,0 +1,45 @@
+/*
+ * $XConsortium: fontxlfd.h,v 1.1 91/05/11 09:12:07 rws Exp $
+ *
+ * Copyright 1990 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifndef _FONTXLFD_H_
+#define _FONTXLFD_H_
+
+
+typedef struct _FontScalable {
+ int pixel,
+ point,
+ x,
+ y,
+ width;
+} FontScalableRec, *FontScalablePtr;
+
+extern Bool FontParseXLFDName();
+
+#define FONT_XLFD_REPLACE_NONE 0
+#define FONT_XLFD_REPLACE_STAR 1
+#define FONT_XLFD_REPLACE_ZERO 2
+#define FONT_XLFD_REPLACE_VALUE 3
+
+#endif /* _FONTXLFD_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fsmasks.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fsmasks.h
new file mode 100644
index 00000000000..7904ab85922
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/fsmasks.h
@@ -0,0 +1,72 @@
+/* $XConsortium: fsmasks.h,v 1.2 91/05/13 16:46:16 gildea Exp $ */
+/*
+ * Copyright 1990, 1991 Network Computing Devices;
+ * Portions Copyright 1987 by Digital Equipment Corporation and the
+ * Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this protoype software
+ * and its documentation to Members and Affiliates of the MIT X Consortium
+ * any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of Network Computing Devices, Digital or
+ * MIT not be used in advertising or publicity pertaining to distribution of
+ * the software without specific, written prior permission.
+ *
+ * NETWORK COMPUTING DEVICES, DIGITAL AND MIT DISCLAIM ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, DIGITAL OR MIT BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * @(#)fsmasks.h 4.1 91/05/02
+ *
+ */
+
+/*
+ * masks & values used by the font lib and the font server
+ */
+
+#ifndef _FSMASKS_H_
+#define _FSMASKS_H_
+
+#include "types.h"
+
+/* font format macros */
+#define BitmapFormatByteOrderMask (1L << 0)
+#define BitmapFormatBitOrderMask (1L << 1)
+#define BitmapFormatImageRectMask (3L << 2)
+#define BitmapFormatScanlinePadMask (3L << 8)
+#define BitmapFormatScanlineUnitMask (3L << 12)
+
+#define BitmapFormatByteOrderLSB (0)
+#define BitmapFormatByteOrderMSB (1L << 0)
+#define BitmapFormatBitOrderLSB (0)
+#define BitmapFormatBitOrderMSB (1L << 1)
+
+#define BitmapFormatImageRectMin (0L << 2)
+#define BitmapFormatImageRectMaxWidth (1L << 2)
+#define BitmapFormatImageRectMax (2L << 2)
+
+#define BitmapFormatScanlinePad8 (0L << 8)
+#define BitmapFormatScanlinePad16 (1L << 8)
+#define BitmapFormatScanlinePad32 (2L << 8)
+#define BitmapFormatScanlinePad64 (3L << 8)
+
+#define BitmapFormatScanlineUnit8 (0L << 12)
+#define BitmapFormatScanlineUnit16 (1L << 12)
+#define BitmapFormatScanlineUnit32 (2L << 12)
+#define BitmapFormatScanlineUnit64 (3L << 12)
+
+#define BitmapFormatMaskByte (1L << 0)
+#define BitmapFormatMaskBit (1L << 1)
+#define BitmapFormatMaskImageRectangle (1L << 2)
+#define BitmapFormatMaskScanLinePad (1L << 3)
+#define BitmapFormatMaskScanLineUnit (1L << 4)
+
+typedef ULONG fsBitmapFormat;
+typedef ULONG fsBitmapFormatMask;
+
+#endif /* _FSMASKS_H_ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hdigit.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hdigit.h
new file mode 100644
index 00000000000..064fb2d67c2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hdigit.h
@@ -0,0 +1,104 @@
+/* $XConsortium: hdigit.h,v 1.2 91/10/10 11:18:11 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* -------------------------------------- */
+/* --- MACHINE GENERATED, DO NOT EDIT --- */
+/* -------------------------------------- */
+
+/* ... and yet, I did it.
+ The code would fail on ASCII-encrypted files if the lines
+ were separated by <LF><CR> instead of <LF> (which is typical
+ DOSian, but appearently such files exist). Setting the 13th
+ element in the two LUTs to HWHITE_SPACE cures the problem.
+
+ (RMz (Author of t1lib), 2000-05-18)
+*/
+
+
+#ifndef HDIGIT
+#define HDIGIT 1
+
+/*
+ * Hex Digit Value Table --
+ *
+ * The entries in the Digit Value Table map character codes in the set
+ * {0-9,a-f,A-F} to their numeric values for readhexstring
+ * (00 10...F0 for the high hex digit and 00 01...0F for the low).
+ * The white-space and hex string termination characters are.
+ * mapped to codes > 0xf0 to enable usage by several modules.
+ * 2 tables are build HighHex and LowHex.
+ *
+ */
+
+/* Indicators for special characters in these tables */
+#define HERROR (0xfe)
+#define HWHITE_SPACE (0xfd)
+#define HRIGHT_ANGLE (0xfc)
+#define LAST_HDIGIT (0xf0)
+
+#define HighHexP (HighHex+1)
+unsigned char HighHex[257] = { 0xFF,
+ 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFD,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE,
+ 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
+};
+#define LowHexP (LowHex+1)
+unsigned char LowHex[257] = { 0xFF,
+ 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFD,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE,
+ 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
+ 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
+};
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.c
new file mode 100644
index 00000000000..0eedd4ae75d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.c
@@ -0,0 +1,984 @@
+/* $XConsortium: hints.c,v 1.4 91/10/10 11:18:13 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* HINTS CWEB V0006 ******** */
+/*
+:h1.HINTS Module - Processing Rasterization Hints
+
+&author. Sten F. Andler; continuity by Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Duaine
+W. Pryor, Jr.
+
+
+:h3.Include Files
+
+The included files are:
+*/
+
+#include <stdio.h>
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h"
+#include "hints.h"
+
+/*
+:h3.Functions Provided to the TYPE1IMAGER User
+
+None.
+*/
+
+/*
+:h3.Functions Provided to Other Modules
+
+This module provides the following entry point to other modules:
+*/
+
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.Macros Provided to Other Modules
+
+None.
+*/
+
+/*
+:h2.InitHints() - Initialize hint data structure
+*/
+
+#define MAXLABEL 20
+static struct {
+ int inuse;
+ int computed;
+ struct fractpoint hint;
+} oldHint[MAXLABEL];
+
+#define ODD(x) (((int)(x)) & 01)
+#define FPFLOOR(fp) TOFRACTPEL((fp) >> FRACTBITS)
+#define FPROUND(fp) FPFLOOR((fp) + FPHALF)
+
+void InitHints()
+{
+ int i;
+
+ for (i = 0; i < MAXLABEL; i++)
+ {
+ oldHint[i].inuse = FALSE;
+ oldHint[i].computed = FALSE;
+ }
+}
+
+/*
+:h3.CloseHints(hintP) - Reverse hints that are still open
+*/
+
+void CloseHints(hintP)
+ struct fractpoint *hintP;
+{
+ int i;
+
+ for (i = 0; i < MAXLABEL; i++)
+ {
+ if (oldHint[i].inuse)
+ {
+ hintP->x -= oldHint[i].hint.x;
+ hintP->y -= oldHint[i].hint.y;
+
+ oldHint[i].inuse = FALSE;
+
+ IfTrace3((HintDebug > 1)," Hint %d was open, hint=(%d,%d)\n",
+ i, hintP->x, hintP->y);
+ }
+ }
+}
+
+/*
+:h3.ComputeHint(hP, currX, currY, hintP) - Compute the value of a hint
+*/
+
+static void ComputeHint(hP, currX, currY, hintP)
+ struct hintsegment *hP;
+ fractpel currX, currY;
+ struct fractpoint *hintP;
+{
+ fractpel currRef=0, currWidth=0;
+ int idealWidth;
+ fractpel hintValue=0;
+ char orientation;
+
+/*
+By construction, width is never zero. Therefore we can use the
+width value to determine if the hint has been rotated by a
+multiple of 90 degrees.
+*/
+
+ if (hP->width.y == 0)
+ {
+ orientation = 'v'; /* vertical */
+ IfTrace0((HintDebug > 0)," vertical hint\n");
+ }
+ else if (hP->width.x == 0)
+ {
+ orientation = 'h'; /* horizontal */
+ IfTrace0((HintDebug > 0)," horizontal hint\n");
+ }
+ else
+ {
+ IfTrace0((HintDebug > 0)," hint not vertical or horizontal\n");
+ hintP->x = hintP->y = 0;
+ return;
+ }
+
+ /* Compute currRef and currWidth with a unit of 1 pel */
+ if (orientation == 'v') /* vertical */
+ {
+ currRef = hP->ref.x + currX;
+ currWidth = TYPE1_ABS(hP->width.x);
+ }
+ else if (orientation == 'h') /* horizontal */
+ {
+ currRef = hP->ref.y + currY;
+ currWidth = TYPE1_ABS(hP->width.y);
+ }
+ else /* error */
+ {
+ abort("ComputeHint: invalid orientation", 4);
+ }
+
+ IfTrace4((HintDebug > 1),
+ " currX=%d, currY=%d, currRef=%d, currWidth=%d\n",
+ currX, currY,
+ currRef, currWidth);
+
+ if ((hP->hinttype == 'b') /* Bar or stem */
+ || (hP->hinttype == 's')) /* Serif */
+ {
+ idealWidth = NEARESTPEL(currWidth);
+ if (idealWidth == 0) idealWidth = 1;
+ if (ODD(idealWidth)) /* Is ideal width odd? */
+ {
+ /* center "ref" over pel */
+ hintValue = FPFLOOR(currRef) + FPHALF - currRef;
+ }
+ else
+ {
+ /* align "ref" on pel boundary */
+ hintValue = FPROUND(currRef) - currRef;
+ }
+ if (HintDebug > 2) {
+ IfTrace1(TRUE," idealWidth=%d, ", idealWidth);
+ }
+ }
+ else if (hP->hinttype == 'c') /* Curve extrema */
+ {
+ /* align "ref" on pel boundary */
+ hintValue = FPROUND(currRef) - currRef;
+ }
+ else /* error */
+ {
+ abort("ComputeHint: invalid hinttype", 5);
+ }
+
+ IfTrace1((HintDebug > 1)," hintValue=%d", hintValue);
+
+ if (orientation == 'v') /* vertical */
+ {
+ hintP->x = hintValue;
+ hintP->y = 0;
+ }
+ else if (orientation == 'h') /* horizontal */
+ {
+ hintP->x = 0;
+ hintP->y = hintValue;
+ }
+ else /* error */
+ {
+ abort("ComputeHint: invalid orientation", 6);
+ }
+}
+
+/*
+:h3.ProcessHint(hP, currX, currY, hintP) - Process a rasterization hint
+*/
+
+void ProcessHint(hP, currX, currY, hintP)
+ struct hintsegment *hP;
+ fractpel currX, currY;
+ struct fractpoint *hintP;
+{
+ struct fractpoint thisHint;
+
+ IfTrace4((HintDebug > 1)," ref=(%d,%d), width=(%d,%d)",
+ hP->ref.x, hP->ref.y,
+ hP->width.x, hP->width.y);
+ IfTrace4((HintDebug > 1),", %c %c %c %c",
+ hP->orientation, hP->hinttype,
+ hP->adjusttype, hP->direction);
+ IfTrace1((HintDebug > 1),", label=%d\n", hP->label);
+
+ if ((hP->adjusttype == 'm') /* Move */
+ || (hP->adjusttype == 'a')) /* Adjust */
+ {
+ /* Look up hint in oldHint table */
+ if ((hP->label >= 0) && (hP->label < MAXLABEL))
+ {
+ if (oldHint[hP->label].computed)
+ /* Use old hint value if already computed */
+ {
+ thisHint.x = oldHint[hP->label].hint.x;
+ thisHint.y = oldHint[hP->label].hint.y;
+ oldHint[hP->label].inuse = TRUE;
+ }
+ else
+ /* Compute new value for hint and store it for future use */
+ {
+ ComputeHint(hP, currX, currY, &thisHint);
+
+ oldHint[hP->label].hint.x = thisHint.x;
+ oldHint[hP->label].hint.y = thisHint.y;
+ oldHint[hP->label].inuse = TRUE;
+ oldHint[hP->label].computed = TRUE;
+ }
+ }
+ else /* error */
+ {
+ abort("ProcessHint: invalid label", 7);
+ }
+ }
+ else if (hP->adjusttype == 'r') /* Reverse */
+ {
+ /* Use the inverse of the existing hint value to reverse hint */
+ if ((hP->label >= 0) && (hP->label < MAXLABEL))
+ {
+ if (oldHint[hP->label].inuse)
+ {
+ thisHint.x = -oldHint[hP->label].hint.x;
+ thisHint.y = -oldHint[hP->label].hint.y;
+ oldHint[hP->label].inuse = FALSE;
+ }
+ else /* error */
+ {
+ abort("ProcessHint: label is not in use", 8);
+ }
+ }
+ else /* error */
+ {
+ abort("ProcessHint: invalid label", 9);
+ }
+
+ }
+ else /* error */
+ {
+ abort("ProcessHint: invalid adjusttype", 10);
+ }
+ IfTrace3((HintDebug > 1)," label=%d, thisHint=(%d,%d)\n",
+ hP->label, thisHint.x, thisHint.y);
+
+ hintP->x += thisHint.x;
+ hintP->y += thisHint.y;
+
+ IfTrace2((HintDebug > 1)," hint=(%d,%d)\n",
+ hintP->x, hintP->y);
+}
+
+/*
+:h2 id=subpath.Navigation Through Edge Lists
+
+For continuity checking purposes, we need to navigate through edge
+lists by the "subpath" chains and answer questions about edges. The
+subpath chain links together edges that were part of the same subpath
+(no intervening move segments) when the interior of the path was
+calculated. Here we use the term "edge" to mean every edge list
+that was created in between changes of direction.
+
+The subpath chains are singly-linked circular chains. For the convenience
+of building them, they direction of the list (from edge to edge) is the
+reverse of the order in which they were built. Within any single edge,
+the subpath chain goes from top-to-bottom. (There might be a violation
+of this because of the way the user started the first chain; see
+:hdref refid=fixsubp..).
+
+:h3.ISTOP() and ISBOTTOM() - Flag Bits for Edge Lists at the Top and
+Bottom of Their SubPaths
+*/
+
+#define ISTOP(flag) ((flag)&0x20)
+#define ISBOTTOM(flag) ((flag)&0x10)
+/*
+:h3.ISLEFT() - Flag Bit for Left Edges
+*/
+
+#define ISLEFT(flag) ((flag)&0x08)
+
+/*
+:h3.XofY() - Macro to Find X Value at Given Y
+
+This macro can only be used if it is known that the Y is within the
+given edgelist's ymin and ymax.
+*/
+
+#define XofY(edge, y) edge->xvalues[y - edge->ymin]
+
+/*
+:h3.findXofY() - Like XofY(), Except not Restricted
+
+If the Y is out of bounds of the given edgelist, this macro will
+call SearchXofY to search the edge's subpath chain for the correct
+Y range. If the Y value is off the edge, MINPEL is returned.
+*/
+#define findXofY(edge, y) ((y < edge->ymin || y >= edge->ymax) ? SearchXofY(edge, y) : XofY(edge, y))
+
+/*
+:h4.SearchXofY() - Routine Called by FindXofY() for Difficult Cases
+
+The concept of this routine is to follow the subpath chain to find the
+edge just below (i.e., next in chain) or just above (i.e., immediately
+before in chain. It is assumed that the Y value is no more than one
+off of the edge's range; XofY() could be replace by FindXofY() to
+call ourselves recursively if this were not true.
+*/
+
+static pel SearchXofY(edge, y)
+ register struct edgelist *edge; /* represents edge */
+ register pel y; /* 'y' value to find edge for */
+{
+ register struct edgelist *e; /* loop variable */
+
+ if (y < edge->ymin) {
+ if (ISTOP(edge->flag)) {
+ return(MINPEL);
+ }
+
+ for (e = edge->subpath; e->subpath != edge; e = e->subpath) { ; }
+ if (e->ymax == edge->ymin) {
+ return(XofY(e, y));
+ }
+ }
+ else if (y >= edge->ymax) {
+ if (ISBOTTOM(edge->flag)) {
+ return(MINPEL);
+ }
+ e = edge->subpath;
+ if (e->ymin == edge->ymax) {
+ return(XofY(e, y));
+ }
+ }
+ else {
+ return(XofY(edge, y));
+ }
+
+
+ abort("bad subpath chain", 11);
+ /*NOTREACHED*/
+ /* To make ANSI-C-compiler happy: */
+ return(y);
+
+}
+/*
+:h3.ISBREAK() Macro - Tests if an Edge List is at a "Break"
+
+The subpath chains are organized top to bottom. When the bottom of
+a given edge is reached, the subpath chain points to the top of the
+next edge. We call this a "break" in the chain. The following macro
+is the simple test for the break condition:
+*/
+
+#define ISBREAK(top,bot) (top->ymax != bot->ymin)
+
+
+/*
+:h3.ImpliedHorizontalLine() - Tests for Horizontal Connectivity
+
+This function returns true if two edges are connected horizontally.
+They are connected horizontally if they are consecutive in the subpath,
+and either we are at the bottom and the first edge is going down or we
+are at the top and the first edge is going up.
+*/
+
+#define BLACKABOVE -1
+#define BLACKBELOW +1
+#define NONE 0
+
+static int ImpliedHorizontalLine(e1, e2, y)
+ register struct edgelist *e1,*e2; /* two edges to check */
+ register int y; /* y where they might be connected */
+{
+ register struct edgelist *e3,*e4;
+
+ if (ISDOWN(e1->flag) == ISDOWN(e2->flag))
+ return(NONE); /* can't be consecutive unless different directions */
+/*
+Now we check for consecutiveness: Can we get from 'e1' to 'e2' with
+only one intervening break? Can we get from 'e2' to 'e1' with only one
+intervening break? 'e3' will be as far as we can get after 'e1'; 'e4'
+will be has far as we can get after 'e2':
+*/
+ for (e3 = e1; !ISBREAK(e3, e3->subpath); e3 = e3->subpath) { ; }
+ for (e3 = e3->subpath; e3 != e2; e3 = e3->subpath)
+ if (ISBREAK(e3, e3->subpath))
+ break;
+
+ for (e4 = e2; !ISBREAK(e4, e4->subpath); e4 = e4->subpath) { ; }
+ for (e4 = e4->subpath; e4 != e1; e4 = e4->subpath)
+ if (ISBREAK(e4, e4->subpath))
+ break;
+/*
+If the edges are mutually consecutive, we must have horizontal lines
+both top and bottom:
+*/
+ if (e3 == e2 && e4 == e1)
+ return(TRUE);
+/*
+If the edges are not consecutive either way, no horizontal lines are
+possible:
+*/
+ if (e3 != e2 && e4 != e1)
+ return(NONE);
+/*
+Now let's swap 'e1' and 'e2' if necessary to enforce the rule that 'e2'
+follows 'e1'. Remember that subpath chains go in the opposite direction
+from the way the subpaths were built; this led to the simplest way
+do build them.
+*/
+ if (e4 != e1) {
+ e2 = e1;
+ e1 = e3; /* remember e3 == e2, this just swaps 'e1' and 'e2' */
+ }
+/*
+Now we have everything to return the answer:
+*/
+ if (ISTOP(e1->flag) && y == e1->ymin)
+ return(ISDOWN(e2->flag));
+ else if (ISBOTTOM(e1->flag) && y == e1->ymax)
+ return(!ISDOWN(e2->flag));
+ else
+ abort("ImpliedHorizontalLine: why ask?", 12);
+ /*NOTREACHED*/
+ /* To make ANSI-C-compiler happy */
+ return(0);
+
+}
+
+/*
+:h3 id=fixsubp.FixSubPaths() - Must be Called to Organize Subpath Chains
+
+The region-building code in Interior(), in particular splitedge(),
+maintains the rule that sub-paths are linked top-to-bottom except
+at breaks. However, it is possible that there may be a "false break"
+because the user started the subpath in the middle of an edge (and
+went in the "wrong" direction from there, up instead of down). This
+routine finds and fixes false breaks.
+
+Also, this routine sets the ISTOP and ISBOTTOM flags in the edge lists.
+*/
+
+static void FixSubPaths(R)
+ register struct region *R; /* anchor of region */
+{
+ register struct edgelist *e; /* fast loop variable */
+ register struct edgelist *edge; /* current edge in region */
+ register struct edgelist *next; /* next in subpath after 'edge' */
+ register struct edgelist *break1; /* first break after 'next' */
+ register struct edgelist *break2=NULL; /* last break before 'edge' */
+ register struct edgelist *prev; /* previous edge for fixing links */
+ int left = TRUE;
+
+ for (edge = R->anchor; edge != NULL; edge = edge->link) {
+
+ if (left)
+ edge->flag |= ISLEFT(ON);
+ left = !left;
+
+ next = edge->subpath;
+
+ if (!ISBREAK(edge, next))
+ continue;
+ if (edge->ymax < next->ymin)
+ abort("disjoint subpath?", 13);
+ /*
+ 'edge' now contains an edgelist at the bottom of an edge, and 'next'
+ contains the next subsequent edgelist in the subpath, which must be at
+ the top. We refer to this a "break" in the subpath.
+ */
+ next->flag |= ISTOP(ON);
+ edge->flag |= ISBOTTOM(ON);
+
+ if (ISDOWN(edge->flag) != ISDOWN(next->flag))
+ continue;
+ /*
+ We are now in the unusual case; both edges are going in the same
+ direction so this must be a "false break" due to the way that the user
+ created the path. We'll have to fix it.
+ */
+ for (break1 = next; !ISBREAK(break1, break1->subpath); break1 = break1->subpath) { ; }
+
+ for (e = break1->subpath; e != edge; e = e->subpath)
+ if (ISBREAK(e, e->subpath))
+ break2 = e;
+ /*
+ Now we've set up 'break1' and 'break2'. I've found the following
+ diagram invaluable. 'break1' is the first break after 'next'. 'break2'
+ is the LAST break before 'edge'.
+ &drawing.
+ next
+ +------+ +---->+------+
+ +--->| >-----+ | | >-----+
+ | | | | | | | |
+ | +-------------+ | +-------------+
+ | | |break1| | | | |
+ | +->| >-------+ +->| >-----+
+ | | | | | |
+ | | | +-------------+
+ | +------+ | | |
+ | +----------------+ | | |
+ | | +------+ | +->| >-----+
+ | +->| >-----+ | | | |
+ | | | | | +-------------+
+ | +-------------+ | | | |
+ | | |edge | | | |break2|
+ | +->| >-----+ | +->| >-----+
+ | | | | | | | |
+ | | | | | | | |
+ | | | | | | | |
+ | +------+ | | +------+ |
+ | | | |
+ +---------------+ +---------------+
+
+ &edrawing.
+ We want to fix this situation by having 'edge' point to where 'break1'
+ now points, and having 'break1' point to where 'break2' now points.
+ Finally, 'break2' should point to 'next'. Also, we observe that
+ 'break1' can't be a bottom, and is also not a top unless it is the same
+ as 'next':
+ */
+ edge->subpath = break1->subpath;
+
+ break1->subpath = break2->subpath;
+ if (ISBREAK(break1, break1->subpath))
+ abort("unable to fix subpath break?", 14);
+
+ break2->subpath = next;
+
+ break1->flag &= ~ISBOTTOM(ON);
+ if (break1 != next)
+ break1->flag &= ~ISTOP(ON);
+ }
+
+ /*
+ This region might contain "ambiguous" edges; edges exactly equal to
+ edge->link. Due to the random dynamics of where they get sorted into
+ the list, they can yield false crossings, where the edges appear
+ to cross. This confuses our continuity logic no end. Since we can
+ swap them without changing the region, we do.
+ */
+ for (edge = R->anchor, prev = NULL; VALIDEDGE(edge); prev = edge, edge = prev->link) {
+
+ if (! ISAMBIGUOUS(edge->flag)) {
+ continue;
+ }
+
+ next = edge->subpath;
+
+ while (ISAMBIGUOUS(next->flag) && next != edge) {
+ next = next->subpath;
+ }
+
+ /*
+ We've finally found a non-ambiguous edge; we make sure it is left/right
+ compatible with 'edge':
+ */
+ if ( (ISLEFT(edge->flag) == ISLEFT(next->flag) && ISDOWN(edge->flag) == ISDOWN(next->flag) )
+ || (ISLEFT(edge->flag) != ISLEFT(next->flag) && ISDOWN(edge->flag) != ISDOWN(next->flag) ) ) {
+ continue;
+ }
+
+ /*
+ Incompatible, we will swap 'edge' and the following edge in the list.
+ You may think that there must be a next edge in this swath. So did I.
+ No! If there is a totally ambiguous inner loop, for example, we could
+ get all the way to the outside without resolving ambiguity.
+ */
+ next = edge->link; /* note new meaning of 'next' */
+ if (next == NULL || edge->ymin != next->ymin) {
+ continue;
+ }
+
+ /*
+ printf(" Swap: \n");
+ printf(" Edge=0x%x, ymin=%d, ymax=%d, xmin=%d, xmax=%d, fpx1=%ld, fpx2=%ld\n",
+ edge, edge->ymin, edge->ymax, edge->xmin, edge->xmax, edge->fpx1, edge->fpx2);
+ printf(" Link=0x%x, ymin=%d, ymax=%d, xmin=%d, xmax=%d, fpx1=%ld, fpx2=%ld\n",
+ next, next->ymin, next->ymax, next->xmin, next->xmax, next->fpx1, next->fpx2);
+ printf(" Edge=0x%x (amb=%d), x[ymin]=%d, x[ymax]=%d, px1=%ld, px2=%ld\n",
+ edge, ISAMBIGUOUS(edge->flag), edge->xvalues[0], edge->xvalues[edge->ymax - edge->ymin],
+ edge->fpx1>>FRACTBITS, edge->fpx2>>FRACTBITS);
+ printf(" Link=0x%x (amb=%d), x[ymin]=%d, x[ymax]=%d, px1=%ld, px2=%ld\n",
+ next, ISAMBIGUOUS(next->flag), next->xvalues[0], next->xvalues[next->ymax - next->ymin],
+ next->fpx1>>FRACTBITS, next->fpx2>>FRACTBITS);
+ */
+
+ /* Check ambiguity also for link edge (RMz) */
+ if ( !ISAMBIGUOUS(next->flag) ) {
+ continue;
+ }
+
+
+ if (prev == NULL)
+ R->anchor = next;
+ else
+ prev->link = next;
+ edge->link = next->link;
+ next->link = edge;
+ edge->flag ^= ISLEFT(ON);
+ edge->flag &= ~ISAMBIGUOUS(ON);
+ next->flag ^= ISLEFT(ON);
+ next->flag &= ~ISAMBIGUOUS(ON);
+ edge = next;
+ }
+}
+/*
+:h3.DumpSubPaths()
+
+A debug tool.
+*/
+
+static struct edgelist *before(); /* subroutine of DumpSubPaths */
+
+static void DumpSubPaths(anchor)
+ struct edgelist *anchor;
+{
+
+ register struct edgelist *edge,*e,*e2;
+ pel y;
+
+ for (edge = anchor; VALIDEDGE(edge); edge = edge->link) {
+ if (ISPERMANENT(edge->flag))
+ continue;
+ IfTrace0(TRUE, "BEGIN Subpath\n");
+ for (e2 = edge; !ISPERMANENT(e2->flag);) {
+ if (ISDOWN(e2->flag)) {
+ IfTrace1(TRUE, ". Downgoing edge's top at %p\n", e2);
+ for (e = e2;; e = e->subpath) {
+ IfTrace4(TRUE, ". . [%5d] %5d @ %p[%x]\n",
+ e->ymin, *e->xvalues, e, e->flag);
+ for (y=e->ymin+1; y < e->ymax; y++)
+ IfTrace2(TRUE, ". . [%5d] %5d \"\n", y, e->xvalues[y-e->ymin]);
+ e->flag |= ISPERMANENT(ON);
+ if (ISBREAK(e, e->subpath))
+ break;
+ }
+ }
+ else {
+ IfTrace1(TRUE, ". Upgoing edge's top at %p\n", e2);
+ for (e = e2; !ISBREAK(e, e->subpath); e = e->subpath) { ; }
+ for (;; e=before(e)) {
+ IfTrace4(TRUE, ". . [%5d] %5d @ %p[%x]\n",
+ e->ymax-1, e->xvalues[e->ymax-1-e->ymin], e, e->flag);
+ for (y=e->ymax-2; y >= e->ymin; y--)
+ IfTrace2(TRUE, ". . [%5d] %5d \"\n", y, e->xvalues[y-e->ymin]);
+ e->flag |= ISPERMANENT(ON);
+ if (e == e2)
+ break;
+ }
+ }
+ do {
+ e2 = before(e2);
+ } while (!ISBREAK(before(e2), e2));
+ }
+ }
+}
+
+static struct edgelist *before(e)
+ struct edgelist *e;
+{
+ struct edgelist *r;
+ for (r = e->subpath; r->subpath != e; r = r->subpath) { ; }
+ return(r);
+}
+
+/*
+:h2.Fixing Region Continuity Problems
+
+Small regions may become disconnected when their connecting segments are
+less than a pel wide. This may be correct in some applications, but in
+many (especially small font characters), it is more pleasing to keep
+connectivity. ApplyContinuity() (invoked by +CONTINUITY on the
+Interior() fill rule) fixes connection breaks. The resulting region
+is geometrically less accurate, but may be more pleasing to the eye.
+*/
+/*
+Here are some macros which we will need:
+*/
+
+#define IsValidPel(j) (j!=MINPEL)
+
+/*
+:h3.writeXofY() - Stuffs an X Value Into an "edgelist"
+
+writeXofY writes an x value into an edge at position 'y'. It must
+update the edge's xmin and xmax. If there is a possibility that this
+new x might exceed the region's bounds, updating those are the
+responsibility of the caller.
+*/
+
+static void writeXofY(e, y, x)
+ struct edgelist *e; /* relevant edgelist */
+ int y; /* y value */
+ int x; /* new x value */
+{
+ if (e->xmin > x) e->xmin = x;
+ if (e->xmax < x) e->xmax = x;
+ e->xvalues[y - e->ymin] = x;
+}
+
+
+/*-------------------------------------------------------------------------*/
+/* the following three macros tell us whether we are at a birth point, a */
+/* death point, or simply in the middle of the character */
+/*-------------------------------------------------------------------------*/
+#define WeAreAtTop(e,i) (ISTOP(e->flag) && e->ymin == i)
+#define WeAreAtBottom(e,i) (ISBOTTOM(e->flag) && e->ymax-1 == i)
+#define WeAreInMiddle(e,i) \
+ ((!ISTOP(e->flag) && !ISBOTTOM(e->flag))||(i < e->ymax-1 && i > e->ymin))
+/*
+The following macro tests if two "edgelist" structures are in the same
+swath:
+*/
+#define SAMESWATH(e1,e2) (e1->ymin == e2->ymin)
+
+/*
+:h3.CollapseWhiteRun() - Subroutine of ApplyContinuity()
+
+When we have a white run with an implied horizontal line above or
+below it, we better have black on the other side of this line. This
+function both tests to see if black is there, and adjusts the end
+points (collapses) the white run as necessary if it is not. The
+goal is to collapse the white run as little as possible.
+*/
+
+static void CollapseWhiteRun(anchor, yblack, left, right, ywhite)
+ struct edgelist *anchor; /* anchor of edge list */
+ pel yblack; /* y of (hopefully) black run above or below */
+ struct edgelist *left; /* edgelist at left of WHITE run */
+ struct edgelist *right; /* edgelist at right of WHITE run */
+ pel ywhite; /* y location of white run */
+{
+ struct edgelist *edge;
+ struct edgelist *swathstart = anchor;
+ register pel x;
+
+ if (XofY(left, ywhite) >= XofY(right, ywhite))
+ return;
+/*
+Find the swath with 'yblack'. If we don't find it, completely collapse
+the white run and return:
+*/
+ while (VALIDEDGE(swathstart)) {
+ if (yblack < swathstart->ymin) {
+ writeXofY(left, ywhite, XofY(right, ywhite));
+ return;
+ }
+ if (yblack < swathstart->ymax) break;
+ swathstart = swathstart->link->link;
+ }
+ if(!VALIDEDGE(swathstart)) {
+ writeXofY(left, ywhite, XofY(right, ywhite));
+ return;
+ }
+/*
+Now we are in the swath that contains 'y', the reference line above
+or below that we are trying to maintain continuity with. If black
+in this line begins in the middle of our white run, we must collapse
+the white run from the left to that point. If black ends in the
+middle of our white run, we must collapse the white run from the right
+to that point.
+*/
+ for (edge = swathstart; VALIDEDGE(edge); edge = edge->link) {
+
+ if (!SAMESWATH(swathstart,edge))
+ break;
+ if( XofY(edge, yblack) > XofY(left, ywhite)) {
+ if (ISLEFT(edge->flag)) {
+ x = XofY(edge, yblack);
+ if (XofY(right, ywhite) < x)
+ x = XofY(right, ywhite);
+ writeXofY(left, ywhite, x);
+ }
+ else {
+ x = XofY(edge, yblack);
+ while (edge->link != NULL && SAMESWATH(edge, edge->link)
+ && x >= XofY(edge->link, yblack) ) {
+ edge = edge->link->link;
+ x = XofY(edge, yblack);
+ }
+ if (x < XofY(right, ywhite))
+ writeXofY(right, ywhite, x);
+ return;
+ }
+ }
+ }
+ writeXofY(left, ywhite, XofY(right, ywhite));
+}
+
+/*
+:h3.ApplyContinuity() - Fix False Breaks in a Region
+
+This is the externally visible routine called from the REGIONS module
+when the +CONTINUITY flag is on the Interior() fill rule.
+*/
+
+void ApplyContinuity(R)
+struct region *R;
+{
+ struct edgelist *left;
+ struct edgelist *right;
+ struct edgelist *edge,*e2;
+ pel rightXabove,rightXbelow,leftXabove,leftXbelow;
+ pel leftX,rightX;
+ int i;
+ long edgecnt = 0;
+
+ fractpel xavrg = 0;
+ LONG newcenter,abovecenter,belowcenter;
+
+
+ FixSubPaths(R);
+ if ( RegionDebug >= 3)
+ DumpSubPaths(R->anchor);
+ left = R->anchor;
+
+ /* loop through and do all of the easy checking. ( no tops or bottoms) */
+ while(VALIDEDGE(left)) {
+ right = left->link;
+ for(i=left->ymin;i<left->ymax;++i) {
+ leftX = findXofY(left,i);
+ rightX = findXofY(right,i);
+ leftXbelow = findXofY(left,i+1);
+ rightXbelow = findXofY(right,i+1);
+ if(rightX <= leftX) {
+
+ /* then, we have a break in a near vertical line */
+ leftXabove = findXofY(left,i-1);
+ rightXabove = findXofY(right,i-1);
+ /* Check above current scanline */
+ if ( IsValidPel(leftXabove) && IsValidPel(rightXabove) ) {
+ abovecenter = leftXabove + rightXabove;
+ }
+ else {
+ /* We are at the top. We can assume that the current edge list is just started
+ --> Inspect the stored start fractpel values in order to decide about
+ to which side to extend. -->
+ Compute arithmetic average between left and right edge at high resolution */
+ xavrg = ((left->fpx1 + right->fpx1) >> 1);
+ /* round down to get left (not nearest!) and get right edge by adding one pel. */
+ leftXabove = (xavrg >> FRACTBITS);
+ rightXabove = leftXabove + 1;
+ abovecenter = leftXabove + rightXabove;
+ belowcenter = leftXabove + rightXabove;
+ }
+
+ /* Check below current scanline */
+ if ( IsValidPel(leftXbelow) && IsValidPel(rightXbelow) ) {
+ belowcenter = leftXbelow + rightXbelow;
+ }
+ else {
+ /* We are at the bottom. We can assume that the current edge list terminates here
+ --> Inspect the stored end fractpel values in order to decide about
+ to which side to extend. -->
+ Compute arithmetic average between left and right edge at high resolution */
+ xavrg = ((left->fpx2 + right->fpx2) >> 1);
+ /* round down to get left (not nearest!) and get right edge by adding one pel. */
+ leftXbelow = (xavrg >> FRACTBITS);
+ rightXbelow = leftXbelow + 1;
+ abovecenter = leftXbelow + rightXbelow;
+ belowcenter = leftXbelow + rightXbelow;
+ }
+
+ newcenter = abovecenter + belowcenter;
+
+ if( newcenter > 4*leftX ) {
+ rightX = rightX + 1;
+ writeXofY(right,i,rightX);
+ }
+ else if( newcenter < 4*leftX) {
+ leftX = leftX - 1;
+ writeXofY(left,i,leftX);
+ }
+ else {
+ rightX = rightX + 1;
+ writeXofY(right,i,rightX);
+ }
+
+ if ( rightX > R->xmax ) {
+ R->xmax = rightX;
+ }
+ if ( leftX < R->xmin ) {
+ R->xmin = leftX;
+ }
+ }
+ if( !WeAreAtBottom(left,i) && (leftXbelow>=rightX)) {
+ /* then we have a break in a near horizontal line in the middle */
+ writeXofY(right,i,leftXbelow);
+ }
+ if( !WeAreAtBottom(right,i) && (leftX >=rightXbelow)) {
+ /* then we have a break in a near horizontal line in the middle */
+ writeXofY(left,i,rightXbelow);
+ }
+ }
+ left = right->link;
+ ++edgecnt;
+ }
+
+ /*
+ There may be "implied horizontal lines" between edges that have
+ implications for continuity. This loop looks for white runs that
+ have implied horizontal lines on the top or bottom, and calls
+ CollapseWhiteRuns to check and fix any continuity problems from
+ them.
+ */
+ for (edge = R->anchor; VALIDEDGE(edge); edge = edge->link) {
+ if ((!ISTOP(edge->flag) && !ISBOTTOM(edge->flag)) || ISLEFT(edge->flag))
+ continue; /* at some future date we may want left edge logic here too */
+ for (e2 = edge->link; VALIDEDGE(e2) && SAMESWATH(edge,e2); e2 = e2->link) {
+ if (ISTOP(e2->flag) && ISTOP(edge->flag)
+ && NONE != ImpliedHorizontalLine(edge,e2,edge->ymin)) {
+ if (ISLEFT(e2->flag))
+ CollapseWhiteRun(R->anchor, edge->ymin-1,
+ edge, e2, edge->ymin);
+ }
+ if (ISBOTTOM(e2->flag) && ISBOTTOM(edge->flag)
+ && NONE != ImpliedHorizontalLine(edge,e2, edge->ymax)) {
+ if (ISLEFT(e2->flag))
+ CollapseWhiteRun(R->anchor, edge->ymax,
+ edge, e2, edge->ymax-1);
+ }
+ }
+ }
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.h
new file mode 100644
index 00000000000..79a96b42527
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/hints.h
@@ -0,0 +1,42 @@
+/* $XConsortium: hints.h,v 1.2 91/10/10 11:18:19 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#define InitHints() t1_InitHints()
+void t1_InitHints(); /* Initialize hint data structure */
+
+#define CloseHints(hintP) t1_CloseHints(hintP)
+void t1_CloseHints(); /* Reverse hints that are still open */
+
+#define ProcessHint(hP, currX, currY, hintP) t1_ProcessHint(hP, currX, currY, hintP)
+void t1_ProcessHint(); /* Process a rasterization hint */
+
+#define ApplyContinuity(R) t1_ApplyContinuity(R)
+void t1_ApplyContinuity(); /* fix false connection breaks in a region */
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.c
new file mode 100644
index 00000000000..8e1e4517eb4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.c
@@ -0,0 +1,200 @@
+/* $XConsortium: lines.c,v 1.2 91/10/10 11:18:21 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* LINES CWEB V0003 ******** */
+/*
+:h1.LINES Module - Rasterizing Lines
+
+&author. Duaine W. Pryor, Jr. and Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
+
+
+:h3.Include Files
+
+The included files are:
+*/
+
+#include <stdio.h>
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h"
+#include "lines.h"
+
+/*
+:h3.Functions Provided to the TYPE1IMAGER User
+
+None.
+*/
+
+/*
+:h3.Functions Provided to Other Modules
+
+This module provides the following entry point to other modules:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.Macros Provided to Other Modules
+
+None.
+*/
+
+/*
+:h2.StepLine() - Produces Run Ends for a Line After Checks
+
+The main work is done by Bresenham(); here we just perform checks and
+get the line so that its Y direction is always increasing:
+*/
+
+void StepLine(R, x1, y1, x2, y2)
+ register struct region *R; /* region being built */
+ register fractpel x1,y1; /* starting point */
+ register fractpel x2,y2; /* ending point */
+{
+ register fractpel dy;
+
+ IfTrace4((LineDebug > 0), ".....StepLine: (%d,%d) to (%d,%d)\n",
+ x1, y1, x2, y2);
+
+ dy = y2 - y1;
+
+/*
+We execute the "GOING_TO" macro to call back the REGIONS module, if
+necessary (like if the Y direction of the edge has changed):
+*/
+ GOING_TO(R, x1, y1, x2, y2, dy);
+
+ if (dy == 0)
+ return;
+
+ if (dy < 0)
+ Bresenham(R->edge, x2, y2, x1, y1);
+ else
+ Bresenham(R->edge, x1, y1, x2, y2);
+ return;
+}
+/*
+:h3.Bresenham() - Actually Produces Run Ends
+
+This routine runs a Bresenham line-stepping
+algorithm. See, for example, Newman and Sproul, :hp1/Principles
+of Interactive Computer Graphics/, pp. 25-27.
+When we enter this, we
+are guaranteed that dy is positive.
+We'd like to work in 8 bit precision, so we'll define some macros and
+constants to let us do that:
+*/
+
+#define PREC 8 /* we'll keep fraction pels in 8 bit precision */
+/*
+RoundFP() rounds down by 'b' bits:
+*/
+#define RoundFP(xy,b) (((xy)+(1<<((b)-1)))>>(b))
+
+/*
+TruncFP() truncates down by 'b' bits:
+*/
+#define TruncFP(xy,b) ((xy)>>(b))
+
+
+void Bresenham(edgeP,x1,y1,x2,y2)
+ register pel *edgeP; /* pointer to top of list (y == 0) */
+ register fractpel x1,y1; /* starting point on line */
+ register fractpel x2,y2; /* ending point on the line (down) */
+{
+ register LONG dx,dy; /* change in x and y, in my own precision */
+ register LONG x,y; /* integer pel starting point */
+ register int count; /* integer pel delta y */
+ register LONG d; /* the Bresenham algorithm error term */
+
+ x1 = TruncFP(x1, FRACTBITS-PREC);
+ y1 = TruncFP(y1, FRACTBITS-PREC);
+ x2 = TruncFP(x2, FRACTBITS-PREC);
+ y2 = TruncFP(y2, FRACTBITS-PREC);
+
+ dx = x2 - x1;
+ dy = y2 - y1;
+/*
+Find the starting x and y integer pel coordinates:
+*/
+
+ x = RoundFP(x1,PREC);
+ y = RoundFP(y1,PREC);
+
+ edgeP += y;
+ count = RoundFP(y2,PREC) - y;
+/*------------------------------------------------------------------*/
+/* Force dx to be positive so that dfy will be negative */
+/* this means that vertical moves will decrease d */
+/*------------------------------------------------------------------*/
+ if (dx<0)
+ {
+ dx = -dx;
+#define P PREC
+ d=(dy*(x1-(x<<P)+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P;
+#undef P
+ while(--count >= 0 )
+ {
+ while(d<0)
+ {
+ --x;
+ d += dy;
+ }
+ *(edgeP++) = x;
+ d -= dx;
+ }
+ }
+ else /* positive dx */
+ {
+
+ if ( dx == 0 ) {
+ while(--count >= 0 ) {
+ *(edgeP++) = x;
+ }
+ return;
+
+ }
+
+#define P PREC
+ d = (dy*((x<<P)-x1+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P;
+#undef P
+ while(--count >= 0 )
+ {
+ while(d<0)
+ {
+ ++x;
+ d += dy;
+ }
+ *(edgeP++) = x;
+ d -= dx;
+ }
+ }
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.h
new file mode 100644
index 00000000000..44b0da1a178
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/lines.h
@@ -0,0 +1,37 @@
+/* $XConsortium: lines.h,v 1.2 91/10/10 11:18:23 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#define StepLine(R,x1,y1,x2,y2) t1_StepLine(R,x1,y1,x2,y2)
+#define Bresenham(e,x1,y1,x2,y2) t1_Bresenham(e,x1,y1,x2,y2)
+
+void t1_StepLine(); /* check for special conditions, call Bresenham */
+void t1_Bresenham(); /* produce run ends for lines */
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.c
new file mode 100644
index 00000000000..c413a0f3594
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.c
@@ -0,0 +1,1208 @@
+/* $XConsortium: objects.c,v 1.5 92/03/20 15:56:06 eswu Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* OBJECTS CWEB V0025 ******** */
+/*
+:h1.OBJECTS Module - TYPE1IMAGER Objects Common Routines
+
+This module defines and implements the C structures that represent
+objects in the TYPE1IMAGER. All common routines for manipulating these
+objects are defined in this module. Specific routines for
+specific objects are defined in the modules that deal with that
+object type.
+
+
+&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
+
+
+:h3.Include Files
+
+The included files are:
+*/
+#define GLOBALS 1 /* see :hdref refid=debugvar. */
+/*
+The following two includes are C standards; we include them because we
+use 'toupper' and the 'str'-type functions in this module. Potentially
+these may be defined as macros; if these ".h" files do not exist on your
+system it is a pretty safe bet that these are external entry points and
+you do do not need to include these header files.
+*/
+
+
+#include "types.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <setjmp.h>
+
+/*
+override incorrect system functions; for example you might define
+a macro for "strcpy" that diverts it to "my_strcpy".
+*/
+
+ /* moved these includes from above the */
+ /* was included first (it contains com- */
+ /* piler defines). dsr 081291 */
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h"
+#include "fonts.h"
+#include "pictures.h"
+#include "strokes.h"
+#include "cluts.h"
+static char *TypeFmt();
+static int ObjectPostMortem();
+
+/*
+:h3.The "pointer" Macro - Define a Generic Pointer
+
+Sadly, many compilers will give a warning message when a pointer to
+one structure is assigned to a pointer to another. We've even seen
+some that give severe errors (when the wrong pointer type is used as
+an initializer or returned from a function). TYPE1IMAGER has routines
+like Dup and Allocate that are perfectly willing to duplicate or
+allocate any of a number of different types of structures. How to
+declare them in a truely portable way?
+
+Well, there is no single good answer that I've found. You can always
+beg the question and "cast" everything. I find this distracting and the
+resulting code ugly. On the other hand, we have found at least one
+compiler that will accept "void *" as a generic pointer that can
+assigned to any other pointer type without error or warning (apparently
+this is also the ANSI standard). So, we define "void *" to be a generic
+pointer. (You might have to change this for your compiler; the "ifndef"
+allows the change to be made on the command line if you want.)
+:i1/portability assumptions/
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Functions Provided to the TYPE1IMAGER User
+
+This module provides the following TYPE1IMAGER entry points:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+Note that entry points that are intended for use external to TYPE1IMAGER
+begin with the characters :q/xi/. Macros are used to make the names
+more mnemonic.
+*/
+
+/*
+:h3.Functions Provided to Other Modules
+
+This module provides the following functions for other modules:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+Note that entry points that intended for use within TYPE1IMAGER, but
+which must be global because they are used across module boundaries,
+begin with the characters :q/I_/. Macros are used to make the names
+more mnemonic.
+
+Entry points totally within a module use mnemonic names and are
+declared :hp2/static/. One of the compilers I used had a bug when
+static functions were passed as addresses. Thus, some functions
+which are logically "static" are not so declared.
+
+Note also the trick of declaring routines, like Consume(), with a
+variable number of arguments. To avoid the restrictions on variable
+numbers of arguments in the macro processor, we just replace the
+text 'Consume' with 'I_Consume'.
+*/
+/*
+:h3.Macros Provided to Other Modules
+
+This is the module where we define all the useful constants like
+TRUE, FALSE, and NULL, and simple expressions like TYPE1_MIN(),
+TYPE1_MAX(), and TYPE1_ABS().
+We might as well get to it right here:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+Notice that upper case is used for constant values and macro
+definitions. I generally follow that convention.
+
+Many more global macros are defined later in this module.
+*/
+/*
+:h2.Basic TYPE1IMAGER Object Structure
+
+All TYPE1IMAGER objects which are available to the user have a common
+header. This header is defined below:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+The following define is an attempt to centralize the definition of the
+common xobject data shared by structures that are derived from the
+generic xobject structure. For example, the structure font, defined in
+fonts.shr :
+&code.
+ struct font {
+ char type;
+ char flag;
+ int references;
+ ... other data types & structs ...
+ }
+&ecode.
+would now be defined as:
+&code.
+ struct font {
+ XOBJ_COMMON
+ ... other data types & structs ...
+ }
+&ecode.
+Thus we have a better-structured inheritance mechanism. 3-26-91 PNM
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Object Type Definitions
+
+These constants define the values which go in the 'type' field of
+an TYPE1IMAGER object structure:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Flag Byte Definitions
+
+Many programmers define flag bits as a mask (for example, 0x04), and
+test, set, and reset them as follows:
+
+&code.
+ if ((flag & PERMANENT) != 0)
+
+ flag |= PERMANENT;
+ flag &= &inv.PERMANENT;
+:exmp.
+
+I favor a style where the 'if' statement can ask a question:
+
+&code.
+ if (ISPERMANENT(flag))
+
+ flag |= ISPERMANENT(ON);
+ flag &= &inv.ISPERMANENT(ON);
+
+:exmp.
+This said, we now define two bit settings of the flag byte of the
+object. "ISPERMANENT" will be set by the user, when he calls
+Permanent(). "ISIMMORTAL" will be used for compiled-in objects
+that we don't want the user to ever destroy.
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+Flag bit definitions that apply to all objects are assigned
+starting with the least significant (0x01) bit. Flag bit definitions
+specific to a certain object type are assigned starting with the
+most significant (0x80) bit. We hope they never meet.
+*/
+/*
+:h3 id=preserve.PRESERVE() Macro
+
+Occasionally an TYPE1IMAGER operator is implemented by calling other
+TYPE1IMAGER operators. For example, Arc2() calls Conic(). When we
+call more than one operator as a subroutine, we have to be careful
+of temporary objects. A temporary object will be consumed by the
+subroutine operator and then is no longer available for the caller.
+This can be prevented simply by bumping a temporary object's reference
+count.
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.RefRoll() Macro to Detect References Count Rollover
+
+The following macro is designed to check for reference count rollover.
+A return value of TRUE means rollover has not occurred; a return value
+of FALSE means we cannot increment the reference count. Note also that
+those functions that use this macro must decrement the reference count
+afterwards. 3-26-91 PNM
+*/
+
+#define RefRoll(obj) (++(obj)->references > 0)
+
+/*
+:h2.TYPE1IMAGER Object Functions
+
+:h3.LONGCOPY() - Macro to Copy "long" Aligned Data
+
+Copying arbitrary bytes in C is a bit of a problem. "strcpy" can't be
+used, because 0 bytes are special-cased. Most environments have a
+routine "memcopy" or "bcopy" or "bytecopy" that copies memory containing
+zero bytes. Sadly, there is no standard on the name of such a routine,
+which makes it impossible to write truely portable code to use it.
+
+It turns out that TYPE1IMAGER, when it wants to copy data, frequently
+knows that both the source and destination are aligned on "long"
+boundaries. This allows us to copy by using "long *" pointers. This
+is usually very efficient on almost all processors. Frequently, it
+is more efficient than using general-purpose assembly language routines.
+So, we define a macro to do this in a portable way. "dest" and "source"
+must be long-aligned, and "bytes" must be a multiple of "sizeof(long)":
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Allocate() - Allocating a Memory Block
+
+Allocate returns a pointer to memory object that is a copy of
+the template passed (if any). In addition, extra bytes may be
+allocated contiguously with the object. (This may be useful for
+variable size objects such as edge lists. See :hdref refid=regions..)
+
+Allocate() always returns a non-immortal object, even if the template is
+immortal. Therefore a non-NULL template must have a "flag" byte.
+
+If the template is NULL, then 'size' bytes are cleared to all NULLs.
+
+If the template is non-NULL, a new object is allocated in memory.
+It therefore seems logical that its reference count field should be
+set to 1. So, a nun-NULL template must also have a "references" field.
+PNM 3-26-91
+*/
+
+
+/* to pacify gcc we put the externals here ... */
+extern struct XYspace *USER;
+extern jmp_buf stck_state;
+
+
+struct xobject *t1_Allocate(size, template, extra) /* non-ANSI; type checking was too strict */
+ register int size; /* number of bytes to allocate & initialize */
+ register struct xobject *template; /* example structure to allocate */
+ register int extra; /* any extra uninitialized bytes needed contiguously */
+{
+
+ register struct xobject *r;
+
+ /*
+ * round up 'size' and 'extra' to be an integer number of 'long's:
+ */
+ size = (size + sizeof(LONG) - 1) & -sizeof(LONG);
+ extra = (extra + sizeof(LONG) - 1) & -sizeof(LONG);
+ if (size + extra <= 0)
+ abort("Non-positive allocate?", 15);
+ r = (struct xobject *) malloc(size + extra);
+
+ while (r == NULL) {
+ if (!GimeSpace()) {
+ IfTrace1(TRUE, "malloc attempted %d bytes.\n",
+ size + extra);
+ abort("We have REALLY run out of memory", 16);
+ }
+ r = (struct xobject *) malloc(size + extra);
+ }
+
+ /*
+ * copy the template into the new memory:
+ */
+ if (template != NULL) {
+ /* Added references count decrement if template is not permanent.
+ This is for the case where Allocate is called by a Dupxxxx
+ function, which was in turn called by Unique(). (PNM) */
+ if (!ISPERMANENT(template->flag))
+ --template->references;
+ LONGCOPY(r, template, size);
+ r->flag &= ~(ISPERMANENT(ON) | ISIMMORTAL(ON));
+ /* added reference field 3-2-6-91 PNM */
+ r->references = 1;
+ }
+ else {
+ register char **p1;
+
+ for (p1=(char **)r; size > 0; size -= sizeof(char *))
+ *p1++ = NULL;
+ }
+
+ if (MemoryDebug > 1) {
+ register int *L;
+ L = (int *) r;
+ IfTrace4(TRUE, "Allocating at %p: %x %x %x\n",
+ L, L[-1], L[0], L[1]);
+ }
+ return(r);
+}
+
+/*
+:h3.Free() - Frees an Allocated Object
+
+This routine makes a sanity check to make sure the "type" field of the
+standard object structure has not been cleared. If the object is
+not a standard structure, then the macro "NonObjectFree" is available
+that does not perform this check.
+
+In either case, the object must not be the NULL pointer. This preserves
+portability, as the C system Xfree() will not always accept NULL.
+*/
+
+void Free(obj) /* non-ANSI to avoid overly strict type checking */
+ register struct xobject *obj; /* structure to free */
+{
+ if (obj->type == INVALIDTYPE)
+ abort("Free of already freed object?", 17);
+ obj->type = INVALIDTYPE;
+
+ if (MemoryDebug > 1) {
+ register int *L;
+ L = (int *) obj;
+ IfTrace4(TRUE,"Freeing at %p: %x %x %x\n", L, L[-1], L[0], L[1]);
+ }
+
+ free(obj);
+}
+
+/*
+:h3.Permanent() - Makes an Object Permanent
+
+Real simple--just set a flag. Every routine that consumes its objects
+(which is almost every user entry) must check this flag, and not consume
+the object if it is set.
+
+If a temporary object is made permanent, and there is more than one
+reference to it, we must first Copy() it, then set the ISPERMANENT
+flag. Note also that the reference count must be incremented when an
+object is changed from temporary to permanent (see the ISUNIQUE macro).
+
+Note that the purpose of this function is to convert an object into a
+permanent object:
+ If it was permanent to begin with, we do nothing;
+ If it was temporary and unique, we set the PERMANENT flag and increment
+the reference count;
+ If it was temporary and nonunique, we must make a unique Copy(), set
+the PERMANENT flag, and set the reference count to 2. We must also
+decrement the original object's reference count, because what we have
+done is to change one of the old temporary handles to a permanent one.
+3-26-91 PNM
+*/
+
+struct xobject *t1_Permanent(obj) /* non-ANSI to avoid overly strict type checking */
+ register struct xobject *obj; /* object to be made permanent */
+{
+ IfTrace1((MustTraceCalls),"Permanent(%p)\n", obj);
+
+ if ( (obj != NULL) && ( !(ISPERMANENT(obj->flag)) ) )
+ {
+ /* there is a non-NULL, temporary object to be made permanent.
+ If there are multiple references to this object, first get
+ a new COPY().
+ Note also that we have to decrement the reference count if
+ we do a Copy() here, because we are consuming the temporary
+ argument passed, and returning a unique, permanent one.
+ */
+ if ( obj->references > 1)
+ {
+ obj = Copy(obj);
+ }
+ /* now set the permanent flag, and increment the reference
+ count, since a temporary object has now become permanent. */
+ obj->references++;
+ obj->flag |= ISPERMANENT(ON);
+ }
+ return(obj);
+}
+
+/*
+:h3.Temporary() - Undoes the Effect of "Permanent()"
+
+This simply resets the "ISPERMANENT" flag.
+
+If a permanent object is made temporary, and there is more than one reference
+to it, we must first Copy() it, then reset the ISPERMANENT flag. However,
+if the permanent object has obly one reference, we need only decrement the
+reference count ( and reset the flag).
+
+Note that this function, in the case of a PERMANENT argument, basically
+converts the PERMANENT handle to a TEMPORARY one. Thus, in the case of
+a nonunique, permanent argument passed, we not only make a Copy(),
+we also decrement the reference count, to reflect the fact that we have
+lost a permanent handle and gained a temporary one.
+PNM 3-2-6-91
+*/
+
+struct xobject *xiTemporary(obj) /* non-ANSI to avoid overly strict type checking */
+ register struct xobject *obj; /* object to be made permanent */
+{
+ IfTrace1((MustTraceCalls),"Temporary(%p)\n", obj);
+
+ if (obj != NULL) {
+ /* if it's already temporary, there's nothing to do. */
+ if ISPERMANENT(obj->flag)
+ {
+ /* if there are multiple references to this object, get a
+ Copy we can safely alter. Recall that the reference count
+ is incremented for permanent objects.
+ Recall further that Copy returns an object with the
+ same flag state and a reference count of 2 (for PERMANENT
+ objects).
+ Thus, regardless of whether or not we need to copy a
+ permanent object, we still decrement its reference
+ count and reset the flag.
+ */
+ if (obj->references != 2 || ISIMMORTAL(obj->flag))
+ {
+ /* not unique; consume handle, get a temporary Copy! */
+ obj = Copy(obj);
+ }
+ /* else decrement the reference count (since it's going from
+ permanent to temporary) and clear the flag. */
+ else {
+ obj->references--;
+ obj->flag &= ~ISPERMANENT(ON);
+ }
+ }
+ }
+ return(obj);
+}
+
+/*
+:h3.Dup() - Duplicate an Object
+
+Dup will increment the reference count of an object, only making a
+Copy() if needed.
+Note that Dup() retains the state of the permanent flag.
+3-26-91 PNM
+*/
+
+
+struct xobject *t1_Dup(obj) /* non-ANSI avoids overly strict type checking */
+ register struct xobject *obj; /* object to be duplicated */
+{
+ register char oldflag; /* copy of original object's flag byte */
+
+ IfTrace1((MustTraceCalls),"Dup(%p)\n", obj);
+
+ if (obj == NULL)
+ return(NULL);
+ /* An immortal object must be Copy'ed, so that we get a mortal
+ copy of it, since we try not to destroy immortal objects. */
+ if (ISIMMORTAL(obj->flag))
+ return(Copy(obj));
+
+ /* if incrementing the reference count doesn't cause the count
+ to wrap, simply return the object with the count bumped. Note
+ that the RefRoll macro increments the count to perform the
+ rollover check, so we must decrement the count. */
+ if (RefRoll(obj))
+ return(obj);
+
+ /* that didn't work out, so put the count back and call Copy(). */
+ --obj->references;
+ oldflag = obj->flag;
+ obj = Copy(obj);
+ if (ISPERMANENT(oldflag))
+ obj = Permanent(obj);
+ return(obj);
+}
+
+/*
+:h3.Copy() - Make a New Copy of an Object
+
+This is the generic Copy() where the object type is unknown. There
+are specific Copyxxx functions for known object types.
+
+Copy will create a NEW temporary object, and WILL NOT simply bump the
+reference count.
+
+Sometimes duplicating an object is just as simple as Allocating with it
+as a template. But other objects are complicated linked lists. So, we
+let each module provide us a routine (or macro) that duplicates the
+objects it knows about.
+*/
+
+struct xobject *t1_Copy(obj)
+ register struct xobject *obj; /* object to be Copy'ed */
+{
+ if (obj == NULL)
+ return(NULL);
+
+ if (ISPATHTYPE(obj->type))
+ obj = (struct xobject *) CopyPath((struct segment *)obj);
+ else
+ switch (obj->type) {
+ case SPACETYPE:
+ obj = (struct xobject *) CopySpace(obj); break;
+ case FONTTYPE:
+ obj = (struct xobject *) CopyFont(obj); break;
+ case REGIONTYPE:
+ obj = (struct xobject *) CopyRegion(obj); break;
+ case PICTURETYPE:
+ obj = (struct xobject *) CopyPicture(obj); break;
+ case LINESTYLETYPE:
+ obj = (struct xobject *) CopyLineStyle(obj); break;
+ case STROKEPATHTYPE:
+ obj = (struct xobject *) CopyStrokePath(obj); break;
+ case CLUTTYPE:
+ obj = (struct xobject *) CopyCLUT(obj); break;
+ default:
+ return(ArgErr("Copy: invalid object", obj, NULL));
+ }
+
+ return(obj);
+}
+
+/*
+:h3.Destroy() - Destroys an Object
+
+This can get complicated. Just like with Copy(), we let the experts
+handle it.
+*/
+struct xobject *Destroy(obj) /* non-ANSI avoids overly strict type checking */
+ register struct xobject *obj; /* object to be destroyed */
+{
+ IfTrace1((MustTraceCalls),"Destroy(%p)\n", obj);
+
+ if (obj == NULL)
+ return(NULL);
+ if (ISIMMORTAL(obj->flag)) {
+ IfTrace1(TRUE,"Destroy of immortal object %p ignored\n", obj);
+ return(NULL);
+ }
+ if (ISPATHTYPE(obj->type))
+ KillPath((struct segment *)obj);
+ else {
+ switch (obj->type) {
+ case REGIONTYPE:
+ KillRegion(obj);
+ break;
+ case SPACETYPE:
+ KillSpace(obj);
+ break;
+ case LINESTYLETYPE:
+ KillLineStyle(obj);
+ break;
+ case FONTTYPE:
+ KillFont(obj);
+ break;
+ case PICTURETYPE:
+ /* KillPicture macro removed from sources (RMz, 2001-04-01)
+ KillPicture(obj);
+ */
+ break;
+ case STROKEPATHTYPE:
+ KillStrokePath(obj);
+ break;
+ case CLUTTYPE:
+ KillCLUT(obj);
+ break;
+ default:
+ return(ArgErr("Destroy: invalid object", obj, NULL));
+ }
+ }
+ return(NULL);
+}
+/*
+:h2.Generally Useful Macros
+
+:h3.FOLLOWING() - Macro to Point to the Data Following a Structure
+
+There are several places in TYPE1IMAGER where we will allocate variable
+data that belongs to a structure immediately after that structure.
+This is a performance technique, because it reduces the number of
+trips we have to take through Xalloc() and Xfree(). It turns out C has
+a very convenient way to point past a structure--if 'p' is a pointer
+to a structure, 'p+1' is a pointer to the data after it. This
+behavior of C is somewhat startling and somewhat hard to follow, if
+you are not used to it, so we define a macro to point to the data
+following a structure:
+*/
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.TYPECHECK() - Verify the Type of an Argument
+
+This macro tests the type of an argument. If the test fails, it consumes
+any other arguments as necessary and causes the imbedding routine to
+return the value 'whenBAD'.
+
+Note that the consumeables list should be an argument list itself, for
+example (0) or (2,A,B). See :hdref refid=consume. below.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.ARGCHECK() - Perform an Arbitrary Check on an Argument
+
+This macro is a generalization of TYPECHECK to take an arbitrary
+predicate. If the error occurs (i.e., the predicate is true), the
+arbitrary message 'msg' is returned.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.TYPENULLCHECK() - Extension of TYPECHECK() for NULL arguments
+
+Many routines allow NULLs to be passed as arguments. 'whenBAD' will
+be returned in this case, too.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.MAKECONSUME() - Create a "Consume"-type Macro
+
+Consuming an object means destroying it if it is not permanent. This
+logic is so common to all the routines, that it is immortalized in this
+macro. For example, ConsumePath(p) can be simply defined as
+MAKECONSUME(p,KillPath(p)). In effect, this macro operates on a
+meta-level.
+:i1/consuming objects/
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.MAKEUNIQUE() - Create a "Unique"-type Macro
+
+Many routines are written to modify their arguments in place. Thus,
+they want to insure that they duplicate an object if it is permanent.
+This is called making an object "unique". For example, UniquePath(p)
+can be simply defined as MAKEUNIQUE(p,DupPath(p)).
+:i1/unique objects/
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+An object is unique (and directly alterable) if there is only one
+reference to it, and it is not permanent (in which case we increment
+the reference count, so we don't have to check the permanent bit).
+3-26-91 PNM
+
+Note the rules for making a unique object:
+&drawing.
+ IF (obj->references = 1) return(obj);
+ ELSE (references > 1)
+ IF (ISPERMANENT(obj->flag)) return(Dupxxx(obj));
+ ELSE (nonunique, temporary object!)
+ obj->references--; return(Dupxxx(obj));
+&edrawing.
+If we must make a Copy of a nonunique, temporary object, we decrement
+reference count of the original object!
+*/
+
+/*
+:h3.Unique() - Make a Unique Object
+
+Here is a generic 'Unique' function if the object type is not known.
+Why didn't we build it with the MAKEUNIQUE macro, you ask? Well, we
+used to, but there is at least one damn compiler in the world that
+raises errors if the types of an "(a) ? b : c" expression do not match.
+Also, when we changed Dup() to retain the permanent/temporary flag, we
+wanted to make sure "Unique" always returned a temporary object.
+
+Note that we cannot use Dup() to create a copy of the object in question,
+because Dup() may simply bump the reference count, and not return a
+unique copy to us. That is why we use t1_Copy().
+
+The purpose of this function is to make sure we have a copy of an object
+that we can safely alter:
+:ol.
+:li.If we have a unique, temporary object, we simply return the argument.
+:li.If we have a nonunique, temporary object, we have to make a new copy
+of it, and decrement the reference count of the original object, to reflect
+the fact that we traded temporary handles.
+:li.If we have a permanent object, we make a temporary copy of it, but
+we do not decrement the reference count of the original permanent object,
+because permanent objects, by definition, are persistent. 3-2-6-91 PNM
+:eol.
+*/
+
+struct xobject *t1_Unique(obj)
+ struct xobject *obj;
+{
+ /* if the original object is not already unique, make a unique
+ copy...Note also that if the object was not permanent, we must
+ consume the old handle! 3-26-91 PNM
+ NOTE : consumption of the old handle moved to Allocate. 4-18-91 */
+ if (!obj || obj->references == 1)
+ return(obj);
+
+ obj = Copy(obj);
+ /* and make sure we return a temporary object ! */
+ if (ISPERMANENT(obj->flag))
+ {
+ obj->flag &= ~ISPERMANENT(ON);
+ obj->references--;
+ }
+ return(obj);
+}
+
+
+/*
+:h2.Initialization, Error, and Debug Routines
+
+:h3 id=debugvar.Declarations for Debug Purposes
+
+We declare all the debug flags here. Some link editors make the not
+unreasonable restriction that only one module may declare and
+initialize global variables; all the rest must declare the variable
+'extern'. This is logical, but is somewhat awkward to implement with
+C include files. We solve the problem by temporarily making the name
+'extern' a null name if GLOBALS is defined. (GLOBALS is only defined
+in this OBJECTS module.) Since 'externs' can't be initialized, we
+have to handle that with #defines too.
+:i1/GLOBALS (&#define.)/
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+static char *ErrorMessage = NULL;
+
+/*
+:h3.Pragmatics() - Set/Reset Debug Flags
+
+We provide a controlled way for the TYPE1IMAGER user to set and reset
+our debugging and tracing:
+*/
+void Pragmatics(username, value)
+ char *username; /* name of the flag */
+ int value; /* value to set it to */
+{
+ register char *p; /* temporary loop variable */
+#define NAMESIZE 40
+ char name[NAMESIZE]; /* buffer to store my copy of 'username' */
+
+ if (strlen(username) >= NAMESIZE)
+ abort("Pragmatics name too large", 18);
+ strcpy(name, username);
+ for (p = name; *p != '\0'; p++)
+ *p = toupper(*p);
+
+ if (!strcmp(name, "ALL"))
+ MustTraceCalls = InternalTrace = /* MustCrash = */
+ LineIOTrace = value;
+
+ else if (!strcmp(name, "LINEIOTRACE"))
+ LineIOTrace = value;
+
+ else if (!strcmp(name, "TRACECALLS"))
+ MustTraceCalls = value;
+
+ else if (!strcmp(name, "CHECKARGS"))
+ MustCheckArgs = value;
+
+ else if (!strcmp(name, "PROCESSHINTS"))
+ ProcessHints = value;
+
+ else if (!strcmp(name, "SAVEFONTPATHS"))
+ SaveFontPaths = value;
+
+ else if (!strcmp(name, "CRASTERCOMPRESSIONTYPE"))
+ CRASTERCompressionType = value;
+
+ else if (!strcmp(name, "CRASHONUSERERROR"))
+ MustCrash = value;
+
+ else if (!strcmp(name, "DEBUG"))
+ StrokeDebug = SpaceDebug = PathDebug = ConicDebug = LineDebug =
+ RegionDebug = MemoryDebug = FontDebug =
+ HintDebug = ImageDebug = OffPageDebug = value;
+
+ else if (!strcmp(name, "CONICDEBUG"))
+ ConicDebug = value;
+
+ else if (!strcmp(name, "LINEDEBUG"))
+ LineDebug = value;
+
+ else if (!strcmp(name, "REGIONDEBUG"))
+ RegionDebug = value;
+
+ else if (!strcmp(name, "PATHDEBUG"))
+ PathDebug = value;
+
+ else if (!strcmp(name, "SPACEDEBUG"))
+ SpaceDebug = value;
+
+ else if (!strcmp(name, "STROKEDEBUG"))
+ StrokeDebug = value;
+
+ else if (!strcmp(name, "MEMORYDEBUG"))
+ MemoryDebug = value;
+
+ else if (!strcmp(name, "FONTDEBUG"))
+ FontDebug = value;
+
+ else if (!strcmp(name, "HINTDEBUG"))
+ HintDebug = value;
+
+ else if (!strcmp(name, "IMAGEDEBUG"))
+ ImageDebug = value;
+
+ else if (!strcmp(name, "OFFPAGEDEBUG"))
+ OffPageDebug = value;
+
+#ifdef MC68000
+/*
+The following pragmatics flag turns on or off instruction histograming
+for performance analysis. It is only defined in the Delta card
+environment.
+*/
+ else if (!strcmp(name, "PROFILE")) {
+ if (value)
+ StartProfile();
+ else
+ StopProfile();
+ }
+#endif
+ /* GimeSpace() is define as false ... */
+ /*
+ else if (!strcmp(name, "FLUSHCACHE")) {
+ while (GimeSpace()) { ; }
+ }
+ */
+ else if (!strcmp(name, "CACHEDCHARS"))
+ CachedChars = (value <= 0) ? 1 : value;
+
+ else if (!strcmp(name, "CACHEDFONTS"))
+ CachedFonts = (value <= 0) ? 1 : value;
+
+ else if (!strcmp(name, "CACHEBLIMIT"))
+ CacheBLimit = value;
+
+ else if (!strcmp(name, "CONTINUITY"))
+ Continuity = value;
+
+
+ else {
+ printf("Pragmatics flag = '%s'\n", name);
+ ArgErr("Pragmatics: flag not known", NULL, NULL);
+ }
+ return;
+}
+
+/*
+:h3.Consume() - Consume a List of Arguments
+
+This general purpose routine is provided in the case where the object
+type(s) to be consumed are unknown or not yet verified, and/or it is
+not known whether the object is permanent.
+
+If the type of the argument is known, it is faster to directly consume
+that type, for example, ConsumeRegion() or ConsumePath(). Furthermore,
+if it is already known that the object is temporary, it is faster to
+just kill it rather than consume it, for example, KillSpace().
+*/
+
+void Consume(n, obj1, obj2, obj3) /* non-ANSI avoids overly strict type checking */
+ int n;
+ struct xobject *obj1,*obj2,*obj3;
+{
+ switch(n) {
+
+ case 0:
+ return;
+
+ case 1:
+ if (obj1 != NULL && !ISPERMANENT(obj1->flag))
+ Destroy(obj1);
+ return;
+
+ case 2:
+ if (obj1 != NULL && !ISPERMANENT(obj1->flag))
+ Destroy(obj1);
+ if (obj2 != NULL && !ISPERMANENT(obj2->flag))
+ Destroy(obj2);
+ return;
+
+ case 3:
+ if (obj1 != NULL && !ISPERMANENT(obj1->flag))
+ Destroy(obj1);
+ if (obj2 != NULL && !ISPERMANENT(obj2->flag))
+ Destroy(obj2);
+ if (obj3 != NULL && !ISPERMANENT(obj3->flag))
+ Destroy(obj3);
+ return;
+
+ default:
+ abort("Consume: too many objects", 19);
+ }
+}
+/*
+:h3.TypeErr() - Handles "Invalid Object Type" Errors
+*/
+
+struct xobject *TypeErr(name, obj, expect, ret) /* non-ANSI avoids overly strict type checking */
+ char *name; /* Name of routine (for error message) */
+ struct xobject *obj; /* Object in error */
+ int expect; /* type expected */
+ struct xobject *ret; /* object to return to caller */
+{
+ static char typemsg[80];
+
+ if (MustCrash)
+ LineIOTrace = TRUE;
+
+ sprintf(typemsg, "Wrong object type in %s; expected %s, found %s.\n",
+ name, TypeFmt(expect), TypeFmt(obj->type));
+ IfTrace0(TRUE,typemsg);
+
+ ObjectPostMortem(obj);
+
+ if (MustCrash)
+ abort("Terminating because of CrashOnUserError...", 20);
+ else
+ ErrorMessage = typemsg;
+
+/* changed ISPERMANENT to ret->references > 1 3-26-91 PNM */
+ if (ret != NULL && (ret->references > 1))
+ ret = Dup(ret);
+ return(ret);
+}
+
+/*
+:h4.TypeFmt() - Returns Pointer to English Name of Object Type
+
+This is a subroutine of TypeErr().
+*/
+
+static char *TypeFmt(type)
+ int type; /* type field */
+{
+ char *r;
+
+ if (ISPATHTYPE(type))
+ if (type == TEXTTYPE)
+ r = "path or region (from TextPath)";
+ else
+ r = "path";
+ else {
+ switch (type) {
+ case INVALIDTYPE:
+ r = "INVALID (previously consumed?)";
+ break;
+ case REGIONTYPE:
+ r = "region";
+ break;
+ case SPACETYPE:
+ r = "XYspace";
+ break;
+ case LINESTYLETYPE:
+ r = "linestyle";
+ break;
+ case FONTTYPE:
+ r = "font";
+ break;
+ case PICTURETYPE:
+ r = "picture";
+ break;
+ case STROKEPATHTYPE:
+ r = "path (from StrokePath)";
+ break;
+ default:
+ r = "UNKNOWN";
+ break;
+ }
+ }
+ return(r);
+}
+/*
+:h4.ObjectPostMortem() - Prints as Much as We Can About a Bad Object
+
+This is a subroutine of TypeErr() and ArgErr().
+*/
+
+/*ARGSUSED*/
+static int ObjectPostMortem(obj) /* non-ANSI avoids overly strict type checking */
+ register struct xobject *obj;
+{
+
+ Pragmatics("Debug", 10);
+ IfTrace2(TRUE,"Bad object is of %s type %p\n", TypeFmt(obj->type), obj);
+
+ IfTrace0((obj == (struct xobject *) USER),
+ "Suspect that InitImager() was omitted.\n");
+ Pragmatics("Debug", 0);
+ /* We return a value to make ANSI-compiler happy */
+ return(0);
+
+}
+
+/*
+:h3.ArgErr() - Invalid Argument Passed to a Routine
+
+A common routine to report argument errors. It is usually called
+is returned to the caller in case MustCrash is FALSE and ArgErr
+returns to its caller.
+*/
+
+struct xobject *ArgErr(string, obj, ret) /* non-ANSI avoids overly strict type checking */
+ char *string; /* description of error */
+ struct xobject *obj; /* object, if any, that was in error */
+ struct xobject *ret; /* object returned to caller or NULL */
+{
+ if (MustCrash)
+ LineIOTrace = TRUE;
+ IfTrace1(TRUE,"ARGUMENT ERROR-- %s.\n", string);
+ if (obj != NULL)
+ ObjectPostMortem(obj);
+ if (MustCrash)
+ abort("Terminating because of CrashOnUserError...", 21);
+ else
+ ErrorMessage = string;
+ return(ret);
+}
+
+/*
+:h3.abort() - Crash Due to Error
+
+We divide by zero, and if that doesn't work, call exit(), the results of
+which is system dependent (and thus is part of the Hourglass required
+environment).
+*/
+/* RMz: We now do a longjmp in order to be able to recover from the error */
+/*ARGSUSED*/
+void abort(string, no)
+ char *string;
+ int no;
+{
+
+ LineIOTrace = TRUE;
+ TraceClose();
+ longjmp( stck_state, no);
+
+}
+
+/* By RMz: Return the abort string to t1lib! */
+char *t1_get_abort_message( int number)
+{
+ static char *err_msgs[]={
+ "DLdiv: dividend too large", /* 1 */
+ "divide algorithm error", /* 2 */
+ "Beziers this big not yet supported", /* 3 */
+ "ComputeHint: invalid orientation", /* 4 */
+ "ComputeHint: invalid hinttype", /* 5 */
+ "ComputeHint: invalid orientation", /* 6 */
+ "ProcessHint: invalid label", /* 7 */
+ "ProcessHint: label is not in use", /* 8 */
+ "ProcessHint: invalid label", /* 9 */
+ "ProcessHint: invalid adjusttype", /* 10 */
+ "bad subpath chain", /* 11 */
+ "ImpliedHorizontalLine: why ask?", /* 12 */
+ "disjoint subpath?", /* 13 */
+ "unable to fix subpath break?", /* 14 */
+ "Non-positive allocate?", /* 15 */
+ "We have REALLY run out of memory", /* 16 */
+ "Free of already freed object?", /* 17 */
+ "Pragmatics name too large", /* 18 */
+ "Consume: too many objects", /* 19 */
+ "Terminating because of CrashOnUserError...", /* 20 */
+ "Terminating because of CrashOnUserError...", /* 21 */
+ "Fundamental TYPE1IMAGER assumptions invalid in this port", /* 22 */
+ "Reverse: bad path segment", /* 23 */
+ "UnClose: no LASTCLOSED", /* 24 */
+ "PathTransform: invalid segment", /* 25 */
+ "QueryPath: unknown segment", /* 26 */
+ "QueryBounds: unknown type", /* 27 */
+ "KillRegion: negative reference count", /* 28 */
+ "newedge: height not positive", /* 29 */
+ "Interior: path type error", /* 30 */
+ "Unwind: uneven edges", /* 31 */
+ "negative sized edge?", /* 32 */
+ "splitedge: above top of list", /* 33 */
+ "splitedge: would be null", /* 34 */
+ "null splitedge", /* 35 */
+ "vertjoin not disjoint", /* 36 */
+ "SwathUnion: 0 height swath?", /* 37 */
+ "discard(): ran off end", /* 38 */
+ "UnJumble: unpaired edge?", /* 39 */
+ "Tighten: existing edge bound was bad", /* 40 */
+ "Tighten: existing region bound was bad", /* 41 */
+ "EDGE ERROR: non EDGETYPE in list", /* 42 */
+ "EDGE ERROR: overlapping swaths", /* 43 */
+ "Context: QueryDeviceState didn't work", /* 44 */
+ "QueryDeviceState returned invalid orientation", /* 45 */
+ "Context: out of them", /* 46 */
+ "MatrixInvert: can't", /* 47 */
+ "xiStub called", /* 48 */
+ "Illegal access type1 abort() message" /* 49 */
+ };
+
+ /* no is valid from 1 to 48 */
+ if ( (number<1)||(number>48))
+ number=49;
+ return( err_msgs[number-1]);
+
+}
+
+
+/*
+:h3.REAL Miscellaneous Stuff
+
+:h4.ErrorMsg() - Return the User an Error Message
+*/
+
+char *ErrorMsg()
+{
+ register char *r;
+
+ r = ErrorMessage;
+ ErrorMessage = NULL;
+ return(r);
+}
+
+/*
+:h4.InitImager() - Initialize TYPE1IMAGER
+
+We check that a short is 16 bits and a long 32 bits; we have made
+those assumptions elsewhere in the code. (This is almost a C standard,
+anyway.) Note that TYPE1IMAGER makes no assumptions about the size of an
+'int'!
+:i1/portability assumptions/
+*/
+void InitImager()
+{
+
+/* Check to see if we have been using our own malloc. If so,*/
+/* Undef malloc so that we can get to the system call. */
+/* All other calls to malloc are defined to Xalloc. */
+
+ if (sizeof(SHORT) != 2 || sizeof(LONG) != 4)
+ abort("Fundamental TYPE1IMAGER assumptions invalid in this port", 22);
+ InitSpaces();
+ InitFonts();
+ InitFiles();
+/*
+In some environments, constants and/or exception handling need to be
+*/
+ LibInit();
+}
+/*
+:h4.TermImager() - Terminate TYPE1IMAGER
+
+This only makes sense in a server environment; true TYPE1IMAGER needs do
+nothing.
+*/
+void TermImager()
+{
+ return;
+}
+/*
+:h4.reportusage() - A Stub to Get a Clean Link with Portable PMP
+*/
+void reportusage( void)
+{
+ return;
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.h
new file mode 100644
index 00000000000..13cbae78029
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/objects.h
@@ -0,0 +1,296 @@
+/* $XConsortium: objects.h,v 1.6 92/03/20 14:35:56 keith Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+/*END SHARED*/
+/*SHARED*/
+
+#include "types.h"
+
+#define Permanent(obj) t1_Permanent(obj)
+#define Temporary(obj) t1_Temporary(obj)
+#define Destroy(obj) t1_Destroy(obj)
+#define Dup(obj) t1_Dup(obj)
+#define InitImager() t1_InitImager()
+#define TermImager() t1_TermImager()
+#define Pragmatics(f,v) t1_Pragmatics(f,v)
+#define ErrorMsg() t1_ErrorMsg()
+
+struct xobject *t1_Permanent(); /* make an object permanent */
+struct xobject *t1_Temporary(); /* make an object temporary */
+struct xobject *t1_Destroy(); /* destroy an object */
+struct xobject *t1_Dup(); /* duplicate an object */
+void t1_InitImager(); /* initialize TYPE1IMAGER */
+void t1_TermImager(); /* terminate TYPE1IMAGER */
+void t1_Pragmatics(); /* set debug flags, etc. */
+char *t1_ErrorMsg(); /* return last TYPE1IMAGER error message */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define abort(line,no) t1_abort(line,no)
+#define Allocate(n,t,s) t1_Allocate(n,t,s)
+#define Free(obj) t1_Free(obj)
+#define NonObjectFree(a) free(a)
+#define Consume t1_Consume
+#define ArgErr(s,o,r) t1_ArgErr(s,o,r)
+#define TypeErr(n,o,e,r) t1_TypeErr(n,o,e,r)
+#define Copy(obj) t1_Copy(obj)
+#define Unique(obj) t1_Unique(obj)
+
+void t1_abort(); /* crash; software logic error */
+struct xobject *t1_Allocate(); /* allocate memory */
+void t1_Free(); /* free memory */
+struct xobject *t1_Unique(); /* make a unique temporary copy of an object */
+struct xobject *t1_ArgErr(); /* handle argument errors */
+struct xobject *t1_TypeErr(); /* handle 'bad type' argument errors */
+void t1_Consume(); /* consume a variable number of arguments */
+struct xobject *t1_Copy(); /* make a new copy, not reference bump PNM */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ON (~0) /* all bits on */
+#ifndef FALSE
+#define FALSE 0 /* handy zero value */
+#endif
+#ifndef TRUE
+#define TRUE 1 /* handy non-zero value */
+#endif
+
+#ifndef NULL
+#define NULL 0
+/*
+The NULL pointer is system specific. (Most systems, however, use 0.)
+TYPE1IMAGER could have its own NULL, independent of the rest of the system,
+were it not for malloc(). The system call malloc() returns NULL when
+out of memory.
+:i1/portibility assumptions/
+*/
+#endif
+
+#define TYPE1_MIN(a,b) (((a)<(b)) ? a : b)
+#define TYPE1_MAX(a,b) (((a)>(b)) ? a : b)
+#define TYPE1_ABS(a) (((a)>=0)?(a):-(a))
+
+/*END SHARED*/
+/*SHARED*/
+
+struct xobject {
+ char type; /* encoded type of object */
+ unsigned char flag; /* flag byte for temporary object characteristics */
+ short references; /* count of pointers to this object
+ (plus 1 for permanent objects) PNM */
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+#define XOBJ_COMMON char type; unsigned char flag; short references;
+
+/*END SHARED*/
+/*SHARED*/
+
+
+#define INVALIDTYPE 0
+#define FONTTYPE 1
+#define REGIONTYPE 3
+#define PICTURETYPE 4
+#define SPACETYPE 5
+#define LINESTYLETYPE 6
+#define EDGETYPE 7
+#define STROKEPATHTYPE 8
+#define CLUTTYPE 9
+
+#define ISPATHTYPE(type) ((type)&0x10) /* all path segments have this bit on */
+#define LINETYPE (0+ISPATHTYPE(ON))
+#define CONICTYPE (1+ISPATHTYPE(ON))
+#define BEZIERTYPE (2+ISPATHTYPE(ON))
+#define HINTTYPE (3+ISPATHTYPE(ON))
+
+#define MOVETYPE (5+ISPATHTYPE(ON))
+#define TEXTTYPE (6+ISPATHTYPE(ON))
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ISPERMANENT(flag) ((flag)&0x01)
+#define ISIMMORTAL(flag) ((flag)&0x02)
+
+/*END SHARED*/
+/*SHARED*/
+
+#define PRESERVE(obj) if (!ISPERMANENT((obj)->flag)) \
+ (obj)->references++;
+
+/*END SHARED*/
+/*SHARED*/
+
+#define LONGCOPY(dest,source,bytes) { \
+ register LONG *p1 = (LONG *)dest; register LONG *p2 = (LONG *)source; \
+ register int count = (bytes) / sizeof(LONG); \
+ while (--count >= 0) *p1++ = *p2++; }
+
+
+/*END SHARED*/
+/*SHARED*/
+
+#define FOLLOWING(p) ((p)+1)
+
+/*END SHARED*/
+/*SHARED*/
+
+#define TYPECHECK(name, obj, expect, whenBAD, consumables, rettype) { \
+ if (obj->type != expect) { \
+ (Consume)consumables; \
+ return((rettype)TypeErr(name, obj, expect, whenBAD)); \
+ } \
+}
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ARGCHECK(test,msg,obj,whenBAD,consumables,rettype) { \
+ if (test) { \
+ (Consume)consumables; \
+ return((rettype)ArgErr(msg, obj, whenBAD)); \
+ } \
+}
+
+/*END SHARED*/
+/*SHARED*/
+
+/* Changed use of Dup() below to Temporary(Copy()) because Dup() does not
+ necessarily return a Unique Copy anymore! 3-26-91 */
+#define TYPENULLCHECK(name, obj, expect, whenBAD, consumables,rettype) \
+ if (obj == NULL) { \
+ (Consume)consumables; \
+ if (whenBAD != NULL && ISPERMANENT(whenBAD->flag)) \
+ return((rettype)Temporary(Copy(whenBAD))); \
+ else return((rettype)whenBAD); \
+ } else { \
+ if (obj->type != expect) { \
+ (Consume)consumables; \
+ return((rettype)TypeErr(name, obj, expect, whenBAD)); \
+ } \
+ }
+/*END SHARED*/
+/*SHARED*/
+
+#define MAKECONSUME(obj,stmt) { if (!ISPERMANENT(obj->flag)) stmt; }
+
+/*END SHARED*/
+/*SHARED*/
+
+#define MAKEUNIQUE(obj,stmt) ( ( (obj)->references > 1 ) ? stmt : obj )
+
+/*END SHARED*/
+/*SHARED*/
+/* NDW: personally, I want to see status and error messages! */
+#define IfTrace0(condition,model) \
+ {if (condition) printf(model);}
+#define IfTrace1(condition,model,arg0) \
+ {if (condition) printf(model,arg0);}
+#define IfTrace2(condition,model,arg0,arg1) \
+ {if (condition) printf(model,arg0,arg1);}
+#define IfTrace3(condition,model,arg0,arg1,arg2) \
+ {if (condition) printf(model,arg0,arg1,arg2);}
+#define IfTrace4(condition,model,arg0,arg1,arg2,arg3) \
+ {if (condition) printf(model,arg0,arg1,arg2,arg3);}
+#define IfTrace5(condition,model,arg0,arg1,arg2,arg3,arg4) \
+ {if (condition) printf(model,arg0,arg1,arg2,arg3,arg4);}
+#define IfTrace6(condition,model,arg0,arg1,arg2,arg3,arg4,arg5) \
+ {if (condition) printf(model,arg0,arg1,arg2,arg3,arg4,arg5);}
+/* NDW: patch ends */
+
+void Trace0();
+char *Trace1(),*Trace2(),*Trace3(),*Trace4(),*Trace5(),*Trace6();
+
+#ifdef GLOBALS
+
+#define extern
+#define INITIALIZED(value) = value
+
+#else
+
+#define INITIALIZED(value)
+
+#endif
+
+extern char MustCheckArgs INITIALIZED(TRUE);
+extern char MustTraceCalls INITIALIZED(FALSE);
+extern char MustCrash INITIALIZED(TRUE);
+extern char InternalTrace INITIALIZED(TRUE);
+extern char LineIOTrace INITIALIZED(TRUE);
+
+extern char ProcessHints INITIALIZED(TRUE);
+
+extern char SaveFontPaths INITIALIZED(TRUE);
+
+extern short CRASTERCompressionType INITIALIZED(1);
+
+extern char ConicDebug INITIALIZED(0);
+extern char LineDebug INITIALIZED(0);
+extern char RegionDebug INITIALIZED(0);
+extern char PathDebug INITIALIZED(0);
+extern char FontDebug INITIALIZED(0);
+extern char SpaceDebug INITIALIZED(0);
+extern char StrokeDebug INITIALIZED(0);
+extern char MemoryDebug INITIALIZED(0);
+extern char HintDebug INITIALIZED(0);
+extern char ImageDebug INITIALIZED(0);
+extern char OffPageDebug INITIALIZED(0);
+
+extern short CachedChars INITIALIZED(0x7FFF);
+extern short CachedFonts INITIALIZED(0x7FFF);
+extern int CacheBLimit INITIALIZED(12500);
+extern char Continuity INITIALIZED(2);
+
+#ifdef extern
+#undef extern
+#endif
+
+/*
+We define other routines formatting parameters
+*/
+#define DumpArea(area) t1_DumpArea(area)
+#define DumpText(text) t1_DumpText(text)
+/* #define DumpPath(path) t1_DumpPath(path) */ /* commented by RMz, 1999-06-10 */
+#define DumpSpace(space) t1_DumpSpace(space)
+#define DumpEdges(e) t1_DumpEdges(e)
+#define FormatFP(s,p) t1_FormatFP(s,p)
+
+void t1_DumpArea(); /* dump a region structure */
+void t1_DumpText(); /* dump a textpath structure */
+void T1_DumpPath(); /* dump a path list */
+void t1_DumpSpace(); /* dump a coordinate space structure */
+void t1_DumpEdges(); /* dump a region's edge list */
+void t1_FormatFP(); /* dump a format a "fractpel" coordinate */
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.c
new file mode 100644
index 00000000000..8e7368178b2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.c
@@ -0,0 +1,1516 @@
+/* $XConsortium: paths.c,v 1.4 91/10/10 11:18:40 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* PATHS CWEB V0021 ******** */
+/*
+:h1 id=paths.PATHS Module - Path Operator Handler
+
+This is the module that is responsible for building and transforming
+path lists.
+
+&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
+
+
+:h3.Include Files
+
+The included files are:
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+ /* after the system includes (dsr) */
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h" /* understands about Union */
+#include "fonts.h" /* understands about TEXTTYPEs */
+#include "pictures.h" /* understands about handles */
+#include "strokes.h" /* understands how to coerce stroke paths */
+#include "trig.h"
+static int UnClose();
+
+/*
+:h3.Routines Available to the TYPE1IMAGER User
+
+The PATHS routines that are made available to the outside user are:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Functions Provided to Other Modules
+
+The path routines that are made available to other TYPE1IMAGER modules
+are defined here:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+NOTE: because of the casts put in the macros for Loc, ArcCA, Conic,
+RoundConic, PathSegment, and JoinSegment, we cannot use the macro names
+when the functions are actually defined. We have to use the unique
+names with their unique first two characters. Thus, if anyone in the
+future ever decided to change the first two characters, it would not be
+enough just to change the macro (as it would for most other functions).
+He would have to also change the function definition.
+*/
+/*
+:h3.Macros Provided to Other Modules
+
+The CONCAT macro is defined here and used in the STROKES module. See
+:hdref refid=pathmac..
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h2.Path Segment Structures
+
+A path is represented as a linked list of the following structure:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+When 'link' is NULL, we are at the last segment in the path (surprise!).
+
+'last' is only non-NULL on the first segment of a path,
+for all the other segments 'last' == NULL. We test for a non-NULL
+'last' (ISPATHANCHOR predicate) when we are given an alleged path
+to make sure the user is not trying to pull a fast one on us.
+
+A path may be a collection of disjoint paths. Every break in the
+disjoint path is represented by a MOVETYPE segment.
+
+Closed paths are discussed in :hdref refid=close..
+
+:h3.CopyPath() - Physically Duplicating a Path
+
+This simple function illustrates moving through the path linked list.
+Duplicating a segment just involves making a copy of it, except for
+text, which has some auxilliary things involved. We don't feel
+competent to duplicate text in this module, so we call someone who
+knows how (in the FONTS module).
+*/
+struct segment *CopyPath(p0)
+ register struct segment *p0; /* path to duplicate */
+{
+ register struct segment *p,*n=NULL,*last=NULL,*anchor;
+
+ for (p = p0, anchor = NULL; p != NULL; p = p->link) {
+
+ ARGCHECK((!ISPATHTYPE(p->type) || (p != p0 && p->last != NULL)),
+ "CopyPath: invalid segment", p, NULL, (0), struct segment *);
+
+ if (p->type == TEXTTYPE)
+ n = (struct segment *) CopyText(p);
+ else
+ n = (struct segment *)Allocate(p->size, p, 0);
+ n->last = NULL;
+ if (anchor == NULL)
+ anchor = n;
+ else
+ last->link = n;
+ last = n;
+ }
+/*
+At this point we have a chain of newly allocated segments hanging off
+'anchor'. We need to make sure the first segment points to the last:
+*/
+ if (anchor != NULL) {
+ n->link = NULL;
+ anchor->last = n;
+ }
+
+ return(anchor);
+}
+/*
+:h3.KillPath() - Destroying a Path
+
+Destroying a path is simply a matter of freeing each segment in the
+linked list. Again, we let the experts handle text.
+*/
+void KillPath(p)
+ register struct segment *p; /* path to destroy */
+{
+ register struct segment *linkp; /* temp register holding next segment*/
+
+ /* return conditional based on reference count 3-26-91 PNM */
+ if ( (--(p->references) > 1) ||
+ ( (p->references == 1) && !ISPERMANENT(p->flag) ) )
+ return;
+
+ while (p != NULL) {
+ if (!ISPATHTYPE(p->type)) {
+ ArgErr("KillPath: bad segment", p, NULL);
+ return;
+ }
+ linkp = p->link;
+ if (p->type == TEXTTYPE)
+ KillText(p);
+ else
+ Free(p);
+ p = linkp;
+ }
+}
+
+/*
+:h2 id=location."location" Objects
+
+The TYPE1IMAGER user creates and destroys objects of type "location". These
+objects locate points for the primitive path operators. We play a trick
+here and store these objects in the same "segment" structure used for
+paths, with a type field == MOVETYPE.
+
+This allows the Line() operator, for example, to be very trivial:
+It merely stamps its input structure as a LINETYPE and returns it to the
+caller--assuming, of course, the input structure was not permanent (as
+it usually isn't).
+
+:h3.The "movesegment" Template Structure
+
+This template is used as a generic segment structure for Allocate:
+*/
+
+/* added reference field 1 to temporary template below 3-26-91 PNM */
+static struct segment movetemplate = { MOVETYPE, 0, 1, sizeof(struct segment), 0,
+ NULL, NULL, {0, 0} };
+/*
+:h3.Loc() - Create an "Invisible Line" Between (0,0) and a Point
+
+*/
+
+struct segment *t1_Loc(S, x, y)
+ register struct XYspace *S; /* coordinate space to interpret X,Y */
+ DOUBLE x,y; /* destination point */
+{
+ register struct segment *r;
+
+
+ IfTrace3((MustTraceCalls),"..Loc(S=%p, x=%f, y=%f)\n", S, x, y);
+
+ r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
+ TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *);
+
+ r->last = r;
+ r->context = S->context;
+ (*S->convert)(&r->dest, S, x, y);
+ ConsumeSpace(S);
+ return(r);
+}
+/*
+:h3.ILoc() - Loc() With Integer Arguments
+
+*/
+struct segment *ILoc(S, x, y)
+ register struct XYspace *S; /* coordinate space to interpret X,Y */
+ register int x,y; /* destination point */
+{
+ register struct segment *r;
+
+ IfTrace3((MustTraceCalls),"..ILoc(S=%p, x=%d, y=%d)\n",
+ S, (LONG) x, (LONG) y);
+ r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
+ TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *);
+
+ r->last = r;
+ r->context = S->context;
+ (*S->iconvert)(&r->dest, S, (LONG) x, (LONG) y);
+ ConsumeSpace(S);
+ return(r);
+}
+
+/*
+:h3.SubLoc() - Vector Subtraction of Two Locition Objects
+
+This user operator subtracts two location objects, yielding a new
+location object that is the result.
+
+The symmetrical function AddLoc() is totally redundent with Join(),
+so it is not provided.
+*/
+
+struct segment *SubLoc(p1, p2)
+ register struct segment *p1;
+ register struct segment *p2;
+{
+ IfTrace2((MustTraceCalls),"SubLoc(%p, %p)\n", p1, p2);
+
+ ARGCHECK(!ISLOCATION(p1), "SubLoc: bad first arg", p1, NULL, (0), struct segment *);
+ ARGCHECK(!ISLOCATION(p2), "SubLoc: bad second arg", p2, NULL, (0), struct segment *);
+ p1 = UniquePath(p1);
+ p1->dest.x -= p2->dest.x;
+ p1->dest.y -= p2->dest.y;
+ ConsumePath(p2);
+ return(p1);
+}
+
+/*
+:h2.Straight Line Segments
+
+:h3.PathSegment() - Create a Generic Path Segment
+
+Many routines need a LINETYPE or MOVETYPE path segment, but do not
+want to go through the external user's interface, because, for example,
+they already know the "fractpel" destination of the segment and the
+conversion is unnecessary. PathSegment() is an internal routine
+provided to the rest of TYPE1IMAGER for handling these cases.
+*/
+
+struct segment *t1_PathSegment(type, x, y)
+ int type; /* LINETYPE or MOVETYPE */
+ fractpel x,y; /* where to go to, if known */
+{
+ register struct segment *r; /* newly created segment */
+
+ r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
+ r->type = type;
+ r->last = r; /* last points to itself for singleton */
+ r->dest.x = x;
+ r->dest.y = y;
+ return(r);
+}
+/*
+:h3.Line() - Create a Line Segment Between (0,0) and a Point P
+
+This involves just creating and filling out a segment structure:
+*/
+struct segment *Line(P)
+ register struct segment *P; /* relevant coordinate space */
+{
+
+ IfTrace1((MustTraceCalls),"..Line(%p)\n", P);
+ ARGCHECK(!ISLOCATION(P), "Line: arg not a location", P, NULL, (0), struct segment *);
+
+ P = UniquePath(P);
+ P->type = LINETYPE;
+ return(P);
+}
+/*
+:h2.Curved Path Segments
+
+We need more points to describe curves. So, the structures for curved
+path segments are slightly different. The first part is identical;
+the curved structures are larger with the extra points on the end.
+
+:h3.Bezier Segment Structure
+
+We support third order Bezier curves. They are specified with four
+control points A, B, C, and D. The curve starts at A with slope AB
+and ends at D with slope CD. The curvature at the point A is inversely
+related to the length |AB|, and the curvature at the point D is
+inversely related to the length |CD|. Point A is always point (0,0).
+
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Bezier() - Generate a Bezier Segment
+
+This is just a simple matter of filling out a 'beziersegment' structure:
+*/
+
+struct beziersegment *Bezier(B, C, D)
+ register struct segment *B; /* second control point */
+ register struct segment *C; /* third control point */
+ register struct segment *D; /* fourth control point (ending point) */
+{
+/* added reference field of 1 to temporary template below 3-26-91 PNM */
+ static struct beziersegment template =
+ { BEZIERTYPE, 0, 1, sizeof(struct beziersegment), 0,
+ NULL, NULL, { 0, 0 }, { 0, 0 }, { 0, 0 } };
+
+ register struct beziersegment *r; /* output segment */
+
+ IfTrace3((MustTraceCalls),"..Bezier(%p, %p, %p)\n", B, C, D);
+ ARGCHECK(!ISLOCATION(B), "Bezier: bad B", B, NULL, (2,C,D), struct beziersegment *);
+ ARGCHECK(!ISLOCATION(C), "Bezier: bad C", C, NULL, (2,B,D), struct beziersegment *);
+ ARGCHECK(!ISLOCATION(D), "Bezier: bad D", D, NULL, (2,B,C), struct beziersegment *);
+
+ r = (struct beziersegment *)Allocate(sizeof(struct beziersegment), &template, 0);
+ r->last = (struct segment *) r;
+ r->dest.x = D->dest.x;
+ r->dest.y = D->dest.y;
+ r->B.x = B->dest.x;
+ r->B.y = B->dest.y;
+ r->C.x = C->dest.x;
+ r->C.y = C->dest.y;
+
+ ConsumePath(B);
+ ConsumePath(C);
+ ConsumePath(D);
+ return(r);
+}
+
+/*
+:h2.Font "Hint" Segments
+
+:h3.Hint() - A Font 'Hint' Segment
+
+This is temporary code while we experiment with hints.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+struct hintsegment *Hint(S, ref, width, orientation, hinttype, adjusttype, direction, label)
+ struct XYspace *S;
+ float ref;
+ float width;
+ char orientation;
+ char hinttype;
+ char adjusttype;
+ char direction;
+ int label;
+{
+/* added reference field of 1 to hintsegment template below 3-26-91 PNM */
+ static struct hintsegment template = { HINTTYPE, 0, 1, sizeof(struct hintsegment), 0,
+ NULL, NULL, { 0, 0 }, { 0, 0 }, { 0, 0 },
+ ' ', ' ', ' ', ' ', 0};
+
+ register struct hintsegment *r;
+
+ r = (struct hintsegment *)Allocate(sizeof(struct hintsegment), &template, 0);
+
+ r->orientation = orientation;
+ if (width == 0.0) width = 1.0;
+
+ if (orientation == 'h') {
+ (*S->convert)(&r->ref, S, 0.0, ref);
+ (*S->convert)(&r->width, S, 0.0, width);
+ }
+ else if (orientation == 'v') {
+ (*S->convert)(&r->ref, S, ref, 0.0);
+ (*S->convert)(&r->width, S, width, 0.0);
+ }
+ else
+ return((struct hintsegment *)ArgErr("Hint: orient not 'h' or 'v'", NULL, NULL));
+ if (r->width.x < 0) r->width.x = - r->width.x;
+ if (r->width.y < 0) r->width.y = - r->width.y;
+ r->hinttype = hinttype;
+ r->adjusttype = adjusttype;
+ r->direction = direction;
+ r->label = label;
+ r->last = (struct segment *) r;
+ ConsumeSpace(S);
+ return(r);
+}
+
+/*
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+POP removes the first segment in a path 'p' and Frees it. 'p' is left
+pointing to the end of the path:
+*/
+#define POP(p) \
+ { register struct segment *linkp; \
+ linkp = p->link; \
+ if (linkp != NULL) \
+ linkp->last = p->last; \
+ Free(p); \
+ p = linkp; }
+/*
+INSERT inserts a single segment in the middle of a chain. 'b' is
+the segment before, 'p' the segment to be inserted, and 'a' the
+segment after.
+*/
+#define INSERT(b,p,a) b->link=p; p->link=a; p->last=NULL
+
+/*
+:h3.Join() - Join Two Objects Together
+
+If these are paths, this operator simply invokes the CONCAT macro.
+Why so much code then, you ask? Well we have to check for object
+types other than paths, and also check for certain path consistency
+rules.
+*/
+
+struct segment *Join(p1, p2)
+ register struct segment *p1,*p2;
+{
+ IfTrace2((MustTraceCalls && PathDebug > 1),"..Join(%p, %p)\n", p1, p2);
+ IfTrace2((MustTraceCalls && PathDebug <=1),"..Join(%p, %p)\n", p1, p2);
+/*
+We start with a whole bunch of very straightforward argument tests:
+*/
+ if (p2 != NULL) {
+ if (!ISPATHTYPE(p2->type)) {
+
+ if (p1 == NULL)
+ return((struct segment *)Unique(p2));
+
+ switch (p1->type) {
+
+ case REGIONTYPE:
+
+ case STROKEPATHTYPE:
+ p1 = CoercePath(p1);
+ break;
+
+ default:
+ return((struct segment *)BegHandle(p1, p2));
+ }
+ }
+
+ ARGCHECK((p2->last == NULL), "Join: right arg not anchor", p2, NULL, (1,p1), struct segment *);
+ p2 = UniquePath(p2);
+
+/*
+In certain circumstances, we don't have to duplicate a permanent
+location. (We would just end up destroying it anyway). These cases
+are when 'p2' begins with a move-type segment:
+*/
+ if (p2->type == TEXTTYPE || p2->type == MOVETYPE) {
+ if (p1 == NULL)
+ return(p2);
+ if (ISLOCATION(p1)) {
+ p2->dest.x += p1->dest.x;
+ p2->dest.y += p1->dest.y;
+ ConsumePath(p1);
+ return(p2);
+ }
+ }
+ }
+ else
+ return((struct segment *)Unique(p1));
+
+ if (p1 != NULL) {
+ if (!ISPATHTYPE(p1->type))
+
+ switch (p2->type) {
+
+ case REGIONTYPE:
+
+ case STROKEPATHTYPE:
+ p2 = CoercePath(p2);
+ break;
+
+ default:
+ return((struct segment *)EndHandle(p1, p2));
+ }
+
+ ARGCHECK((p1->last == NULL), "Join: left arg not anchor", p1, NULL, (1,p2), struct segment *);
+ p1 = UniquePath(p1);
+ }
+ else
+ return(p2);
+
+/*
+At this point all the checking is done. We have two temporary non-null
+path types in 'p1' and 'p2'. If p1 ends with a MOVE, and p2 begins with
+a MOVE, we collapse the two MOVEs into one. We enforce the rule that
+there may not be two MOVEs in a row:
+*/
+
+ if (p1->last->type == MOVETYPE && p2->type == MOVETYPE) {
+ p1->last->flag |= p2->flag;
+ p1->last->dest.x += p2->dest.x;
+ p1->last->dest.y += p2->dest.y;
+ POP(p2);
+ if (p2 == NULL)
+ return(p1);
+ }
+/*
+Now we check for another silly rule. If a path has any TEXTTYPEs,
+then it must have only TEXTTYPEs and MOVETYPEs, and furthermore,
+it must begin with a TEXTTYPE. This rule makes it easy to check
+for the special case of text. If necessary, we will coerce
+TEXTTYPEs into paths so we don't mix TEXTTYPEs with normal paths.
+*/
+ if (p1->type == TEXTTYPE) {
+ if (p2->type != TEXTTYPE && !ISLOCATION(p2))
+ p1 = CoerceText(p1);
+ }
+ else {
+ if (p2->type == TEXTTYPE) {
+ if (ISLOCATION(p1)) {
+ p2->dest.x += p1->dest.x;
+ p2->dest.y += p1->dest.y;
+ Free(p1);
+ return(p2);
+ }
+ else
+ p2 = CoerceText(p2);
+ }
+ }
+/*
+Thank God! Finally! It's hard to believe, but we are now able to
+actually do the join. This is just invoking the CONCAT macro:
+*/
+ CONCAT(p1, p2);
+
+ return(p1);
+}
+
+/*
+:h3.JoinSegment() - Create a Path Segment and Join It to a Known Path
+
+This internal function is quicker than a full-fledged join because
+it can do much less checking.
+*/
+
+struct segment *t1_JoinSegment(before, type, x, y, after)
+ register struct segment *before; /* path to join before new segment */
+ int type; /* type of new segment (MOVETYPE or LINETYPE) */
+ fractpel x,y; /* x,y of new segment */
+ register struct segment *after; /* path to join after new segment */
+{
+ register struct segment *r; /* returned path built here */
+
+ r = PathSegment(type, x, y);
+ if (before != NULL) {
+ CONCAT(before, r);
+ r = before;
+ }
+ else
+ r->context = after->context;
+ if (after != NULL)
+ CONCAT(r, after);
+ return(r);
+}
+
+/*
+:h2.Other Path Functions
+
+*/
+
+
+struct segment *t1_ClosePath(p0,lastonly)
+ register struct segment *p0; /* path to close */
+ register int lastonly; /* flag deciding to close all subpaths or... */
+{
+ register struct segment *p,*last=NULL,*start; /* used in looping through path */
+ register fractpel x,y; /* current position in path */
+ register fractpel firstx=0,firsty=0; /* start position of sub path */
+ register struct segment *lastnonhint=NULL; /* last non-hint segment in path */
+
+ IfTrace1((MustTraceCalls),"ClosePath(%p)\n", p0);
+ if (p0 != NULL && p0->type == TEXTTYPE)
+ return(UniquePath(p0));
+ if (p0->type == STROKEPATHTYPE)
+ return((struct segment *)Unique(p0));
+ /*
+ * NOTE: a null closed path is different from a null open path
+ * and is denoted by a closed (0,0) move segment. We make
+ * sure this path begins and ends with a MOVETYPE:
+ */
+ if (p0 == NULL || p0->type != MOVETYPE)
+ p0 = JoinSegment(NULL, MOVETYPE, 0, 0, p0);
+ TYPECHECK("ClosePath", p0, MOVETYPE, NULL, (0), struct segment *);
+ if (p0->last->type != MOVETYPE)
+ p0 = JoinSegment(p0, MOVETYPE, 0, 0, NULL);
+
+ p0 = UniquePath(p0);
+
+/*
+We now begin a loop through the path,
+incrementing current 'x' and 'y'. We are searching
+for MOVETYPE segments (breaks in the path) that are not already closed.
+At each break, we insert a close segment.
+*/
+ for (p = p0, x = y = 0, start = NULL;
+ p != NULL;
+ x += p->dest.x, y += p->dest.y, last = p, p = p->link)
+ {
+
+ if (p->type == MOVETYPE) {
+ if (start != NULL && (lastonly?p->link==NULL:TRUE) &&
+ !(ISCLOSED(start->flag) && LASTCLOSED(last->flag))) {
+ register struct segment *r; /* newly created */
+
+ start->flag |= ISCLOSED(ON);
+ r = PathSegment(LINETYPE, firstx - x,
+ firsty - y);
+ INSERT(last, r, p);
+ r->flag |= LASTCLOSED(ON);
+ /*< adjust 'last' if possible for a 0,0 close >*/
+{
+
+#define CLOSEFUDGE 3 /* if we are this close, let's change last segment */
+
+ if (r->dest.x != 0 || r->dest.y != 0) {
+ if (r->dest.x <= CLOSEFUDGE && r->dest.x >= -CLOSEFUDGE
+ && r->dest.y <= CLOSEFUDGE && r->dest.y >= -CLOSEFUDGE) {
+ IfTrace2((PathDebug),
+ "ClosePath forced closed by (%d,%d)\n",
+ r->dest.x, r->dest.y);
+ lastnonhint->dest.x += r->dest.x;
+ lastnonhint->dest.y += r->dest.y;
+ r->dest.x = r->dest.y = 0;
+ }
+ }
+}
+ if (p->link != NULL) {
+ p->dest.x += x - firstx;
+ p->dest.y += y - firsty;
+ x = firstx;
+ y = firsty;
+ }
+ }
+ start = p;
+ firstx = x + p->dest.x;
+ firsty = y + p->dest.y;
+ }
+ else if (p->type != HINTTYPE)
+ lastnonhint = p;
+ }
+ return(p0);
+}
+/*
+*/
+/*
+:h2.Reversing the Direction of a Path
+
+This turned out to be more difficult than I thought at first. The
+trickiness was due to the fact that closed paths must remain closed,
+etc.
+
+We need three subroutines:
+*/
+
+static struct segment *SplitPath(); /* break a path at any point */
+static struct segment *DropSubPath(); /* breaks a path after first sub-path */
+static struct segment *ReverseSubPath(); /* reverses a single sub-path */
+
+/*
+:h3.Reverse() - User Operator to Reverse a Path
+
+This operator reverses the entire path.
+*/
+
+struct segment *Reverse(p)
+ register struct segment *p; /* full path to reverse */
+{
+ register struct segment *r; /* output path built here */
+ register struct segment *nextp; /* contains next sub-path */
+
+ IfTrace1((MustTraceCalls),"Reverse(%p)\n", p);
+
+ if (p == NULL)
+ return(NULL);
+
+ ARGCHECK(!ISPATHANCHOR(p), "Reverse: invalid path", p, NULL, (0), struct segment *);
+
+ if (p->type == TEXTTYPE)
+ p = CoerceText(p);
+ p = UniquePath(p);
+
+ r = NULL;
+
+ do {
+ nextp = DropSubPath(p);
+ p = ReverseSubPath(p);
+ r = Join(p, r);
+ p = nextp;
+
+ } while (p != NULL);
+
+ return(r);
+}
+
+/*
+:h4.ReverseSubPath() - Subroutine to Reverse a Single Sub-Path
+*/
+
+static struct segment *ReverseSubPath(p)
+ register struct segment *p; /* input path */
+{
+ register struct segment *r; /* reversed path will be created here */
+ register struct segment *nextp; /* temporary variable used in loop */
+ register int wasclosed; /* flag, path was closed */
+
+ if (p == NULL)
+ return(NULL);
+
+ wasclosed = ISCLOSED(p->flag);
+ r = NULL;
+
+ do {
+/*
+First we reverse the direction of this segment and clean up its flags:
+*/
+ p->dest.x = - p->dest.x; p->dest.y = - p->dest.y;
+ p->flag &= ~(ISCLOSED(ON) | LASTCLOSED(ON));
+
+ switch (p->type) {
+
+ case LINETYPE:
+ case MOVETYPE:
+ break;
+
+ case CONICTYPE:
+ {
+/*
+The logic of this is that the new M point (stored relative to the new
+beginning) is (M - C). However, C ("dest") has already been reversed
+So, we add "dest" instead of subtracting it:
+*/
+ register struct conicsegment *cp = (struct conicsegment *) p;
+
+ cp->M.x += p->dest.x; cp->M.y += p->dest.y;
+ }
+ break;
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) p;
+
+ bp->B.x += p->dest.x; bp->B.y += p->dest.y;
+ bp->C.x += p->dest.x; bp->C.y += p->dest.y;
+ }
+ break;
+
+ case HINTTYPE:
+ {
+ register struct hintsegment *hp = (struct hintsegment *) p;
+
+ hp->ref.x = -hp->ref.x; hp->ref.y = -hp->ref.y;
+ }
+ break;
+
+ default:
+ abort("Reverse: bad path segment", 23);
+ }
+/*
+We need to reverse the order of segments too, so we break this segment
+off of the input path, and tack it on the front of the growing path
+in 'r':
+*/
+ nextp = p->link;
+ p->link = NULL;
+ p->last = p;
+ if (r != NULL)
+ CONCAT(p,r); /* leaves result in 'p'... not what we want */
+ r = p;
+ p = nextp; /* advance to next segment in input path */
+
+ } while (p != NULL);
+
+ if (wasclosed)
+ r = ClosePath(r);
+
+ return(r);
+}
+
+/*
+:h4.DropSubPath() - Drops the First Sub-Path Off a Path
+
+This subroutine returns the remaining sub-path(s). While doing so, it
+breaks the input path after the first sub-path so that a pointer to
+the original path now contains the first sub-path only.
+*/
+
+static struct segment *DropSubPath(p0)
+ register struct segment *p0; /* original path */
+{
+ register struct segment *p; /* returned remainder here */
+
+ for (p = p0; p->link != NULL; p = p->link) {
+ if (p->link->type == MOVETYPE)
+ break;
+ }
+
+ return(SplitPath(p0, p));
+}
+
+static struct segment *SplitPath(anchor, before)
+ register struct segment *anchor;
+ register struct segment *before;
+{
+ register struct segment *r;
+
+ if (before == anchor->last)
+ return(NULL);
+
+ r = before->link;
+ r->last = anchor->last;
+ anchor->last = before;
+ before->link = NULL;
+
+ return(r);
+}
+
+
+/*
+:h3.ReverseSubPaths() - Reverse the Direction of Sub-paths Within a Path
+
+This user operator reverses the sub-paths in a path, but leaves the
+'move' segments unchanged. It builds on top of the subroutines
+already established.
+*/
+
+struct segment *ReverseSubPaths(p)
+ register struct segment *p; /* input path */
+{
+ register struct segment *r; /* reversed path will be created here */
+ register struct segment *nextp; /* temporary variable used in loop */
+ int wasclosed; /* flag; subpath was closed */
+ register struct segment *nomove; /* the part of sub-path without move segment */
+ struct fractpoint delta;
+
+ IfTrace1((MustTraceCalls),"ReverseSubPaths(%p)\n", p);
+
+ if (p == NULL)
+ return(NULL);
+
+ ARGCHECK(!ISPATHANCHOR(p), "ReverseSubPaths: invalid path", p, NULL, (0), struct segment *);
+
+ if (p->type == TEXTTYPE)
+ p = CoerceText(p);
+ if (p->type != MOVETYPE)
+ p = JoinSegment(NULL, MOVETYPE, 0, 0, p);
+
+ p = UniquePath(p);
+
+ r = NULL;
+
+ for (; p != NULL;) {
+ nextp = DropSubPath(p);
+ wasclosed = ISCLOSED(p->flag);
+ if (wasclosed)
+ UnClose(p);
+
+ nomove = SplitPath(p, p);
+ r = Join(r, p);
+
+ PathDelta(nomove, &delta);
+
+ nomove = ReverseSubPath(nomove);
+ p->dest.x += delta.x;
+ p->dest.y += delta.y;
+ if (nextp != NULL) {
+ nextp->dest.x += delta.x;
+ nextp->dest.y += delta.y;
+ }
+ if (wasclosed) {
+ nomove = ClosePath(nomove);
+ nextp->dest.x -= delta.x;
+ nextp->dest.y -= delta.y;
+ }
+ r = Join(r, nomove);
+ p = nextp;
+
+ }
+
+ return(r);
+}
+
+static int UnClose(p0)
+ register struct segment *p0;
+{
+ register struct segment *p;
+
+ for (p=p0; p->link->link != NULL; p=p->link) { ; }
+
+ if (!LASTCLOSED(p->link->flag))
+ abort("UnClose: no LASTCLOSED", 24);
+
+ Free(SplitPath(p0, p));
+ p0->flag &= ~ISCLOSED(ON);
+ return(0);
+
+}
+
+/*
+:h2.Transforming and Putting Handles on Paths
+
+:h3.PathTransform() - Transform a Path
+
+Transforming a path involves transforming all the points. In order
+that closed paths do not become "unclosed" when their relative
+positions are slightly changed due to loss of arithmetic precision,
+all point transformations are in absolute coordinates.
+
+(It might be better to reset the "absolute" coordinates every time a
+move segment is encountered. This would mean that we could accumulate
+error from subpath to subpath, but we would be less likely to make
+the "big error" where our fixed point arithmetic "wraps". However, I
+think I'll keep it this way until something happens to convince me
+otherwise.)
+
+The transform is described as a "space", that way we can use our
+old friend the "iconvert" function, which should be very efficient.
+*/
+
+struct segment *PathTransform(p0, S)
+ register struct segment *p0; /* path to transform */
+ register struct XYspace *S; /* pseudo space to transform in */
+{
+ register struct segment *p; /* to loop through path with */
+ register fractpel newx,newy; /* current transformed position in path */
+ register fractpel oldx,oldy; /* current untransformed position in path */
+ register fractpel savex,savey; /* save path delta x,y */
+
+ p0 = UniquePath(p0);
+
+ newx = newy = oldx = oldy = 0;
+
+ for (p=p0; p != NULL; p=p->link) {
+
+ savex = p->dest.x; savey = p->dest.y;
+
+ (*S->iconvert)(&p->dest, S, p->dest.x + oldx, p->dest.y + oldy);
+ p->dest.x -= newx;
+ p->dest.y -= newy;
+
+ switch (p->type) {
+
+ case LINETYPE:
+ case MOVETYPE:
+ break;
+
+ case CONICTYPE:
+ {
+ register struct conicsegment *cp = (struct conicsegment *) p;
+
+ (*S->iconvert)(&cp->M, S, cp->M.x + oldx, cp->M.y + oldy);
+ cp->M.x -= newx;
+ cp->M.y -= newy;
+ /*
+ * Note roundness doesn't change... linear transform
+ */
+ break;
+ }
+
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) p;
+
+ (*S->iconvert)(&bp->B, S, bp->B.x + oldx, bp->B.y + oldy);
+ bp->B.x -= newx;
+ bp->B.y -= newy;
+ (*S->iconvert)(&bp->C, S, bp->C.x + oldx, bp->C.y + oldy);
+ bp->C.x -= newx;
+ bp->C.y -= newy;
+ break;
+ }
+
+ case HINTTYPE:
+ {
+ register struct hintsegment *hp = (struct hintsegment *) p;
+
+ (*S->iconvert)(&hp->ref, S, hp->ref.x + oldx, hp->ref.y + oldy);
+ hp->ref.x -= newx;
+ hp->ref.y -= newy;
+ (*S->iconvert)(&hp->width, S, hp->width.x, hp->width.y);
+ /* Note: width is not relative to origin */
+ break;
+ }
+
+ case TEXTTYPE:
+ {
+ XformText(p,S);
+ break;
+ }
+
+ default:
+ IfTrace1(TRUE,"path = %p\n", p);
+ abort("PathTransform: invalid segment", 25);
+ }
+ oldx += savex;
+ oldy += savey;
+ newx += p->dest.x;
+ newy += p->dest.y;
+ }
+ return(p0);
+}
+
+/*
+:h3.PathDelta() - Return a Path's Ending Point
+*/
+
+void PathDelta(p, pt)
+ register struct segment *p; /* input path */
+ register struct fractpoint *pt; /* pointer to x,y to set */
+{
+ register fractpel x,y; /* working variables for path current point */
+
+ for (x=y=0; p != NULL; p=p->link) {
+ x += p->dest.x;
+ y += p->dest.y;
+ if (p->type == TEXTTYPE) {
+ struct fractpoint mypoint;
+
+ mypoint.x = mypoint.y = 0;
+ TextDelta(p, &mypoint);
+ x += mypoint.x;
+ y += mypoint.y;
+ }
+ }
+
+ pt->x = x;
+ pt->y = y;
+}
+
+/*
+:h3.BoundingBox() - Produce a Bounding Box Path
+
+This function is called by image code, when we know the size of the
+image in pels, and need to get a bounding box path that surrounds it.
+The starting/ending handle is in the lower right hand corner.
+*/
+struct segment *BoundingBox(h, w)
+ register pel h,w; /* size of box */
+{
+ register struct segment *path;
+
+ path = PathSegment(LINETYPE, -TOFRACTPEL(w), 0);
+ path = JoinSegment(NULL, LINETYPE, 0, -TOFRACTPEL(h), path);
+ path = JoinSegment(NULL, LINETYPE, TOFRACTPEL(w), 0, path);
+ path = ClosePath(path);
+
+ return(path);
+}
+
+/*
+:h2.Querying Locations and Paths
+
+:h3.QueryLoc() - Return the X,Y of a Locition
+*/
+
+void QueryLoc(P, S, xP, yP)
+ register struct segment *P; /* location to query, not consumed */
+ register struct XYspace *S; /* XY space to return coordinates in */
+ register DOUBLE *xP,*yP; /* coordinates returned here */
+{
+ IfTrace4((MustTraceCalls),"QueryLoc(P=%p, S=%p, (%f, %f))\n",
+ P, S, *xP, *yP);
+ if (!ISLOCATION(P)) {
+ ArgErr("QueryLoc: first arg not a location", P, NULL);
+ return;
+ }
+ if (S->type != SPACETYPE) {
+ ArgErr("QueryLoc: second arg not a space", S, NULL);
+ return;
+ }
+ UnConvert(S, &P->dest, xP, yP);
+}
+/*
+:h3.QueryPath() - Find Out the Type of Segment at the Head of a Path
+
+This is a very simple routine that looks at the first segment of a
+path and tells the caller what it is, as well as returning the control
+point(s) of the path segment. Different path segments have different
+number of control points. If the caller knows that the segment is
+a move segment, for example, he only needs to pass pointers to return
+one control point.
+*/
+
+void QueryPath(path, typeP, Bp, Cp, Dp, fP)
+ register struct segment *path; /* path to check */
+ register int *typeP; /* return the type of path here */
+ register struct segment **Bp; /* return location of first point */
+ register struct segment **Cp; /* return location of second point */
+ register struct segment **Dp; /* return location of third point */
+ register DOUBLE *fP; /* return Conic sharpness */
+{
+ register int coerced = FALSE; /* did I coerce a text path? */
+
+ IfTrace3((MustTraceCalls), "QueryPath(%p, %p, %p, ...)\n",
+ path, typeP, Bp);
+ if (path == NULL) {
+ *typeP = -1;
+ return;
+ }
+ if (!ISPATHANCHOR(path)) {
+ ArgErr("QueryPath: arg not a valid path", path, NULL);
+ }
+ if (path->type == TEXTTYPE) {
+ path = CoerceText(path);
+ coerced = TRUE;
+ }
+
+ switch (path->type) {
+
+ case MOVETYPE:
+ *typeP = 0;
+ *Bp = PathSegment(MOVETYPE, path->dest.x, path->dest.y);
+ break;
+
+ case LINETYPE:
+ *typeP = (LASTCLOSED(path->flag)) ? 4 : 1;
+ *Bp = PathSegment(MOVETYPE, path->dest.x, path->dest.y);
+ break;
+
+ case CONICTYPE:
+ {
+ register struct conicsegment *cp = (struct conicsegment *) path;
+
+ *typeP = 2;
+ *Bp = PathSegment(MOVETYPE, cp->M.x, cp->M.y);
+ *Cp = PathSegment(MOVETYPE, cp->dest.x, cp->dest.y);
+ *fP = cp->roundness;
+ }
+ break;
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) path;
+
+ *typeP = 3;
+ *Bp = PathSegment(MOVETYPE, bp->B.x, bp->B.y);
+ *Cp = PathSegment(MOVETYPE, bp->C.x, bp->C.y);
+ *Dp = PathSegment(MOVETYPE, bp->dest.x, bp->dest.y);
+ }
+ break;
+
+ case HINTTYPE:
+ *typeP = 5;
+ break;
+
+ default:
+ abort("QueryPath: unknown segment", 26);
+ }
+ if (coerced)
+ KillPath(path);
+}
+/*
+:h3.QueryBounds() - Return the Bounding Box of a Path
+
+Returns the bounding box by setting the user's variables.
+*/
+
+void QueryBounds(p0, S, xminP, yminP, xmaxP, ymaxP)
+ register struct segment *p0; /* object to check for bound */
+ struct XYspace *S; /* coordinate space of returned values */
+ DOUBLE *xminP,*yminP; /* lower left hand corner (set by routine) */
+ DOUBLE *xmaxP,*ymaxP; /* upper right hand corner (set by routine) */
+{
+ register struct segment *path; /* loop variable for path segments */
+ register fractpel lastx,lasty; /* loop variables: previous endingpoint */
+ register fractpel x,y; /* loop variables: current ending point */
+ struct fractpoint min; /* registers to keep lower left hand corner */
+ struct fractpoint max; /* registers to keep upper right hand corner */
+ int coerced = FALSE; /* we have coerced the path from another object */
+ DOUBLE x1,y1,x2,y2,x3,y3,x4,y4; /* corners of rectangle in space X */
+
+ IfTrace2((MustTraceCalls), "QueryBounds(%p, %p,", p0, S);
+ IfTrace4((MustTraceCalls), " %p, %p, %p, %p)\n",
+ xminP, yminP, xmaxP, ymaxP);
+ if (S->type != SPACETYPE) {
+ ArgErr("QueryBounds: bad XYspace", S, NULL);
+ return;
+ }
+
+ min.x = min.y = max.x = max.y = 0;
+ if (p0 != NULL) {
+ if (!ISPATHANCHOR(p0)) {
+ switch(p0->type) {
+ case STROKEPATHTYPE:
+ /* replaced DupStrokePath() with Dup() 3-26-91 PNM */
+ p0 = (struct segment *) DoStroke(Dup(p0));
+ /* no break here, we have a region in p0 */
+ case REGIONTYPE:
+ p0 = RegionBounds(p0);
+ break;
+
+ case PICTURETYPE:
+ p0 = PictureBounds(p0);
+ break;
+
+ default:
+ ArgErr("QueryBounds: bad object", p0, NULL);
+ return;
+ }
+ coerced = TRUE;
+ }
+ if (p0->type == TEXTTYPE) {
+ /* replaced CopyPath() with Dup() 3-26-91 PNM */
+ p0 = (struct segment *)CoerceText(Dup(p0)); /* there are faster ways */
+ coerced = TRUE;
+ }
+ if (p0->type == MOVETYPE) {
+ min.x = max.x = p0->dest.x;
+ min.y = max.y = p0->dest.y;
+ }
+ }
+ lastx = lasty = 0;
+
+ for (path = p0; path != NULL; path = path->link) {
+
+ x = lastx + path->dest.x;
+ y = lasty + path->dest.y;
+
+ switch (path->type) {
+
+ case LINETYPE:
+ break;
+
+ case CONICTYPE:
+ {
+ register struct conicsegment *cp = (struct conicsegment *) path;
+ register fractpel Mx = lastx + cp->M.x;
+ register fractpel My = lasty + cp->M.y;
+ register fractpel deltax = 0.5 * cp->roundness * cp->dest.x;
+ register fractpel deltay = 0.5 * cp->roundness * cp->dest.y;
+ register fractpel Px = Mx - deltax;
+ register fractpel Py = My - deltay;
+ register fractpel Qx = Mx + deltax;
+ register fractpel Qy = My + deltay;
+
+
+ if (Mx < min.x) min.x = Mx;
+ else if (Mx > max.x) max.x = Mx;
+ if (My < min.y) min.y = My;
+ else if (My > max.y) max.y = My;
+
+ if (Px < min.x) min.x = Px;
+ else if (Px > max.x) max.x = Px;
+ if (Py < min.y) min.y = Py;
+ else if (Py > max.y) max.y = Py;
+
+ if (Qx < min.x) min.x = Qx;
+ else if (Qx > max.x) max.x = Qx;
+ if (Qy < min.y) min.y = Qy;
+ else if (Qy > max.y) max.y = Qy;
+ }
+ break;
+
+
+ case MOVETYPE:
+ /*
+ * We can't risk adding trailing Moves to the
+ * bounding box:
+ */
+ if (path->link == NULL)
+ goto done; /* God forgive me */
+ break;
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) path;
+ register fractpel Bx = lastx + bp->B.x;
+ register fractpel By = lasty + bp->B.y;
+ register fractpel Cx = lastx + bp->C.x;
+ register fractpel Cy = lasty + bp->C.y;
+
+ if (Bx < min.x) min.x = Bx;
+ else if (Bx > max.x) max.x = Bx;
+ if (By < min.y) min.y = By;
+ else if (By > max.y) max.y = By;
+
+ if (Cx < min.x) min.x = Cx;
+ else if (Cx > max.x) max.x = Cx;
+ if (Cy < min.y) min.y = Cy;
+ else if (Cy > max.y) max.y = Cy;
+ }
+ break;
+
+ case HINTTYPE:
+ break;
+ default:
+ abort("QueryBounds: unknown type", 27);
+ }
+
+ if (x < min.x) min.x = x;
+ else if (x > max.x) max.x = x;
+ if (y < min.y) min.y = y;
+ else if (y > max.y) max.y = y;
+
+ lastx = x; lasty = y;
+ }
+done:
+ UnConvert(S, &min, &x1, &y1);
+ UnConvert(S, &max, &x4, &y4);
+ x = min.x; min.x = max.x; max.x = x;
+ UnConvert(S, &min, &x2, &y2);
+ UnConvert(S, &max, &x3, &y3);
+
+ *xminP = *xmaxP = x1;
+ if (x2 < *xminP) *xminP = x2;
+ else if (x2 > *xmaxP) *xmaxP = x2;
+ if (x3 < *xminP) *xminP = x3;
+ else if (x3 > *xmaxP) *xmaxP = x3;
+ if (x4 < *xminP) *xminP = x4;
+ else if (x4 > *xmaxP) *xmaxP = x4;
+
+ *yminP = *ymaxP = y1;
+ if (y2 < *yminP) *yminP = y2;
+ else if (y2 > *ymaxP) *ymaxP = y2;
+ if (y3 < *yminP) *yminP = y3;
+ else if (y3 > *ymaxP) *ymaxP = y3;
+ if (y4 < *yminP) *yminP = y4;
+ else if (y4 > *ymaxP) *ymaxP = y4;
+
+ if (coerced)
+ Destroy(p0);
+}
+/*
+:h3.BoxPath()
+*/
+struct segment *BoxPath(S, h, w)
+ struct XYspace *S;
+ int h,w;
+{
+ struct segment *path;
+
+ path = Join( Line(ILoc(S, w, 0)), Line(ILoc(S, 0, h)) );
+ path = JoinSegment(path, LINETYPE, -path->dest.x, -path->dest.y, NULL);
+ return(ClosePath(path));
+}
+
+/*
+:h3.DropSegment() - Drop the First Segment in a Path
+
+This routine takes the path and returns a new path that is one segment
+shorter. It can be used in conjunction with QueryPath(), for example,
+to ask about an entire path.
+*/
+
+struct segment *DropSegment(path)
+ register struct segment *path;
+{
+ IfTrace1((MustTraceCalls),"DropSegment(%p)\n", path);
+ if (path != NULL && path->type == STROKEPATHTYPE)
+ path = CoercePath(path);
+ ARGCHECK((path == NULL || !ISPATHANCHOR(path)),
+ "DropSegment: arg not a non-null path", path, path, (0), struct segment *);
+ if (path->type == TEXTTYPE)
+ path = CoerceText(path);
+ path = UniquePath(path);
+
+ POP(path);
+ return(path);
+}
+/*
+:h3.HeadSegment() - Return the First Segment in a Path
+
+This routine takes the path and returns a new path consists of the
+first segment only.
+*/
+
+struct segment *HeadSegment(path)
+ register struct segment *path; /* input path */
+{
+ IfTrace1((MustTraceCalls),"HeadSegment(%p)\n", path);
+ if (path == NULL)
+ return(NULL);
+ if (path->type == STROKEPATHTYPE)
+ path = CoercePath(path);
+ ARGCHECK(!ISPATHANCHOR(path), "HeadSegment: arg not a path", path, path, (0), struct segment *);
+ if (path->type == TEXTTYPE)
+ path = CoerceText(path);
+ path = UniquePath(path);
+
+ if (path->link != NULL)
+ KillPath(path->link);
+ path->link = NULL;
+ path->last = path;
+ return(path);
+}
+
+/*
+:h2.Path Debug Routines
+
+:h3.DumpPath() - Display a Path on the Trace File
+ removed by RMz, 1999-06-07
+*/
+
+/*
+void DumpPath(p)
+ register struct segment *p;
+{
+ register fractpel x,y;
+ register fractpel lastx,lasty;
+ DOUBLE roundness;
+
+ IfTrace1(TRUE,"Dumping path, anchor=%p:\n", p);
+ lastx = lasty = 0;
+
+ for (;p != NULL; p=p->link) {
+
+ IfTrace0(TRUE,". ");
+ x = p->dest.x;
+ y = p->dest.y;
+ switch (p->type) {
+
+ case LINETYPE:
+ IfTrace1(TRUE,". line<%x> to", (LONG) p->flag);
+ IfTrace4(TRUE," (%d,%d), delta=(%d,%d)",
+ x + lastx, y + lasty, x, y);
+ break;
+
+ case MOVETYPE:
+ IfTrace1(TRUE,"MOVE<%x> to", (LONG) p->flag);
+ IfTrace4(TRUE,"(%d,%d), delta=(%d,%d)",
+ x + lastx, y + lasty, x, y);
+ break;
+
+ case CONICTYPE:
+ {
+ register struct conicsegment *cp = (struct conicsegment *) p;
+
+ roundness = cp->roundness;
+ IfTrace2(TRUE, ". conic to (%d,%d),",
+ x + lastx, y + lasty);
+ IfTrace3(TRUE," M=(%d,%d), r=%p", cp->M.x + lastx,
+ cp->M.y + lasty, &roundness);
+ }
+ break;
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) p;
+
+ IfTrace4(TRUE,". bezier to (%d,%d), B=(%d,%d)",
+ x + lastx, y + lasty,
+ bp->B.x + lastx, bp->B.y + lasty);
+ IfTrace2(TRUE, ", C=(%d,%d)",
+ bp->C.x + lastx, bp->C.y + lasty);
+ }
+ break;
+
+ case HINTTYPE:
+ {
+ register struct hintsegment *hp = (struct hintsegment *) p;
+
+ IfTrace4(TRUE,". hint ref=(%d,%d), width=(%d,%d)",
+ hp->ref.x + lastx, hp->ref.y + lasty,
+ hp->width.x, hp->width.y);
+ IfTrace4(TRUE, ", %c %c %c %c",
+ hp->orientation, hp->hinttype,
+ hp->adjusttype, hp->direction);
+ IfTrace1(TRUE, ", %d", (LONG) hp->label);
+ }
+ break;
+
+ case TEXTTYPE:
+ DumpText(p);
+ break;
+
+ default:
+ IfTrace0(TRUE, "bad path segment?");
+ }
+ IfTrace1(TRUE," at %p\n", p);
+ lastx += x;
+ lasty += y;
+ }
+}
+
+*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.h
new file mode 100644
index 00000000000..5cf317f89a9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths.h
@@ -0,0 +1,201 @@
+/* $XConsortium: paths.h,v 1.2 91/10/10 11:18:50 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#include "types.h"
+
+#define Loc(S,x,y) t1_Loc(S,(DOUBLE)x,(DOUBLE)y)
+#define ILoc(S,x,y) t1_ILoc(S,x,y)
+#define Line(P) t1_Line(P)
+#define Join(p1,p2) t1_Join(p1,p2)
+#define ClosePath(p) t1_ClosePath(p,0)
+#define CloseLastSubPath(p) t1_ClosePath(p,1)
+#define Conic(B,C,s) t1_Conic(B,C,(DOUBLE)s)
+#define RoundConic(M,C,r) t1_RoundConic(M,C,(DOUBLE)r)
+#define ArcP3(S,P2,P3) t1_ArcP3(S,P2,P3)
+#define ArcCA(S,C,d) t1_ArcCA(S,C,(DOUBLE)d)
+#define Bezier(B,C,D) t1_Bezier(B,C,D)
+#define Hint(S,r,w,o,h,a,d,l) t1_Hint(S,r,w,o,h,a,d,l)
+#define Reverse(p) t1_Reverse(p)
+#define ReverseSubPaths(p) t1_ReverseSubPaths(p)
+#define AddLoc(p1,p2) t1_Join(p1,p2)
+#define SubLoc(p1,p2) t1_SubLoc(p1,p2)
+#define DropSegment(p) t1_DropSegment(p)
+#define HeadSegment(p) t1_HeadSegment(p)
+#define QueryLoc(P,S,x,y) t1_QueryLoc(P,S,x,y)
+#define QueryPath(p,t,B,C,D,r) t1_QueryPath(p,t,B,C,D,r)
+#define QueryBounds(p,S,x1,y1,x2,y2) t1_QueryBounds(p,S,x1,y1,x2,y2)
+
+/*SHARED*/
+
+struct segment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* index to device context */
+ struct segment *link; /* pointer to next structure in linked list */
+ struct segment *last; /* pointer to last structure in list */
+ struct fractpoint dest; /* relative ending location of path segment */
+};
+
+#define ISCLOSED(flag) ((flag)&0x80) /* subpath is closed */
+#define LASTCLOSED(flag) ((flag)&0x40) /* last segment in closed subpath */
+
+/*
+ NOTE: The ISCLOSED flag is set on the MOVETYPE segment before the
+ subpath proper; the LASTCLOSED flag is set on the last segment (LINETYPE)
+ in the subpath
+
+ We define the ISPATHANCHOR predicate to test that a path handle
+ passed by the user is valid:
+*/
+
+#define ISPATHANCHOR(p) (ISPATHTYPE(p->type)&&p->last!=NULL)
+
+/*
+ For performance reasons, a user's "location" object is identical to
+ a path whose only segment is a move segment. We define a predicate
+ to test for this case. See also :hdref refid=location..
+*/
+
+#define ISLOCATION(p) ((p)->type == MOVETYPE && (p)->link == NULL)
+
+/*END SHARED*/
+
+
+struct segment *t1_Loc(); /* create a location object (or "move" segment) */
+struct segment *t1_ILoc(); /* integer argument version of same */
+struct segment *t1_Line(); /* straight line path segment */
+struct segment *t1_Join(struct segment *,struct segment *); /* join two paths or regions together */
+struct segment *t1_ClosePath(); /* close a path or path set */
+struct conicsegment *t1_Conic(); /* conic curve path segment */
+struct conicsegment *t1_RoundConic(); /* ditto, specified another way */
+struct conicsegment *t1_ArcP3(); /* circular path segment with three points */
+struct conicsegment *t1_ArcCA(); /* ditto, with center point and angle */
+struct beziersegment *t1_Bezier(); /* Bezier third order curve path segment */
+struct hintsegment *t1_Hint(); /* produce a font 'hint' path segment */
+struct segment *t1_Reverse(); /* reverse the complete order of paths */
+struct segment *t1_ReverseSubPaths(); /* reverse only sub-paths; moves unchanged */
+struct segment *t1_SubLoc(); /* subtract two location objects */
+struct segment *t1_DropSegment(); /* Drop the first segment in a path */
+struct segment *t1_HeadSegment(); /* return the first segment in a path */
+void t1_QueryLoc(); /* Query location; return its (x,y) */
+void t1_QueryPath(); /* Query segment at head of a path */
+void t1_QueryBounds(); /* Query the bounding box of a path */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define CopyPath(p) t1_CopyPath(p)
+#define KillPath(p) t1_KillPath(p)
+#define PathTransform(p,m) t1_PathXform(p,m)
+#define PathDelta(p,pt) t1_PathDelta(p,pt)
+#define BoundingBox(h,w) t1_BoundingBox(h,w)
+#define PathSegment(t,x,y) t1_PathSegment(t,(fractpel)x,(fractpel)y)
+#define JoinSegment(b,t,x,y,a) t1_JoinSegment(b,t,(fractpel)x,(fractpel)y,a)
+#define Hypoteneuse(dx,dy) t1_Hypoteneuse(dx,dy)
+#define BoxPath(S,h,w) t1_BoxPath(S,h,w)
+
+struct segment *t1_CopyPath(struct segment *); /* duplicate a path */
+void t1_KillPath(struct segment *); /* destroy a path */
+struct segment *t1_PathXform(); /* transform a path arbitrarily */
+void t1_PathDelta(); /* calculate the ending point of a path */
+struct segment *t1_PathSegment(); /* produce a MOVE or LINE segment */
+struct segment *t1_JoinSegment(); /* join a MOVE or LINE segment to a path */
+DOUBLE t1_Hypoteneuse(); /* returns the length of a line */
+struct segment *t1_BoxPath(); /* returns a rectangular path */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ConsumePath(p) MAKECONSUME(p,KillPath(p))
+#define UniquePath(p) MAKEUNIQUE(p,CopyPath(p))
+
+
+/*END SHARED*/
+/*SHARED*/
+
+struct conicsegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = CONICTYPE */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ struct segment *link; /* as with any 'segment' type */
+ struct segment *last; /* as with any 'segment' type */
+ struct fractpoint dest; /* Ending point (C point) */
+ struct fractpoint M; /* "midpoint" of conic explained above */
+ float roundness; /* explained above */
+} ;
+/*END SHARED*/
+/*SHARED*/
+
+struct beziersegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = BEZIERTYPE */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ struct segment *link; /* as with any 'segment' type */
+ struct segment *last; /* as with any 'segment' type */
+ struct fractpoint dest; /* ending point (D) */
+ struct fractpoint B; /* control point B */
+ struct fractpoint C; /* control point C */
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+struct hintsegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = HINTTYPE */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* device context */
+ struct segment *link; /* pointer to next structure in linked list */
+ struct segment *last; /* pointer to last structure in list */
+ struct fractpoint dest; /* ALWAYS 0,0 */
+ struct fractpoint ref;
+ struct fractpoint width;
+ char orientation;
+ char hinttype;
+ char adjusttype;
+ char direction;
+ int label;
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+/*
+CONCAT links the 'p2' path chain on the end of the 'p1' chain. (This macro
+is also used by the STROKES module.)
+*/
+#define CONCAT(p1, p2) { \
+ p1->last->link = p2; /* link p2 on end of p1 */ \
+ p1->last = p2->last; /* last of new is last of p2 */ \
+ p2->last = NULL; } /* only first segment has non-NULL "last" */
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths_rmz.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths_rmz.h
new file mode 100644
index 00000000000..208e9185dcb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/paths_rmz.h
@@ -0,0 +1,210 @@
+/* $XConsortium: paths.h,v 1.2 91/10/10 11:18:50 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#include "types.h"
+
+
+#define XOBJ_COMMON char type; unsigned char flag; short references;
+#include "spaces_rmz.h"
+
+
+
+/*
+
+#define Loc(S,x,y) t1_Loc(S,(DOUBLE)x,(DOUBLE)y)
+#define ILoc(S,x,y) t1_ILoc(S,x,y)
+#define Line(P) t1_Line(P)
+#define Join(p1,p2) t1_Join(p1,p2)
+#define ClosePath(p) t1_ClosePath(p,0)
+#define CloseLastSubPath(p) t1_ClosePath(p,1)
+#define Conic(B,C,s) t1_Conic(B,C,(DOUBLE)s)
+#define RoundConic(M,C,r) t1_RoundConic(M,C,(DOUBLE)r)
+#define ArcP3(S,P2,P3) t1_ArcP3(S,P2,P3)
+#define ArcCA(S,C,d) t1_ArcCA(S,C,(DOUBLE)d)
+#define Bezier(B,C,D) t1_Bezier(B,C,D)
+#define Hint(S,r,w,o,h,a,d,l) t1_Hint(S,r,w,o,h,a,d,l)
+#define Reverse(p) t1_Reverse(p)
+#define ReverseSubPaths(p) t1_ReverseSubPaths(p)
+#define AddLoc(p1,p2) t1_Join(p1,p2)
+#define SubLoc(p1,p2) t1_SubLoc(p1,p2)
+#define DropSegment(p) t1_DropSegment(p)
+#define HeadSegment(p) t1_HeadSegment(p)
+#define QueryLoc(P,S,x,y) t1_QueryLoc(P,S,x,y)
+#define QueryPath(p,t,B,C,D,r) t1_QueryPath(p,t,B,C,D,r)
+#define QueryBounds(p,S,x1,y1,x2,y2) t1_QueryBounds(p,S,x1,y1,x2,y2)
+
+*/
+
+/*
+struct segment *t1_Loc();
+struct segment *t1_ILoc();
+struct segment *t1_Line();
+struct segment *t1_Join();
+struct segment *t1_ClosePath();
+struct conicsegment *t1_Conic();
+struct conicsegment *t1_RoundConic();
+struct conicsegment *t1_ArcP3();
+struct conicsegment *t1_ArcCA();
+struct beziersegment *t1_Bezier();
+struct hintsegment *t1_Hint();
+struct segment *t1_Reverse();
+struct segment *t1_ReverseSubPaths();
+struct segment *t1_SubLoc();
+struct segment *t1_DropSegment();
+struct segment *t1_HeadSegment();
+void t1_QueryLoc();
+void t1_QueryPath();
+void t1_QueryBounds();
+
+*/
+/*END SHARED*/
+/*SHARED*/
+
+#define CopyPath(p) t1_CopyPath(p)
+#define KillPath(p) t1_KillPath(p)
+#define PathTransform(p,m) t1_PathXform(p,m)
+#define PathDelta(p,pt) t1_PathDelta(p,pt)
+#define BoundingBox(h,w) t1_BoundingBox(h,w)
+#define PathSegment(t,x,y) t1_PathSegment(t,(fractpel)x,(fractpel)y)
+#define JoinSegment(b,t,x,y,a) t1_JoinSegment(b,t,(fractpel)x,(fractpel)y,a)
+#define Hypoteneuse(dx,dy) t1_Hypoteneuse(dx,dy)
+#define BoxPath(S,h,w) t1_BoxPath(S,h,w)
+
+struct segment *t1_CopyPath(); /* duplicate a path */
+void t1_KillPath(); /* destroy a path */
+struct segment *t1_PathXform(); /* transform a path arbitrarily */
+void t1_PathDelta(); /* calculate the ending point of a path */
+struct segment *t1_PathSegment(); /* produce a MOVE or LINE segment */
+struct segment *t1_JoinSegment(); /* join a MOVE or LINE segment to a path */
+DOUBLE t1_Hypoteneuse(); /* returns the length of a line */
+struct segment *t1_BoxPath(); /* returns a rectangular path */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ConsumePath(p) MAKECONSUME(p,KillPath(p))
+#define UniquePath(p) MAKEUNIQUE(p,CopyPath(p))
+
+/*END SHARED*/
+/*SHARED*/
+
+struct segment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* index to device context */
+ struct segment *link; /* pointer to next structure in linked list */
+ struct segment *last; /* pointer to last structure in list */
+ struct fractpoint dest; /* relative ending location of path segment */
+} ;
+
+#define ISCLOSED(flag) ((flag)&0x80) /* subpath is closed */
+#define LASTCLOSED(flag) ((flag)&0x40) /* last segment in closed subpath */
+
+/*
+NOTE: The ISCLOSED flag is set on the MOVETYPE segment before the
+subpath proper; the LASTCLOSED flag is set on the last segment (LINETYPE)
+in the subpath
+
+We define the ISPATHANCHOR predicate to test that a path handle
+passed by the user is valid:
+*/
+
+#define ISPATHANCHOR(p) (ISPATHTYPE(p->type)&&p->last!=NULL)
+
+/*
+For performance reasons, a user's "location" object is identical to
+a path whose only segment is a move segment. We define a predicate
+to test for this case. See also :hdref refid=location..
+*/
+
+#define ISLOCATION(p) ((p)->type == MOVETYPE && (p)->link == NULL)
+
+/*END SHARED*/
+/*SHARED*/
+
+struct conicsegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = CONICTYPE */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ struct segment *link; /* as with any 'segment' type */
+ struct segment *last; /* as with any 'segment' type */
+ struct fractpoint dest; /* Ending point (C point) */
+ struct fractpoint M; /* "midpoint" of conic explained above */
+ float roundness; /* explained above */
+} ;
+/*END SHARED*/
+/*SHARED*/
+
+struct beziersegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = BEZIERTYPE */
+ unsigned char size; /* as with any 'segment' type */
+ unsigned char context; /* as with any 'segment' type */
+ struct segment *link; /* as with any 'segment' type */
+ struct segment *last; /* as with any 'segment' type */
+ struct fractpoint dest; /* ending point (D) */
+ struct fractpoint B; /* control point B */
+ struct fractpoint C; /* control point C */
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+struct hintsegment {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = HINTTYPE */
+ unsigned char size; /* size of the structure */
+ unsigned char context; /* device context */
+ struct segment *link; /* pointer to next structure in linked list */
+ struct segment *last; /* pointer to last structure in list */
+ struct fractpoint dest; /* ALWAYS 0,0 */
+ struct fractpoint ref;
+ struct fractpoint width;
+ char orientation;
+ char hinttype;
+ char adjusttype;
+ char direction;
+ int label;
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+/*
+CONCAT links the 'p2' path chain on the end of the 'p1' chain. (This macro
+is also used by the STROKES module.)
+*/
+#define CONCAT(p1, p2) { \
+ (struct segment *)(p1)->last->link = (struct segment *)p2; \
+ (struct segment *)(p1)->last = p2->last; \
+ (struct segment *)(p2)->last = NULL; }
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/pictures.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/pictures.h
new file mode 100644
index 00000000000..13e44fcc9ee
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/pictures.h
@@ -0,0 +1,48 @@
+/* $XConsortium: pictures.h,v 1.2 91/10/10 11:18:53 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* STUB */
+
+#define CopyPicture(p) p
+#define UniquePicture(p) p
+/* #define KillPicture(p) */
+#define BegHandle(o,m) o
+#define EndHandle(o,m) o
+#define PictureBounds(P) P
+
+struct picture {
+ struct fractpoint origin;
+ struct fractpoint ending;
+};
+
+#define Phantom(o) t1_Phantom(o)
+#define Snap(o) t1_Snap(o)
+
+struct segment *t1_Phantom();
+struct segment *t1_Snap();
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.c
new file mode 100644
index 00000000000..006f5bd6b1b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.c
@@ -0,0 +1,1782 @@
+/* $XConsortium: regions.c,v 1.4 91/10/10 11:18:57 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* REGIONS CWEB V0023 LOTS */
+/*
+:h1 id=regions.REGIONS Module - Regions Operator Handler
+
+This module is responsible for creating and manipulating regions.
+
+&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
+
+
+:h3.Include Files
+
+The included files are:
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "regions.h"
+#include "curves.h"
+#include "lines.h"
+#include "pictures.h"
+#include "fonts.h"
+#include "hints.h"
+#include "strokes.h" /* to pick up 'DoStroke' */
+static int Unwind();
+static int newfilledge();
+static struct edgelist *splitedge();
+static int vertjoin();
+static int touches();
+static int crosses();
+static int edgemin();
+static int edgemax();
+static int discard();
+static int edgecheck();
+static struct edgelist *NewEdge();
+struct edgelist *swathxsort(); /* 'SortSwath' function */
+extern struct XYspace *IDENTITY;
+
+/*
+:h3.Functions Provided to the TYPE1IMAGER User
+
+This module provides the following TYPE1IMAGER entry points:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Functions Provided to Other Modules
+
+This module provides the following entry points to other modules:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Macros Provided to Other Modules
+
+:h4.GOING_TO() - Macro Predicate Needed for Changing Direction, Etc.
+
+The actual generation of run end lists (edge boundaries) is left
+to the low level rasterizing modules, LINES and CURVES. There
+are some global region-type
+questions that occur when doing a low-level
+rasterization:
+:ol.
+:li.Did we just change direction in Y and therefore need to start
+a new edge?
+:li.Did we run out of allocated edge space?
+:li.Do the minimum or maximum X values for the current edge need
+updating?
+:eol.
+In general the REGIONS is not smart enough to answer those questions
+itself. (For example, determining if and when a curve changes direction
+may need detailed curve knowledge.) Yet, this must be done efficiently.
+We provide a macro "GOING_TO" where the invoker tells us where it is
+heading for (x2,y2), plus where it is now (x1,y1), plus the current
+region under construction, and the macro answers the questions above.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h2.Data Structures Used to Represent Regions
+
+:h3.The "region" Structure
+
+The region structure is an anchor for a linked list of "edgelist"
+structures (see :hdref refid=edgelist..). It also summarizes the
+information in the edgelist structures (for example, the bounding
+box of the region). And, it contains scratch areas used during
+the creation of a region.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+The ISOPTIMIZED flag tells us if we've put a permanent region in
+'optimal' form.
+*/
+#define ISOPTIMIZED(flag) ((flag)&0x10)
+
+/*
+The ISRECTANGULAR flag tells us if a region is a rectangle. We don't
+always notice rectangles--if this flag is set, the region definitely
+is a rectangle, but some rectangular regions will not have the flag
+set. The flag is used to optimize some paths.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h4."INFINITY" - A Constant Region Structure of Infinite Extent
+
+Infinity is the complement of a null area:
+Note - removed the refcount = 1 init, replaced with references = 2 3-26-91 PNM
+*/
+static struct region infinity = { REGIONTYPE,
+ ISCOMPLEMENT(ON)+ISINFINITE(ON)+ISPERMANENT(ON)+ISIMMORTAL(ON), 2,
+ {0, 0}, {0, 0},
+ 0, 0, 0, 0,
+ NULL, NULL,
+ 0, 0, 0, 0, 0, NULL, NULL,
+ NULL, 0, NULL, NULL };
+/* we rename INFINITY to T1_INFINITY. Anyhow it is currently not used */
+struct region *T1_INFINITY = &infinity;
+
+/*
+:h4."EmptyRegion" - A Region Structure with Zero Area
+
+This structure is used to initialize the region to be built in
+Interior():
+Note - replaced refcount = 1 init with references = 2 3-26-91 PNM
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+struct region EmptyRegion = { REGIONTYPE,
+ ISPERMANENT(ON)+ISIMMORTAL(ON), 2,
+ {0, 0}, {0, 0},
+ MAXPEL, MAXPEL, MINPEL, MINPEL,
+ NULL, NULL,
+ 0, 0, 0, 0, 0, NULL, NULL,
+ NULL, 0, NULL, NULL };
+
+/*
+:h3 id=edgelist.The "edgelist" Structure
+
+Regions are represented by a linked list of 'edgelist' structures.
+When a region is complete, the structures are paired, one for the
+left and one for the right edge. While a region is being built,
+this rule may be violated temporarily.
+
+An 'edgelist' structure contains the X values for a given span
+of Y values. The (X,Y) pairs define an edge. We use the crack
+and edge coordinate system, so that integer values of X and Y
+go between pels. The edge is defined between the minimum Y and
+maximum Y.
+
+The linked list is kept sorted from top to bottom, that is, in
+increasing y. Also, if 'e1' is an edgelist structure and 'e2' is the
+next one in the list, they must have exactly the same ymin,ymax values
+or be totally disjoint. These two requirements mean that if e2's ymin
+is less than e1's ymax, it must be exactly equal to e1's ymin. A
+sublist of structures with identical ymin and ymax values is called a
+'swath'.
+
+In addition, edgelist structures are separately linked together based
+on what subpath originally created them; each subpath is kept as a
+separate circular linked list. This information is ignored unless
+continuity checking is invoked. See :hdref refid=subpath. for a
+complete description of this.
+*/
+
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+The "edgelist" structure follows the convention of TYPE1IMAGER user
+objects, having a type field and a flag field as the first two
+elements. However, the user never sees "edgelist" structures
+directly; he is given handles to "region" structures only.
+
+By having a type field, we can use the "copy" feature of Allocate()
+to duplicate edge lists quickly.
+
+We also define two flag bits for this structure. The ISDOWN bit is set
+if the edge is going in the direction of increasing Y. The ISAMBIGUOUS
+bit is set if the edge is identical to its neighbor (edge->link); such
+edges may be "left" when they should be "right", or vice versa,
+unnecessarily confusing the continuity checking logic. The FixSubPaths()
+routine in HINTS will swap ambiguous edges if that avoids crossing edges;
+see :hdref refid=fixsubp..
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.KillRegion() - Destroys a Region
+
+KillRegion nominally just decrements the reference count to that region.
+If the reference count becomes 0, all memory associated with it is
+freed. We just follow the linked list, freeing as we go, then kill any
+associated (thresholded) picture.
+Note - added conditional return based on references 3-26-91 PNM
+*/
+
+void KillRegion(area)
+ register struct region *area; /* area to free */
+{
+ register struct edgelist *p; /* loop variable */
+ register struct edgelist *next; /* loop variable */
+
+ if (area->references < 0)
+ abort("KillRegion: negative reference count", 28);
+ if ( (--(area->references) > 1) ||
+ ( (area->references == 1) && !ISPERMANENT(area->flag) ) )
+ return;
+
+ for (p=area->anchor; p != NULL; p=next) {
+ next = p->link;
+ Free(p);
+ }
+ /* KillPicture-macro removed from sources (RMz, 2001-04-01)
+ if (area->thresholded != NULL)
+ KillPicture(area->thresholded);
+ */
+ Free(area);
+}
+/*
+:h3.CopyRegion() - Makes a Copy of a Region
+*/
+struct region *CopyRegion(area)
+ register struct region *area; /* region to duplicate */
+{
+ register struct region *r; /* output region built here */
+ register struct edgelist *last=NULL; /* loop variable */
+ register struct edgelist *p,*newp; /* loop variables */
+
+ r = (struct region *)Allocate(sizeof(struct region), area, 0);
+ r->anchor = NULL;
+
+ for (p=area->anchor; VALIDEDGE(p); p=p->link) {
+
+ newp = NewEdge(p->xmin, p->xmax, p->ymin, p->ymax, p->xvalues, ISDOWN(p->flag));
+ newp->fpx1 = p->fpx1;
+ newp->fpx2 = p->fpx2;
+ newp->fpy1 = p->fpy1;
+ newp->fpy2 = p->fpy2;
+
+ if (r->anchor == NULL)
+ r->anchor = last = newp;
+ else
+ last->link = newp;
+
+ last = newp;
+ }
+ if (area->thresholded != NULL)
+ /* replaced DupPicture with Dup() 3-26-91 PNM */
+ r->thresholded = (struct picture *)Dup(area->thresholded);
+ return(r);
+}
+/*
+:h4.NewEdge() - Allocates and Returns a New "edgelist" Structure
+
+We allocate space for the X values contiguously with the 'edgelist'
+structure that locates them. That way, we only have to free the
+edgelist structure to free all memory associated with it. Damn
+clever, huh?
+*/
+
+static struct edgelist *NewEdge(xmin, xmax, ymin, ymax, xvalues, isdown)
+ pel xmin,xmax; /* X extent of edge */
+ pel ymin,ymax; /* Y extent of edge */
+ pel *xvalues; /* list of X values for entire edge */
+ int isdown; /* flag: TRUE means edge progresses downward */
+{
+ static struct edgelist template = {
+ EDGETYPE, 0, 1, NULL, NULL,
+ 0, 0, 0, 0, NULL };
+
+ register struct edgelist *r; /* returned structure */
+ register int iy; /* ymin adjusted for 'long' alignment purposes */
+
+ IfTrace2((RegionDebug),"....new edge: ymin=%d, ymax=%d ",
+ (LONG)ymin, (LONG) ymax);
+ if (ymin >= ymax)
+ abort("newedge: height not positive", 29);
+/*
+We are going to copy the xvalues into a newly allocated area. It
+helps performance if the values are all "long" aligned. We can test
+if the xvalues are long aligned by ANDing the address with the
+(sizeof(long) - 1)--if non zero, the xvalues are not aligned well. We
+set 'iy' to the ymin value that would give us good alignment:
+*/
+ iy = ymin - (((unsigned long) xvalues) & (sizeof(LONG) - 1)) / sizeof(pel);
+
+ r = (struct edgelist *)Allocate(sizeof(struct edgelist), &template,
+ (ymax - iy) * sizeof(pel));
+
+ if (isdown) r->flag = ISDOWN(ON);
+ r->xmin = xmin;
+ r->xmax = xmax;
+ r->ymin = ymin;
+ r->ymax = ymax;
+
+ r->xvalues = (pel *) FOLLOWING(r);
+ if (ymin != iy) {
+ r->xvalues += ymin - iy;
+ xvalues -= ymin - iy;
+ }
+
+/*
+We must round up (ymax - iy) so we get the ceiling of the number of
+longs. The destination must be able to hold these extra bytes because
+Allocate() makes everything it allocates be in multiples of longs.
+*/
+ LONGCOPY(&r[1], xvalues, (ymax - iy) * sizeof(pel) + sizeof(LONG) - 1);
+
+ IfTrace1((RegionDebug),"result=%p\n", r);
+ return(r);
+}
+
+/*
+:h2.Building Regions
+
+:h3.Interior() - Iterate Through a Path, Building a Region
+
+This routine is the workhorse driver routine that iterates through a
+path, calling the appropriate stepping routines to actually produce the
+run end "edgelist" structures.
+
+:ol.
+:li."Interior" calls StepLine or StepConic or StepBezier as appropriate
+to produce run ends.
+:li.Occasionally these routines will notice a change in Y direction
+and will call ChangeDirection (through the GOING_TO macro); this is
+a call back to the REGIONS module.
+:li.ChangeDirection will call whatever function is in the region
+structure; for Interior, this function is 'newfilledge'.
+:li.Newfilledge will call NewEdge to create a new edgelist structure,
+then, call SortSwath to sort it onto the linked list being built at
+the region "anchor".
+:eol.
+
+By making the function called by ChangeDirection be a parameter of the
+region, we allow the same ChangeDirection logic to be used by stroking.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+struct region *Interior(p, fillrule)
+ register struct segment *p; /* take interior of this path */
+ register int fillrule; /* rule to follow if path crosses itself */
+{
+ register fractpel x,y; /* keeps ending point of path segment */
+ fractpel lastx,lasty; /* previous x,y from path segment before */
+ register struct region *R; /* region I will build */
+ register struct segment *nextP; /* next segment of path */
+ char tempflag; /* flag; is path temporary? */
+ char Cflag; /* flag; should we apply continuity? */
+
+ IfTrace2((MustTraceCalls),". INTERIOR(%p, %d)\n", p, (LONG) fillrule);
+
+ if (p == NULL)
+ return(NULL);
+ /*
+ Establish the 'Cflag' continuity flag based on user's fill rule and
+ our own 'Continuity' pragmatic (0: never do continuity, 1: do what
+ user asked, >1: do it regardless).
+ */
+ if (fillrule > 0) {
+ Cflag = Continuity > 0;
+ fillrule -= CONTINUITY;
+ }
+ else
+ Cflag = Continuity > 1;
+
+ ARGCHECK((fillrule != WINDINGRULE && fillrule != EVENODDRULE),
+ "Interior: bad fill rule", NULL, NULL, (1,p), struct region *);
+
+ if (p->type == TEXTTYPE)
+ /* if (fillrule != EVENODDRULE)
+ else */
+ return((struct region *)UniquePath(p));
+ if (p->type == STROKEPATHTYPE){
+ if (fillrule == WINDINGRULE)
+ return((struct region *)DoStroke(p));
+ else
+ p = CoercePath(p);
+ }
+
+
+ R = (struct region *)Allocate(sizeof(struct region), &EmptyRegion, 0);
+
+ ARGCHECK(!ISPATHANCHOR(p), "Interior: bad path", p, R, (0), struct region *);
+ ARGCHECK((p->type != MOVETYPE), "Interior: path not closed", p, R, (0), struct region *);
+
+
+ /* changed definition from !ISPERMANENT to references <= 1 3-26-91 PNM */
+ tempflag = (p->references <= 1); /* only first segment in path is so marked */
+ if (!ISPERMANENT(p->flag)) p->references -= 1;
+
+ R->newedgefcn = newfilledge;
+ /*
+ Believe it or not, "R" is now completely initialized. We are counting
+ on the copy of template to get other fields the way we want them,
+ namely
+ :ol.
+ :li.anchor = NULL
+ :li.xmin, ymin, xmax, ymax, to minimum and maximum values respectively.
+ :eol.
+ Anchor = NULL is very
+ important to ChangeDirection.
+ See :hdref refid=CD..
+
+ To minimize problems of "wrapping" in our pel arithmetic, we keep an
+ origin of the region which is the first move. Hopefully, that keeps
+ numbers within plus or minus 32K pels.
+ */
+ R->origin.x = 0/*TOFRACTPEL(NEARESTPEL(p->dest.x))*/;
+ R->origin.y = 0/*TOFRACTPEL(NEARESTPEL(p->dest.y))*/;
+ lastx = - R->origin.x;
+ lasty = - R->origin.y;
+ /*
+ ChangeDirection initializes other important fields in R, such as
+ lastdy, edge, edgeYstop, edgexmin, and edgexmax. The first segment
+ is a MOVETYPE, so it will be called first.
+ */
+ /*
+ Note: Hinting is completely performed in charspace coordinates
+ in the Type 1 module. Therefore, I have removed the code
+ to handle hint segments. (2002-08-11)
+ */
+
+ while (p != NULL) {
+
+ x = lastx + p->dest.x;
+ y = lasty + p->dest.y;
+
+ nextP = p->link;
+
+ switch(p->type) {
+
+ case LINETYPE:
+ StepLine(R, lastx, lasty, x, y);
+ break;
+
+ case CONICTYPE:
+ /* 2nd order Beziers not implemented! */
+ break;
+
+ case BEZIERTYPE:
+ {
+ register struct beziersegment *bp = (struct beziersegment *) p;
+
+ StepBezier(R, lastx, lasty,
+ lastx + bp->B.x, lasty + bp->B.y,
+ lastx + bp->C.x,
+ lasty + bp->C.y,
+ x, y);
+ }
+ break;
+
+ case MOVETYPE:
+ /* At this point we have encountered a MOVE segment. This breaks the
+ path, making it disjoint. */
+ if (p->last == NULL) /* i.e., not first in path */
+ ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0, (fractpel) 0, (fractpel) 0);
+
+ ChangeDirection(CD_FIRST, R, x, y, (fractpel) 0, (fractpel) 0, (fractpel) 0);
+ /* We'll just double check for closure here. We forgive an appended
+ MOVETYPE at the end of the path, if it isn't closed: */
+ if (!ISCLOSED(p->flag) && p->link != NULL)
+ return((struct region *)ArgErr("Fill: sub-path not closed", p, NULL));
+ break;
+
+ default:
+ abort("Interior: path type error", 30);
+ }
+ /* We're done with this segment. Advance to the next path segment in
+ the list, freeing this one if necessary: */
+ lastx = x; lasty = y;
+
+ if (tempflag)
+ Free(p);
+ p = nextP;
+ }
+ ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0, (fractpel) 0, (fractpel) 0);
+ R->ending.x = lastx;
+ R->ending.y = lasty;
+
+
+ /* Finally, clean up the region's based on the user's 'fillrule' request: */
+ if (Cflag)
+ ApplyContinuity(R);
+
+ if (fillrule == WINDINGRULE)
+ Unwind(R->anchor);
+
+ return R;
+}
+
+
+/*
+:h4.Unwind() - Discards Edges That Fail the Winding Rule Test
+
+The winding rule says that upward going edges should be paired with
+downward going edges only, and vice versa. So, if two upward edges
+or two downward edges are nominally left/right pairs, Unwind() should
+discard the second one. Everything should balance; we should discard
+an even number of edges; of course, we abort if we don't.
+*/
+static int Unwind(area)
+ register struct edgelist *area; /* input area modified in place */
+{
+ register struct edgelist *last=NULL,*next; /* struct before and after current one */
+ register int y; /* ymin of current swath */
+ register int count,newcount; /* winding count registers */
+
+ IfTrace1((RegionDebug>0),"...Unwind(%p)\n", area);
+
+ while (VALIDEDGE(area)) {
+
+ count = 0;
+ y = area->ymin;
+
+ do {
+ next = area->link;
+
+ if (ISDOWN(area->flag))
+ newcount = count + 1;
+ else
+ newcount = count - 1;
+
+ if (count == 0 || newcount == 0)
+ last = area;
+ else
+ discard(last, next);
+
+ count = newcount;
+ area = next;
+
+ } while (area != NULL && area->ymin == y);
+
+ if (count != 0)
+ abort("Unwind: uneven edges", 31);
+ }
+ /* We retunr a value for ANSI-C-compiler */
+ return(0);
+
+}
+/*
+:h3."workedge" Array
+
+This is a statically allocated array where edges are built
+before being copied into more permanent storage by NewEdge().
+*/
+
+#ifndef MAXEDGE
+#define MAXEDGE 1000
+#endif
+
+static pel workedge[MAXEDGE];
+static pel *currentworkarea = workedge;
+static pel currentsize = MAXEDGE;
+
+/*
+:h3 id=cd.ChangeDirection() - Called When Y Direction Changes
+
+The rasterizing routines call this entry point when they detect
+a change in Y. We then build the current edge and sort it into
+emerging edgelist at 'anchor' by calling whatever "newedgefcn"
+is appropriate.
+*/
+
+void ChangeDirection(type, R, x, y, dy, x2, y2)
+ int type; /* CD_FIRST, CD_CONTINUE, or CD_LAST */
+ register struct region *R; /* region in which we are changing direction */
+ fractpel x,y; /* current beginning x,y */
+ fractpel dy; /* direction and magnitude of change in y */
+{
+ register fractpel ymin,ymax; /* minimum and maximum Y since last call */
+ register fractpel x_at_ymin,x_at_ymax; /* their respective X's */
+ register pel iy; /* nearest integer pel to 'y' */
+ register pel idy; /* nearest integer pel to 'dy' */
+ register int ydiff; /* allowed Y difference in 'currentworkarea' */
+
+ IfTrace4((RegionDebug>0),"Change Y direction (%d) from (%d,%d), dy=%d\n",
+ (LONG) type, x, y, dy);
+
+ if (type != CD_FIRST) {
+
+ if (R->lastdy > 0) {
+ ymin = R->firsty;
+ x_at_ymin = R->firstx;
+ ymax = y;
+ x_at_ymax = x;
+ }
+ else {
+ ymin = y;
+ x_at_ymin = x;
+ ymax = R->firsty;
+ x_at_ymax = R->firstx;
+ }
+
+ if (ymax < ymin)
+ abort("negative sized edge?", 32);
+
+
+ (*R->newedgefcn)(R, R->edgexmin, R->edgexmax, ymin, ymax,
+ R->lastdy > 0, x_at_ymin, x_at_ymax,
+ x, y, x2, y2);
+
+ }
+
+ R->firsty = y;
+ R->firstx = x;
+ R->lastdy = dy;
+
+ iy = NEARESTPEL(y);
+ idy = NEARESTPEL(dy);
+ if (currentworkarea != workedge && idy < MAXEDGE && idy > -MAXEDGE) {
+ NonObjectFree(currentworkarea);
+ currentworkarea = workedge;
+ currentsize = MAXEDGE;
+ }
+ ydiff = currentsize - 1;
+ if (dy > 0) {
+ R->edge = &currentworkarea[-iy];
+ R->edgeYstop = TOFRACTPEL(ydiff + iy) + FPHALF;
+ }
+ else {
+ R->edge = &currentworkarea[ydiff - iy];
+ R->edgeYstop = TOFRACTPEL(iy - ydiff) - FPHALF;
+ }
+ R->edgexmax = R->edgexmin = x;
+/*
+If this is the end of a subpath, we complete the subpath circular
+chain:
+*/
+ if (type == CD_LAST && R->lastedge != NULL) {
+ register struct edgelist *e = R->firstedge;
+
+ while (e->subpath != NULL)
+ e = e->subpath;
+ e->subpath = R->lastedge;
+ R->lastedge = R->firstedge = NULL;
+ }
+}
+/*
+:h3 id=newfill.newfilledge() - Called When We Have a New Edge While Filling
+
+This is the prototypical "newedge" function passed to "Rasterize" and
+stored in "newedgefcn" in the region being built.
+
+If the edge is non-null, we sort it onto the list of edges we are
+building at "anchor".
+
+This function also has to keep the bounding box of the region
+up to date.
+*/
+
+static int newfilledge(R, xmin, xmax, ymin, ymax, isdown, x1, y1, x2, y2)
+ register struct region *R; /* region being built */
+ fractpel xmin,xmax; /* X range of this edge */
+ fractpel ymin,ymax; /* Y range of this edge */
+ int isdown; /* flag: TRUE means edge goes down, else up */
+ fractpel x1;
+ fractpel y1;
+ fractpel x2;
+ fractpel y2;
+{
+
+ register pel pelxmin,pelymin,pelxmax,pelymax; /* pel versions of bounds */
+ register struct edgelist *edge; /* newly created edge */
+
+ pelymin = NEARESTPEL(ymin);
+ pelymax = NEARESTPEL(ymax);
+ if (pelymin == pelymax)
+ return(0);
+
+ pelxmin = NEARESTPEL(xmin);
+ pelxmax = NEARESTPEL(xmax);
+
+ if (pelxmin < R->xmin) R->xmin = pelxmin;
+ if (pelxmax > R->xmax) R->xmax = pelxmax;
+ if (pelymin < R->ymin) R->ymin = pelymin;
+ if (pelymax > R->ymax) R->ymax = pelymax;
+
+ edge = NewEdge(pelxmin, pelxmax, pelymin, pelymax, &R->edge[pelymin], isdown);
+
+ /* Save maximum and minimum values of edge in order to be able to
+ use them in ApplyContinity. */
+ edge->fpx1 = x1;
+ edge->fpy1 = y1;
+ edge->fpx2 = x2;
+ edge->fpy2 = y2;
+
+ edge->subpath = R->lastedge;
+ R->lastedge = edge;
+ if (R->firstedge == NULL)
+ R->firstedge = edge;
+
+ R->anchor = SortSwath(R->anchor, edge, swathxsort);
+
+ /*
+ {
+ struct region* r = (struct region*) R;
+ struct edgelist* el = (struct edgelist*) (r->anchor);
+
+ while ( el != 0 )
+ {
+ long i = 0;
+ short int* spl;
+ short int* spr;
+ int xl;
+ int xr;
+
+ printf( "Region after Sort (NE=%ld) : ymin=%d, ymax=%d, xmin=%d, xmax=%d\n",
+ callcount, el->ymin, el->ymax, el->xmin, el->xmax);
+ for ( i=0; i<((el->ymax)-(el->ymin)); i++ ) {
+ spl = el->xvalues;
+ if ( el->link != NULL ) {
+ spr = el->link->xvalues;
+ xl = spl[i];
+ xr = spr[i];
+ printf( "Region after Sort (NE=%ld): y=%ld xleft=%d, xright=%d\n",
+ callcount, el->ymin + i, xl, xr);
+ }
+ else {
+ printf( "Region after Sort (NE=%ld): y=%ld xval=%d\n",
+ callcount, el->ymin + i, spl[i]);
+ }
+ }
+ if ( el->link != 0 )
+ el = el->link->link;
+ else
+ break;
+ }
+ }
+
+ ++callcount;
+ */
+
+ return 0;
+}
+
+/*
+:h2.Sorting Edges
+
+:h3.SortSwath() - Vertically Sort an Edge into a Region
+
+This routine sorts an edge or a pair of edges into a growing region,
+so that the region maintains its top-to-bottom, left-to-right form.
+The rules for sorting horizontally may vary depending on what you
+are doing, but the rules for vertical sorting are always the same.
+This routine is passed an argument that is a function that will
+perform the horizontal sort on demand (for example, swathxsort() or
+SwathUnion()).
+
+This is a recursive routine. A new edge (or edge pair) may overlap
+the list I am building in strange and wonderful ways. Edges may
+cross. When this happens, my strategy is to split the incoming edge
+(or the growing list) in two at that point, execute the actual sort on
+the top part of the split, and recursively call myself to figure out
+exactly where the bottom part belongs.
+*/
+
+#define TOP(e) ((e)->ymin) /* the top of an edge (for readability */
+#define BOTTOM(e) ((e)->ymax) /* the bottom of an edge (for readability */
+
+struct edgelist *SortSwath(anchor, edge, swathfcn)
+ struct edgelist *anchor; /* list being built */
+ register struct edgelist *edge; /* incoming edge or pair of edges */
+ struct edgelist *(*swathfcn)(); /* horizontal sorter */
+{
+ register struct edgelist *before,*after;
+ struct edgelist base;
+
+ if (RegionDebug > 0) {
+ if (RegionDebug > 2) {
+ IfTrace3(TRUE,"SortSwath(anchor=%p, edge=%p, fcn=%p)\n",
+ anchor, edge, swathfcn);
+ }
+ else {
+ IfTrace3(TRUE,"SortSwath(anchor=%p, edge=%p, fcn=%p)\n",
+ anchor, edge, swathfcn);
+ }
+ }
+ if (anchor == NULL)
+ return(edge);
+
+ before = &base;
+ before->ymin = before->ymax = MINPEL;
+ before->link = after = anchor;
+
+ /*
+ If the incoming edge is above the current list, we connect the current
+ list to the bottom of the incoming edge. One slight complication is
+ if the incoming edge overlaps into the current list. Then, we
+ first split the incoming edge in two at the point of overlap and recursively
+ call ourselves to sort the bottom of the split into the current list:
+ */
+ if (TOP(edge) < TOP(after)) {
+ if (BOTTOM(edge) > TOP(after)) {
+ after = SortSwath(after, splitedge(edge, TOP(after)), swathfcn);
+ }
+ vertjoin(edge, after);
+ return(edge);
+ }
+
+ /*
+ At this point the top of edge is not higher than the top of the list,
+ which we keep in 'after'. We move the 'after' point down the list,
+ until the top of the edge occurs in the swath beginning with 'after'.
+
+ If the bottom of 'after' is below the bottom of the edge, we have to
+ split the 'after' swath into two parts, at the bottom of the edge.
+ If the bottom of 'after' is above the bottom of the swath,
+ */
+
+ while (VALIDEDGE(after)) {
+
+ if (TOP(after) == TOP(edge)) {
+ if (BOTTOM(after) > BOTTOM(edge))
+ vertjoin(after, splitedge(after, BOTTOM(edge)));
+ else if (BOTTOM(after) < BOTTOM(edge)) {
+ after = SortSwath(after,
+ splitedge(edge, BOTTOM(after)), swathfcn);
+ }
+ break;
+ }
+ else if (TOP(after) > TOP(edge)) {
+ IfTrace0((BOTTOM(edge) < TOP(after) && RegionDebug > 0),
+ "SortSwath: disjoint edges\n");
+ if (BOTTOM(edge) > TOP(after)) {
+ after = SortSwath(after,
+ splitedge(edge, TOP(after)), swathfcn);
+ }
+ break;
+ }
+ else if (BOTTOM(after) > TOP(edge))
+ vertjoin(after, splitedge(after, TOP(edge)));
+
+ before = after;
+ after = after->link;
+ }
+
+ /*
+ At this point 'edge' exactly corresponds in height to the current
+ swath pointed to by 'after'.
+ */
+ if (after != NULL && TOP(after) == TOP(edge)) {
+ before = (*swathfcn)(before, edge);
+ after = before->link;
+ }
+ /*
+ At this point 'after' contains all the edges after 'edge', and 'before'
+ contains all the edges before. Whew! A simple matter now of adding
+ 'edge' to the linked list in its rightful place:
+ */
+ before->link = edge;
+ if (RegionDebug > 1) {
+ IfTrace3(TRUE,"SortSwath: in between %p and %p are %p",
+ before, after, edge);
+ while (edge->link != NULL) {
+ edge = edge->link;
+ IfTrace1(TRUE," and %p", edge);
+ }
+ IfTrace0(TRUE,"\n");
+ }
+ else
+ for (; edge->link != NULL; edge = edge->link) { ; }
+
+ edge->link = after;
+
+ return base.link;
+
+}
+
+/*
+:h3.splitedge() - Split an Edge or Swath in Two at a Given Y Value
+
+This function returns the edge or swath beginning at the Y value, and
+is guaranteed not to change the address of the old swath while splitting
+it.
+*/
+
+static struct edgelist *splitedge(list, y)
+ struct edgelist *list; /* area to split */
+ register pel y; /* Y value to split list at */
+{
+ register struct edgelist *new; /* anchor for newly built list */
+ register struct edgelist *last=NULL; /* end of newly built list */
+ register struct edgelist *r; /* temp pointer to new structure */
+ register struct edgelist *lastlist; /* temp pointer to last 'list' value */
+
+ IfTrace2((RegionDebug > 1),"splitedge of %p at %d ", list, (LONG) y);
+
+ lastlist = new = NULL;
+
+ while (list != NULL) {
+ if (y < list->ymin)
+ break;
+
+ if (y >= list->ymax)
+ abort("splitedge: above top of list", 33);
+ if (y == list->ymin)
+ abort("splitedge: would be null", 34);
+
+ r = (struct edgelist *)Allocate(sizeof(struct edgelist), list, 0);
+ /*
+ At this point 'r' points to a copy of the single structure at 'list'.
+ We will make 'r' be the new split 'edgelist'--the lower half.
+ We don't bother to correct 'xmin' and 'xmax', we'll take the
+ the pessimistic answer that results from using the old values.
+ */
+ r->ymin = y;
+ r->xvalues = list->xvalues + (y - list->ymin);
+
+ /*
+ Update the fpx values so that ApplyContinuity() will continue
+ to work. Note that high precision is a fake, here!
+ */
+ r->fpx1 = (r->xvalues[0]) << FRACTBITS;
+ r->fpx2 = (list->xvalues[list->ymax - list->ymin - 1]) << FRACTBITS;
+ list->fpx2 = (list->xvalues[y - list->ymin -1]) << FRACTBITS;
+
+ /*
+ Note that we do not need to allocate new memory for the X values,
+ they can remain with the old "edgelist" structure. We do have to
+ update that old structure so it is not as high:
+ */
+ list->ymax = y;
+
+ /*
+ Insert 'r' in the subpath chain:
+ */
+ r->subpath = list->subpath;
+ list->subpath = r;
+ /*
+ Now attach 'r' to the list we are building at 'new', and advance
+ 'list' to point to the next element in the old list:
+ */
+ if (new == NULL) {
+ new = r;
+ }
+ else
+ last->link = r;
+ last = r;
+ lastlist = list;
+ list = list->link;
+ }
+ /*
+ At this point we have a new list built at 'new'. We break the old
+ list at 'lastlist', and add the broken off part to the end of 'new'.
+ Then, we return the caller a pointer to 'new':
+ */
+ if (new == NULL)
+ abort("null splitedge", 35);
+ lastlist->link = NULL;
+ last->link = list;
+ IfTrace1((RegionDebug > 1),"yields %p\n", new);
+ return(new);
+}
+
+/*
+:h3.vertjoin() - Join Two Disjoint Edge Lists Vertically
+
+The two edges must be disjoint vertically.
+*/
+static int vertjoin(top, bottom)
+ register struct edgelist *top; /* uppermost region */
+ register struct edgelist *bottom; /* bottommost region */
+{
+ if (BOTTOM(top) > TOP(bottom))
+ abort("vertjoin not disjoint", 36);
+
+ for (; top->link != NULL; top=top->link) { ; }
+
+ top->link = bottom;
+ return(0);
+}
+
+/*
+:h3.swathxsort() - Sorting by X Values
+
+We need to sort 'edge' into its rightful
+place in the swath by X value, taking care that we do not accidentally
+advance to the next swath while searching for the correct X value. Like
+all swath functions, this function returns a pointer to the edge
+BEFORE the given edge in the sort.
+*/
+
+struct edgelist *swathxsort(before0, edge)
+ register struct edgelist *before0; /* edge before this swath */
+ register struct edgelist *edge; /* input edge */
+{
+ register struct edgelist *before;
+ register struct edgelist *after;
+ register pel y=0;
+
+ before = before0;
+ after = before->link;
+
+ while (after != NULL && TOP(after) == TOP(edge)) {
+
+ register pel *x1,*x2;
+
+ y = TOP(edge);
+ x1 = after->xvalues;
+ x2 = edge->xvalues;
+
+ while (y < BOTTOM(edge) && *x1 == *x2) {
+ x1++; x2++; y++;
+ }
+ if (y >= BOTTOM(edge)) {
+ edge->flag |= ISAMBIGUOUS(ON);
+ after->flag |= ISAMBIGUOUS(ON);
+ break;
+ }
+
+ if (*x1 >= *x2)
+ break;
+
+ before = after;
+ after = after->link;
+ }
+
+/*
+At this point, 'edge' is between 'before' and 'after'. If 'edge' didn't
+cross either of those other edges, we would be done. We check for
+crossing. If it does cross, we split the problem up by calling SortSwath
+recursively with the part of the edge that is below the crossing point:
+*/
+{
+ register int h0,h; /* height of edge--number of scans */
+
+ h0 = h = BOTTOM(edge) - y;
+ y -= TOP(edge);
+
+ if (h0 <= 0) {
+ IfTrace0((RegionDebug>0),"swathxsort: exactly equal edges\n");
+ return(before);
+ }
+
+ if (TOP(before) == TOP(edge))
+ h -= crosses(h, &before->xvalues[y], &edge->xvalues[y]);
+ if (after != NULL && TOP(after) == TOP(edge))
+ h -= crosses(h, &edge->xvalues[y], &after->xvalues[y]);
+
+ if (h < h0) {
+ SortSwath(before0->link,
+ splitedge(edge, TOP(edge) + y + h),
+ swathxsort);
+
+ }
+}
+
+ return(before);
+}
+/*
+:h3.SwathUnion() - Union Two Edges by X Value
+
+We have a left and right edge that must be unioned into a growing
+swath. If they are totally disjoint, they are just added in. The
+fun comes in they overlap the existing edges. Then some edges
+will disappear.
+*/
+
+struct edgelist *SwathUnion(before0, edge)
+ register struct edgelist *before0; /* edge before the swath */
+ register struct edgelist *edge; /* list of two edges to be unioned */
+{
+ register int h; /* saves height of edge */
+ register struct edgelist *rightedge; /* saves right edge of 'edge' */
+ register struct edgelist *before,*after; /* edge before and after */
+ int h0; /* saves initial height */
+
+ IfTrace2((RegionDebug > 1),"SwathUnion entered, before=%p, edge=%p\n",
+ before0, edge);
+
+ h0 = h = edge->ymax - edge->ymin;
+ if (h <= 0)
+ abort("SwathUnion: 0 height swath?", 37);
+
+ before = before0;
+ after = before->link;
+
+ while (after != NULL && TOP(after) == TOP(edge)) {
+ register struct edgelist *right;
+
+ right = after->link;
+ if (right->xvalues[0] >= edge->xvalues[0])
+ break;
+ before = right;
+ after = before->link;
+ }
+/*
+This is the picture at this point. 'L' indicates a left hand edge,
+'R' indicates the right hand edge.
+'<--->' indicates the degree of uncertainty as to its placement
+relative to other edges:
+:xmp atomic.
+ before after
+ R <---L----> R L R L R
+ <---L---> <------R-------------------------->
+ edge
+:exmp.
+In case the left of 'edge' touches 'before', we need to reduce
+the height by that amount.
+*/
+ if (TOP(before) == TOP(edge))
+ h -= touches(h, before->xvalues, edge->xvalues);
+
+ rightedge = edge->link;
+
+ if (after == NULL || TOP(after) != TOP(edge) ||
+ after->xvalues[0] > rightedge->xvalues[0]) {
+ IfTrace2((RegionDebug > 1),
+ "SwathUnion starts disjoint: before=%p after=%p\n",
+ before, after);
+/*
+On this side of the the above 'if', the new edge is disjoint from the
+existing edges in the swath. This is the picture:
+:xmp atomic.
+ before after
+ R L R L R L R
+ L R
+ edge
+:exmp.
+We will verify it remains disjoint for the entire height. If the
+situation changes somewhere down the edge, we split the edge at that
+point and recursively call ourselves (through 'SortSwath') to figure
+out the new situation:
+*/
+ if (after != NULL && TOP(after) == TOP(edge))
+ h -= touches(h, rightedge->xvalues, after->xvalues);
+ if (h < h0)
+ SortSwath(before0->link, splitedge(edge, edge->ymin + h), t1_SwathUnion);
+ /* go to "return" this edge pair; it is totally disjoint */
+ }
+ else {
+/*
+At this point, at the 'else', we know that the
+new edge overlaps one or more pairs in the existing swath. Here is
+a picture of our knowledge and uncertainties:
+:xmp atomic.
+ before after
+ R L R L R L R
+ <---L---> <---R------------------->
+ edge
+:exmp.
+We need to move 'after' along until it is to the right of the
+right of 'edge'. ('After' should always point to a left edge of a pair:)
+*/
+ register struct edgelist *left; /* variable to keep left edge in */
+
+ do {
+ left = after;
+ after = (after->link)->link;
+
+ } while (after != NULL && TOP(after) == TOP(edge)
+ && after->xvalues[0] <= rightedge->xvalues[0]);
+/*
+At this point this is the picture:
+:xmp atomic.
+ before left after
+ R L R L R L R
+ <---L---> <---R--->
+ edge
+:exmp.
+We need to verify that the situation stays like this all the way
+down the edge. Again, if the
+situation changes somewhere down the edge, we split the edge at that
+point and recursively call ourselves (through 'SortSwath') to figure
+out the new situation:
+*/
+
+ h -= crosses(h, left->xvalues, rightedge->xvalues);
+ h -= crosses(h, edge->xvalues, ((before->link)->link)->xvalues);
+
+ if (after != NULL && TOP(after) == TOP(edge))
+
+ h -= touches(h, rightedge->xvalues, after->xvalues);
+
+ IfTrace3((RegionDebug > 1),
+ "SwathUnion is overlapped until %d: before=%p after=%p\n",
+ (LONG) TOP(edge) + h, before, after);
+/*
+OK, if we touched either of our neighbors we need to split at that point
+and recursively sort the split edge onto the list. One tricky part
+is that when we recursively sort, 'after' will change if it was not
+in our current swath:
+*/
+ if (h < h0) {
+ SortSwath(before0->link,
+ splitedge(edge, edge->ymin + h),
+ t1_SwathUnion);
+
+ if (after == NULL || TOP(after) != TOP(edge))
+ for (after = before0->link;
+ TOP(after) == TOP(edge);
+ after = after->link) { ; }
+ }
+/*
+Now we need to augment 'edge' by the left and right of the overlapped
+swath, and to discard all edges between before and after, because they
+were overlapped and have been combined with the new incoming 'edge':
+*/
+ edge->xmin = TYPE1_MIN(edge->xmin, (before->link)->xmin);
+ edge->xmax = TYPE1_MIN(edge->xmax, (before->link)->xmax);
+ edgemin(h, edge->xvalues, (before->link)->xvalues);
+ rightedge->xmin = TYPE1_MAX(rightedge->xmin, (left->link)->xmin);
+ rightedge->xmax = TYPE1_MAX(rightedge->xmax, (left->link)->xmax);
+ edgemax(h, rightedge->xvalues, (left->link)->xvalues);
+ discard(before, after);
+ }
+ return(before);
+}
+/*
+:h3.swathrightmost() - Simply Sorts New Edge to Rightmost of Swath
+
+Like all swath functions, this function returns a pointer to the edge
+BEFORE the given edge in the sort.
+*/
+
+struct edgelist *swathrightmost(before, edge)
+ register struct edgelist *before; /* edge before this swath */
+ register struct edgelist *edge; /* input edge */
+{
+ register struct edgelist *after;
+
+ after = before->link;
+
+ while (after != NULL && TOP(after) == TOP(edge)) {
+ before = after;
+ after = after->link;
+ }
+
+ return(before);
+
+}
+/*
+:h3.touches() - Returns the Remaining Height When Two Edges Touch
+
+So, it will return 0 if they never touch. Allows incredibly(?) mnemonic
+if (touches(...)) construct.
+*/
+
+static int touches(h, left, right)
+ register int h;
+ register pel *left,*right;
+{
+ for (; h > 0; h--)
+ if (*left++ >= *right++)
+ break;
+ return(h);
+}
+/*
+:h3.crosses() - Returns the Remaining Height When Two Edges Cross
+
+So, it will return 0 if they never cross.
+*/
+
+static int crosses(h, left, right)
+ register int h;
+ register pel *left,*right;
+{
+ for (; h > 0; h--)
+ if (*left++ > *right++)
+ break;
+ return(h);
+}
+/*
+:h3.cedgemin() - Stores the Mininum of an Edge and an X Value
+*/
+
+static int cedgemin(h, e1, x)
+ register int h;
+ register pel *e1;
+ register pel x;
+{
+ for (; --h >= 0; e1++)
+ if (*e1 > x)
+ *e1 = x;
+ return(0);
+
+}
+/*
+:h3.cedgemax() - Stores the Maximum of an Edge and an X Value
+*/
+
+static int cedgemax(h, e1, x)
+ register int h;
+ register pel *e1;
+ register pel x;
+{
+ for (; --h >= 0; e1++)
+ if (*e1 < x)
+ *e1 = x;
+ return(0);
+
+}
+/*
+:h3.edgemin() - Stores the Mininum of Two Edges in First Edge
+*/
+
+static int edgemin(h, e1, e2)
+ register int h;
+ register pel *e1,*e2;
+{
+ for (; --h >= 0; e1++,e2++)
+ if (*e1 > *e2)
+ *e1 = *e2;
+ return(0);
+
+}
+/*
+:h3.edgemax() - Stores the Maximum of Two Edges in First Edge
+*/
+
+static int edgemax(h, e1, e2)
+ register int h;
+ register pel *e1,*e2;
+{
+ for (; --h >= 0; e1++,e2++)
+ if (*e1 < *e2)
+ *e1 = *e2;
+ return(0);
+
+}
+/*
+:h3 id=discard.discard() - Discard All Edges Between Two Edges
+
+At first glance it would seem that we could discard an edgelist
+structure merely by unlinking it from the list and freeing it. You are
+wrong, region-breath! For performance, the X values associated with an
+edge are allocated contiguously with it. So, we free the X values when
+we free a structure. However, once an edge has been split, we are no
+longer sure which control block actually is part of the memory block
+that contains the edges. Rather than trying to decide, we play it safe
+and never free part of a region.
+
+So, to mark a 'edgelist' structure as discarded, we move it to the end
+of the list and set ymin=ymax.
+*/
+
+static int discard(left, right)
+ register struct edgelist *left,*right; /* all edges between here exclusive */
+ /* should be discarded */
+{
+ register struct edgelist *beg,*end,*p;
+
+ IfTrace2((RegionDebug > 0),"discard: l=%p, r=%p\n", left, right);
+
+ beg = left->link;
+ if (beg == right)
+ return(0);
+
+ for (p = beg; p != right; p = p->link) {
+ if (p->link == NULL && right != NULL)
+ abort("discard(): ran off end", 38);
+ IfTrace1((RegionDebug > 0),"discarding %p\n", p);
+ p->ymin = p->ymax = 32767;
+ end = p;
+ }
+ /*
+ * now put the chain beg/end at the end of right, if it is not
+ * already there:
+ */
+ if (right != NULL) {
+ left->link = right;
+ while (right->link != NULL)
+ right = right->link;
+ right->link = beg;
+ }
+ end->link = NULL;
+ return(0);
+
+}
+
+/*
+:h2.Changing the Representation of Regions
+
+For convenience and/or performance, we sometimes like to change the way
+regions are represented. This does not change the object itself, just
+the representation, so these transformations can be made on a permanent
+region.
+
+*/
+
+void MoveEdges(R, dx, dy)
+ register struct region *R; /* region to modify */
+ register fractpel dx,dy; /* delta X and Y to move edge list by */
+{
+ register struct edgelist *edge; /* for looping through edges */
+
+ R->origin.x += dx;
+ R->origin.y += dy;
+ R->ending.x += dx;
+ R->ending.y += dy;
+ if (R->thresholded != NULL) {
+ R->thresholded->origin.x -= dx;
+ R->thresholded->origin.y -= dy;
+ }
+/*
+From now on we will deal with dx and dy as integer pel values:
+*/
+ dx = NEARESTPEL(dx);
+ dy = NEARESTPEL(dy);
+ if (dx == 0 && dy == 0)
+ return;
+
+ R->xmin += dx;
+ R->xmax += dx;
+ R->ymin += dy;
+ R->ymax += dy;
+
+ for (edge = R->anchor; VALIDEDGE(edge); edge = edge->link) {
+ edge->ymin += dy;
+ edge->ymax += dy;
+ if (dx != 0) {
+ register int h; /* loop index; height of edge */
+ register pel *Xp; /* loop pointer to X values */
+
+ edge->xmin += dx;
+ edge->xmax += dx;
+ for (Xp = edge->xvalues, h = edge->ymax - edge->ymin;
+ --h >= 0; )
+ *Xp++ += dx;
+ }
+ }
+}
+
+/*
+:h3.UnJumble() - Sort a Region Top to Bottom
+
+It is an open question whether it pays in general to do this.
+*/
+
+void UnJumble(region)
+ struct region *region; /* region to sort */
+{
+ register struct edgelist *anchor; /* new lists built here */
+ register struct edgelist *edge; /* edge pointer for loop */
+ register struct edgelist *next; /* ditto */
+
+ anchor = NULL;
+
+ for (edge=region->anchor; VALIDEDGE(edge); edge=next) {
+ if (edge->link == NULL)
+ abort("UnJumble: unpaired edge?", 39);
+ next = edge->link->link;
+ edge->link->link = NULL;
+ anchor = SortSwath(anchor, edge, t1_SwathUnion);
+ }
+
+ if (edge != NULL)
+ vertjoin(anchor, edge);
+
+ region->anchor = anchor;
+ region->flag &= ~ISJUMBLED(ON);
+}
+
+/*
+*/
+
+#undef NEED_OPTIMZEREGION
+#ifdef NEED_OPTIMZEREGION
+static int OptimizeRegion(R)
+ struct region *R; /* region to optimize */
+{
+ register pel *xP; /* pel pointer for inner loop */
+ register int x; /* holds X value */
+ register int xmin,xmax; /* holds X range */
+ register int h; /* loop counter */
+ register struct edgelist *e; /* edgelist pointer for loop */
+
+ R->flag |= ISRECTANGULAR(ON);
+
+ for (e = R->anchor; VALIDEDGE(e); e=e->link) {
+ xmin = MAXPEL;
+ xmax = MINPEL;
+ for (h = e->ymax - e->ymin, xP = e->xvalues; --h >= 0;) {
+ x = *xP++;
+ if (x < xmin) xmin = x;
+ if (x > xmax) xmax = x;
+ }
+ if (xmin != xmax || (xmin != R->xmin && xmax != R->xmax))
+ R->flag &= ~ISRECTANGULAR(ON);
+ if (xmin < e->xmin || xmax > e->xmax)
+ abort("Tighten: existing edge bound was bad", 40);
+ if (xmin < R->xmin || xmax > R->xmax)
+ abort("Tighten: existing region bound was bad", 41);
+ e->xmin = xmin;
+ e->xmax = xmax;
+ }
+ R->flag |= ISOPTIMIZED(ON);
+ return(0);
+
+}
+
+#endif /* This function is not used */
+
+/*
+:h2.Miscelaneous Routines
+
+:h3.MoreWorkArea() - Allocate New Space for "edge"
+
+Our strategy is to temporarily allocate an array to hold this
+unexpectedly large edge. ChangeDirection frees this array any time
+it gets a shorter 'dy'.
+*/
+
+/*ARGSUSED*/
+void MoreWorkArea(R, x1, y1, x2, y2)
+ struct region *R; /* region we are generating */
+ fractpel x1,y1; /* starting point of line */
+ fractpel x2,y2; /* ending point of line */
+{
+ register int idy; /* integer dy of line */
+
+ idy = NEARESTPEL(y1) - NEARESTPEL(y2);
+ if (idy < 0) idy = - idy;
+
+ /*
+ * we must add one to the delta for the number of run ends we
+ * need to store:
+ */
+ if (++idy > currentsize) {
+ IfTrace1((RegionDebug > 0),"Allocating edge of %d pels\n", idy);
+ if (currentworkarea != workedge)
+ NonObjectFree(currentworkarea);
+ currentworkarea = (pel *)Allocate(0, NULL, idy * sizeof(pel));
+ currentsize = idy;
+ }
+ ChangeDirection(CD_CONTINUE, R, x1, y1, y2 - y1, x2, y2);
+}
+
+/*
+:h3.BoxClip() - Clip a Region to a Rectangle
+
+BoxClip also duplicates the region if it is permanent. Note the
+clipping box is specified in REGION coordinates, that is, in
+coordinates relative to the region (0,0) point
+*/
+
+struct region *BoxClip(R, xmin, ymin, xmax, ymax)
+ register struct region *R; /* region to clip */
+ register pel xmin,ymin; /* upper left hand corner of rectangle */
+ register pel xmax,ymax; /* lower right hand corner */
+{
+ struct edgelist anchor; /* pretend edgelist to facilitate discards */
+ register struct edgelist *e,*laste;
+
+ IfTrace1((OffPageDebug),"BoxClip of %p:\n", R);
+
+ R = UniqueRegion(R);
+
+ if (xmin > R->xmin) {
+ IfTrace2((OffPageDebug),"BoxClip: left clip old %d new %d\n",
+ (LONG) R->xmin, (LONG) xmin);
+ R->xmin = xmin;
+ }
+ if (xmax < R->xmax) {
+ IfTrace2((OffPageDebug),"BoxClip: right clip old %d new %d\n",
+ (LONG) R->xmax, (LONG) xmax);
+ R->xmax = xmax;
+ }
+
+ if (ymin > R->ymin) {
+ IfTrace2((OffPageDebug),"BoxClip: top clip old %d new %d\n",
+ (LONG) R->ymin, (LONG) ymin);
+ R->ymin = ymin;
+ }
+ if (ymax < R->ymax) {
+ IfTrace2((OffPageDebug),"BoxClip: bottom clip old %d new %d\n",
+ (LONG) R->ymax, (LONG) ymax);
+ R->ymax = ymax;
+ }
+
+
+ laste = &anchor;
+ anchor.link = R->anchor;
+
+ for (e = R->anchor; VALIDEDGE(e); e = e->link) {
+ if (TOP(e) < ymin) {
+ e->xvalues += ymin - e->ymin;
+ e->ymin = ymin;
+ }
+ if (BOTTOM(e) > ymax)
+ e->ymax = ymax;
+ if (TOP(e) >= BOTTOM(e)) {
+ discard(laste, e->link->link);
+ e = laste;
+ continue;
+ }
+ if (e->xmin < xmin) {
+ cedgemax(BOTTOM(e) - TOP(e), e->xvalues, xmin);
+ e->xmin = xmin;
+ e->xmax = TYPE1_MAX(e->xmax, xmin);
+ }
+ if (e->xmax > xmax) {
+ cedgemin(BOTTOM(e) - TOP(e), e->xvalues, xmax);
+ e->xmin = TYPE1_MIN(e->xmin, xmax);
+ e->xmax = xmax;
+ }
+ laste = e;
+ }
+
+ R->anchor = anchor.link;
+
+ return(R);
+}
+
+#ifdef notdef
+/*
+:h3.CoerceRegion() - Force a TextPath Structure to Become a Region
+
+We also save the newly created region in the textpath structure, if the
+structure was permanent. Then we don't have to do this again. Why not
+save it all the time? Well, we certainly could, but I suspect it
+wouldn't pay. We would have to make this region permanent (because we
+couldn't have it be consumed) and this would probably require
+unnecessary CopyRegions in most cases.
+*/
+
+struct region *CoerceRegion(tp)
+ register struct textpath *tp; /* input TEXTTYPE */
+{
+ struct segment *path; /* temporary character path */
+ struct region *R; /* returned region */
+
+
+ R = Interior(path, EVENODDRULE);
+ return(R);
+}
+#endif
+
+/*
+:h3.RegionBounds() - Returns Bounding Box of a Region
+*/
+
+struct segment *RegionBounds(R)
+ register struct region *R;
+{
+
+ register struct segment *path; /* returned path */
+
+ path = BoxPath(IDENTITY, R->ymax - R->ymin, R->xmax - R->xmin);
+ path = Join(PathSegment(MOVETYPE, R->origin.x + TOFRACTPEL(R->xmin),
+ R->origin.y + TOFRACTPEL(R->ymin) ),
+ path);
+ return(path);
+}
+
+/*
+:h2.Formatting/Dump Routines for Debug
+
+:h3.DumpArea() - Display a Region
+*/
+void DumpArea(area)
+ register struct region *area;
+{
+ IfTrace1(TRUE,"Dumping area %p,", area);
+ IfTrace4(TRUE," X %d:%d Y %d:%d;", (LONG) area->xmin,
+ (LONG) area->xmax, (LONG) area->ymin,(LONG) area->ymax);
+ IfTrace4(TRUE," origin=(%d,%d), ending=(%d,%d)\n",
+ area->origin.x, area->origin.y, area->ending.x, area->ending.y);
+ DumpEdges(area->anchor);
+}
+
+#define INSWATH(p, y0, y1) (p != NULL && p->ymin == y0 && p->ymax == y1)
+/*
+:h3.DumpEdges() - Display Run End Lists (Edge Lists)
+*/
+
+static pel RegionDebugYMin = MINPEL;
+static pel RegionDebugYMax = MAXPEL;
+
+void DumpEdges(edges)
+ register struct edgelist *edges;
+{
+ register struct edgelist *p,*p2;
+ register pel ymin = MINPEL;
+ register pel ymax = MINPEL;
+ register int y;
+
+ if (edges == NULL) {
+ IfTrace0(TRUE," NULL area.\n");
+ return;
+ }
+ if (RegionDebug <= 1) {
+ for (p=edges; p != NULL; p = p->link) {
+ edgecheck(p, ymin, ymax);
+ ymin = p->ymin; ymax = p->ymax;
+ IfTrace3(TRUE,". at %p type=%d flag=%x",
+ p, (LONG) p->type,(LONG) p->flag);
+ IfTrace4(TRUE," bounding box HxW is %dx%d at (%d,%d)\n",
+ (LONG) ymax - ymin, (LONG) p->xmax - p->xmin,
+ (LONG) p->xmin, (LONG) ymin);
+ }
+ }
+ else {
+
+ for (p2=edges; p2 != NULL; ) {
+
+ edgecheck(p2, ymin, ymax);
+ ymin = p2->ymin;
+ ymax = p2->ymax;
+
+ if (RegionDebug > 3 || (ymax > RegionDebugYMin
+ && ymin < RegionDebugYMax)) {
+ IfTrace2 (TRUE,". Swath from %d to %d:\n",
+ ymin, ymax);
+ for (p=p2; INSWATH(p,ymin,ymax); p = p->link) {
+ IfTrace4(TRUE,". . at %p[%x] range %d:%d, ",
+ p, (LONG) p->flag,
+ (LONG) p->xmin, (LONG)p->xmax);
+ IfTrace1(TRUE, "subpath=%p,\n", p->subpath);
+ }
+ }
+ for (y=TYPE1_MAX(ymin,RegionDebugYMin); y < TYPE1_MIN(ymax, RegionDebugYMax); y++) {
+ IfTrace1(TRUE,". . . Y[%5d] ", (LONG) y);
+ for (p=p2; INSWATH(p,ymin,ymax); p = p->link)
+ IfTrace1(TRUE,"%5d ",
+ (LONG) p->xvalues[y - ymin]);
+ IfTrace0(TRUE,"\n");
+ }
+ while (INSWATH(p2, ymin, ymax))
+ p2 = p2->link;
+ }
+ }
+}
+
+/*
+:h3.edgecheck() - For Debug, Verify that an Edge Obeys the Rules
+*/
+
+/*ARGSUSED*/
+static int edgecheck(edge, oldmin, oldmax)
+ struct edgelist *edge;
+ int oldmin,oldmax;
+{
+ if (edge->type != EDGETYPE)
+ abort("EDGE ERROR: non EDGETYPE in list", 42);
+/*
+The following check is not valid if the region is jumbled so I took it
+out:
+*/
+/* if (edge->ymin < oldmax && edge->ymin != oldmin)
+ abort("EDGE ERROR: overlapping swaths", 43); */
+ return(0);
+
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.h
new file mode 100644
index 00000000000..304be069c46
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/regions.h
@@ -0,0 +1,208 @@
+/* $XConsortium: regions.h,v 1.2 91/10/10 11:19:06 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+
+#define Interior(p,rule) t1_Interior(p,rule)
+#define Union(a1,a2) t1_Union(a1,a2)
+#define Intersect(a1,a2) t1_Intersect(a1,a2)
+#define Complement(area) t1_Complement(area)
+#define Overlap(a1,a2) t1_OverLap(a1,a2)
+
+struct region *t1_Interior(struct segment *,int); /* returns the interior of a closed path */
+struct region *t1_Union(); /* set union of paths or regions */
+struct region *t1_Intersect(); /* set intersection of regions */
+struct region *t1_Complement(); /* complement of a region */
+int t1_Overlap(); /* returns a Boolean; TRUE if regions overlap */
+
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ChangeDirection(type,R,x,y,dy,x2,y2) t1_ChangeDirection(type,R,x,y,dy,x2,y2)
+
+void t1_ChangeDirection(); /* called when we change direction in Y */
+#define CD_FIRST -1 /* enumeration of ChangeDirection type */
+#define CD_CONTINUE 0 /* enumeration of ChangeDirection type */
+#define CD_LAST 1 /* enumeration of ChangeDirection type */
+
+#define MoreWorkArea(R,x1,y1,x2,y2) t1_MoreWorkArea(R,x1,y1,x2,y2)
+#define KillRegion(area) t1_KillRegion(area)
+#define CopyRegion(area) t1_CopyRegion(area)
+#define BoxClip(R,xmin,ymin,xmax,ymax) t1_BoxClip(R,xmin,ymin,xmax,ymax)
+#define SortSwath(a,p,f) t1_SortSwath(a,p,f)
+#define SwathUnion(b,e) t1_SwathUnion(b,e)
+#define RegionBounds(r) t1_RegionBounds(r)
+#define CoerceRegion(p) t1_CoerceRegion(p)
+#define MoveEdges(R,dx,dy) t1_MoveEdges(R,dx,dy)
+#define UnJumble(R) t1_UnJumble(R)
+
+void t1_MoreWorkArea(); /* get longer edge list for stepping */
+struct region *t1_CopyRegion(); /* duplicate a region */
+void t1_KillRegion(); /* destroy a region */
+struct region *t1_BoxClip(); /* clip a region to a rectangle */
+struct edgelist *t1_SortSwath(); /* sort edges onto growing edge list */
+struct edgelist *t1_SwathUnion(); /* 'union' two edges into a swath */
+struct segment *t1_RegionBounds(); /* returns bounding box of a region */
+struct region *t1_CoerceRegion(); /* force text to become a true region */
+void t1_MoveEdges(); /* moves the edge values in a region */
+void t1_UnJumble(); /* sort the edges and reset the jumbled flag */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define GOING_TO(R, x1, y1, x2, y2, dy) { \
+ if (dy < 0) { \
+ if (R->lastdy >= 0) \
+ ChangeDirection(CD_CONTINUE, R, x1, y1, dy, x2, y2); \
+ if (y2 < R->edgeYstop) \
+ MoreWorkArea(R, x1, y1, x2, y2); \
+ } \
+ else if (dy > 0) { \
+ if (R->lastdy <= 0) \
+ ChangeDirection(CD_CONTINUE, R, x1, y1, dy, x2, y2); \
+ if (y2 > R->edgeYstop) \
+ MoreWorkArea(R, x1, y1, x2, y2); \
+ } \
+ else /* dy == 0 */ ChangeDirection(CD_CONTINUE, R, x1, y1, dy, x2, y2); \
+ if (x2 < R->edgexmin) R->edgexmin = x2; \
+ else if (x2 > R->edgexmax) R->edgexmax = x2; \
+}
+
+
+#define MINPEL (-1<<(8*sizeof(pel)-1)) /* smallest value fitting in a pel */
+#define MAXPEL ((1<<(8*sizeof(pel)-1))-1)/* largest value fitting in a pel */
+
+/*
+The "Unique"-type macro is different (unique?) for regions, because some
+regions structures are shared among several objects, and might have
+to be made unique for that reason (i.e., references > 1).
+*/
+
+#define ConsumeRegion(R) MAKECONSUME(R,KillRegion(R))
+#define UniqueRegion(R) MAKEUNIQUE(R,CopyRegion(R))
+
+
+/*END SHARED*/
+/*SHARED*/
+
+struct region {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = REGIONTYPE */
+ struct fractpoint origin; /* beginning handle: X,Y origin of region */
+ struct fractpoint ending; /* ending handle: X,Y change after painting region */
+ pel xmin,ymin; /* minimum X,Y of region */
+ pel xmax,ymax; /* mat1_mum X,Y of region */
+ struct edgelist *anchor; /* list of edges that bound the region */
+ struct picture *thresholded; /* region defined by thresholded picture*/
+/*
+Note that the ending handle and the bounding box values are stored
+relative to 'origin'.
+
+The above elements describe a region. The following elements are
+scratchpad areas used while the region is being built:
+*/
+ fractpel lastdy; /* direction of last segment */
+ fractpel firstx,firsty; /* starting point of current edge */
+ fractpel edgexmin,edgexmax; /* x extent of current edge */
+ struct edgelist *lastedge,*firstedge; /* last and first edges in subpath */
+ pel *edge; /* pointer to array of X values for edge */
+ fractpel edgeYstop; /* Y value where 'edges' array ends */
+ int (*newedgefcn)(); /* function to use when building a new edge */
+ struct strokeinfo *strokeinfo; /* scratchpad info during stroking only */
+} ;
+/*
+The ISCOMPLEMENT flag indicates the region is reversed--it is the
+"outside" of the nominal region.
+*/
+#define ISCOMPLEMENT(flag) ((flag)&0x80)
+/*
+The ISJUMBLED flag indicates the region is not sorted top-to-bottom.
+*/
+#define ISJUMBLED(flag) ((flag)&0x40)
+/*
+The ISINFINITE flag allows a quick check for an INFINITE region, which
+is frequently intersected.
+*/
+#define ISINFINITE(flag) ((flag)&0x20)
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ISRECTANGULAR(flag) ((flag)&0x08)
+
+/*END SHARED*/
+/*SHARED*/
+
+#define EmptyRegion t1_EmptyRegion
+
+/*END SHARED*/
+/*SHARED*/
+
+struct edgelist {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = EDGETYPE */
+ struct edgelist *link; /* pointer to next in linked list */
+ struct edgelist *subpath; /* informational link for "same subpath" */
+ pel xmin,xmax; /* range of edge in X */
+ pel ymin,ymax; /* range of edge in Y */
+ pel *xvalues; /* pointer to ymax-ymin X values */
+
+ fractpel fpx1; /* Added by RMz, author of t1lib, 2002-08-15. */
+ fractpel fpy1; /* This produces a little memory overhead, but */
+ fractpel fpx2; /* gives the opportunity to take more */
+ fractpel fpy2; /* intelligent decisions in ApplyContinuity(). */
+} ;
+/*
+The end of the list is marked by either "link" being NULL, or by
+ymin == ymax. See :hdref refid=discard.. We define the VALIDEDGE
+predicate to test for the opposite of these conditions:
+*/
+
+#define VALIDEDGE(p) ((p)!=NULL&&(p)->ymin<(p)->ymax)
+
+/*END SHARED*/
+/*SHARED*/
+
+#define ISDOWN(f) ((f)&0x80)
+
+#define ISAMBIGUOUS(f) ((f)&0x40)
+
+/*END SHARED*/
+/*SHARED*/
+
+/*
+Interior() rule enumerations:
+*/
+#define WINDINGRULE -2
+#define EVENODDRULE -3
+
+#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/scanfont.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/scanfont.c
new file mode 100644
index 00000000000..c92b1cb134b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/scanfont.c
@@ -0,0 +1,1381 @@
+/* $XConsortium: scanfont.c,v 1.9 92/07/07 17:14:56 gildea Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
+
+#include <string.h>
+#include <stdlib.h>
+#include "t1stdio.h"
+#include "util.h"
+#include "token.h"
+#include "fontfcn.h"
+#include "blues.h"
+
+#include "../t1lib/t1misc.h"
+
+/* #define DEBUG_SCANFONT */
+
+
+static int rc;
+static boolean InPrivateDict;
+static boolean WantFontInfo;
+static boolean TwoSubrs;
+static psobj inputFile;
+static psobj filterFile;
+static psobj *inputP;
+
+
+extern int T1Getc(F_FILE * );
+extern int T1Ungetc( int,F_FILE *);
+extern int SearchDictName( psdict *dictP, psobj *keyP);
+extern void T1io_setblocklen( long len);
+
+
+/* functions from util.c */
+extern void objFormatInteger(psobj *objP, int value);
+extern void objFormatReal(psobj *objP, float value);
+extern void objFormatBoolean(psobj *objP, boolean value);
+extern void objFormatEncoding( psobj *objP, int length, psobj *valueP);
+extern void objFormatArray( psobj *objP, int length, psobj *valueP);
+extern void objFormatString( psobj *objP, int length, char *valueP);
+extern void objFormatName( psobj *objP, int length, char *valueP);
+extern void objFormatFile( psobj *objP, FILE *valueP);
+
+
+/**********************************************************************/
+/* Init_BuiltInEncoding() */
+/* */
+/* Initializes the StandardEncoding. */
+/* */
+/**********************************************************************/
+typedef struct /* Builtin Standard Encoding */
+{
+ int index;
+ char *name;
+} EncodingTable;
+
+
+char not_def[]=".notdef";
+
+
+static EncodingTable StdEnc[] = {
+ {040 , "space"},
+ {041 , "exclam"},
+ {042 , "quotedbl"},
+ {043 , "numbersign"},
+ {044 , "dollar"},
+ {045 , "percent"},
+ {046 , "ampersand"},
+ {047 , "quoteright"},
+ {050 , "parenleft"},
+ {051 , "parenright"},
+ {052 , "asterisk"},
+ {053 , "plus"},
+ {054 , "comma"},
+ {055 , "hyphen"},
+ {056 , "period"},
+ {057 , "slash"},
+ {060 , "zero"},
+ {061 , "one"},
+ {062 , "two"},
+ {063 , "three"},
+ {064 , "four"},
+ {065 , "five"},
+ {066 , "six"},
+ {067 , "seven"},
+ {070 , "eight"},
+ {071 , "nine"},
+ {072 , "colon"},
+ {073 , "semicolon"},
+ {074 , "less"},
+ {075 , "equal"},
+ {076 , "greater"},
+ {077 , "question"},
+ {0100 , "at"},
+ {0101 , "A"},
+ {0102 , "B"},
+ {0103 , "C"},
+ {0104 , "D"},
+ {0105 , "E"},
+ {0106 , "F"},
+ {0107 , "G"},
+ {0110 , "H"},
+ {0111 , "I"},
+ {0112 , "J"},
+ {0113 , "K"},
+ {0114 , "L"},
+ {0115 , "M"},
+ {0116 , "N"},
+ {0117 , "O"},
+ {0120 , "P"},
+ {0121 , "Q"},
+ {0122 , "R"},
+ {0123 , "S"},
+ {0124 , "T"},
+ {0125 , "U"},
+ {0126 , "V"},
+ {0127 , "W"},
+ {0130 , "X"},
+ {0131 , "Y"},
+ {0132 , "Z"},
+ {0133 , "bracketleft"},
+ {0134 , "backslash"},
+ {0135 , "bracketright"},
+ {0136 , "asciicircum"},
+ {0137 , "underscore"},
+ {0140 , "quoteleft"},
+ {0141 , "a"},
+ {0142 , "b"},
+ {0143 , "c"},
+ {0144 , "d"},
+ {0145 , "e"},
+ {0146 , "f"},
+ {0147 , "g"},
+ {0150 , "h"},
+ {0151 , "i"},
+ {0152 , "j"},
+ {0153 , "k"},
+ {0154 , "l"},
+ {0155 , "m"},
+ {0156 , "n"},
+ {0157 , "o"},
+ {0160 , "p"},
+ {0161 , "q"},
+ {0162 , "r"},
+ {0163 , "s"},
+ {0164 , "t"},
+ {0165 , "u"},
+ {0166 , "v"},
+ {0167 , "w"},
+ {0170 , "x"},
+ {0171 , "y"},
+ {0172 , "z"},
+ {0173 , "braceleft"},
+ {0174 , "bar"},
+ {0175 , "braceright"},
+ {0176 , "asciitilde"},
+ {0241 , "exclamdown"},
+ {0242 , "cent"},
+ {0243 , "sterling"},
+ {0244 , "fraction"},
+ {0245 , "yen"},
+ {0246 , "florin"},
+ {0247 , "section"},
+ {0250 , "currency"},
+ {0251 , "quotesingle"},
+ {0252 , "quotedblleft"},
+ {0253 , "guillemotleft"},
+ {0254 , "guilsinglleft"},
+ {0255 , "guilsinglright"},
+ {0256 , "fi"},
+ {0257 , "fl"},
+ {0261 , "endash"},
+ {0262 , "dagger"},
+ {0263 , "daggerdbl"},
+ {0264 , "periodcentered"},
+ {0266 , "paragraph"},
+ {0267 , "bullet"},
+ {0270 , "quotesinglbase"},
+ {0271 , "quotedblbase"},
+ {0272 , "quotedblright"},
+ {0273 , "guillemotright"},
+ {0274 , "ellipsis"},
+ {0275 , "perthousand"},
+ {0277 , "questiondown"},
+ {0301 , "grave"},
+ {0302 , "acute"},
+ {0303 , "circumflex"},
+ {0304 , "tilde"},
+ {0305 , "macron"},
+ {0306 , "breve"},
+ {0307 , "dotaccent"},
+ {0310 , "dieresis"},
+ {0312 , "ring"},
+ {0313 , "cedilla"},
+ {0315 , "hungarumlaut"},
+ {0316 , "ogonek"},
+ {0317 , "caron"},
+ {0320 , "emdash"},
+ {0341 , "AE"},
+ {0343 , "ordfeminine"},
+ {0350 , "Lslash"},
+ {0351 , "Oslash"},
+ {0352 , "OE"},
+ {0353 , "ordmasculine"},
+ {0361 , "ae"},
+ {0365 , "dotlessi"},
+ {0370 , "lslash"},
+ {0371 , "oslash"},
+ {0372 , "oe"},
+ {0373 , "germandbls"},
+ { 0, 0 }
+};
+
+
+/* Encodings changed from static to global since they must be accessible
+ by T1_LoadFont() when reallocating memory. */
+psobj *StdEncArrayP = NULL;
+
+
+static psobj *MakeEncodingArrayP(encodingTable)
+ EncodingTable *encodingTable;
+{
+ int i;
+ psobj *encodingArrayP;
+
+ encodingArrayP = (psobj *)malloc(256*(sizeof(psobj)));
+ if (!encodingArrayP)
+ return NULL;
+
+ /* initialize everything to .notdef */
+ for (i=0; i<256;i++)
+ objFormatName(&(encodingArrayP[i]),7, not_def);
+
+ for (i=0; encodingTable[i].name; i++)
+ {
+ objFormatName(&(encodingArrayP[encodingTable[i].index]),
+ strlen(encodingTable[i].name),
+ encodingTable[i].name);
+ }
+
+ return(encodingArrayP);
+}
+
+boolean Init_BuiltInEncoding()
+{
+ if ( StdEncArrayP != NULL) {
+ /* Note: We should not run into this case because multiple
+ initialization should be caught by T1_InitLib(). */
+ return FALSE;
+ }
+
+ StdEncArrayP = MakeEncodingArrayP(StdEnc);
+ if (StdEncArrayP==NULL)
+ return( FALSE);
+ else
+ return( TRUE);
+}
+
+/********************************************************************/
+/***================================================================***/
+static int getNextValue(valueType)
+ int valueType;
+{
+ scan_token(inputP);
+ if (tokenType != valueType) {
+ return(SCAN_ERROR);
+ }
+ return(SCAN_OK);
+
+}
+/***================================================================***/
+/* This routine will set the global rc if there is an error */
+/***================================================================***/
+static int getInt()
+{
+ scan_token(inputP);
+ if (tokenType != TOKEN_INTEGER) {
+ rc = SCAN_ERROR;
+ return(0);
+ }
+ else {
+ return( tokenValue.integer);
+ }
+
+}
+/***================================================================***/
+/*
+ * See Sec 10.3 of ``Adobe Type 1 Font Format'' v1.1,
+ * for parsing Encoding.
+ */
+static int getEncoding(arrayP)
+ psobj *arrayP;
+{
+
+ scan_token(inputP);
+ if ((tokenType == TOKEN_NAME) &&
+ ((tokenLength==16) && (!strncmp(tokenStartP,"StandardEncoding",16)))
+ )
+ {
+ /* Adobe Standard Encoding */
+
+ if (tokenLength == 16)
+ arrayP->data.valueP = (char *) StdEncArrayP;
+ else
+ return(SCAN_ERROR);
+
+
+ arrayP->len = 256;
+ return(SCAN_OK);
+ }
+ else if ( (tokenType == TOKEN_LEFT_BRACE) ||
+ (tokenType == TOKEN_LEFT_BRACKET) )
+ {
+ /* Array of literal names */
+
+ psobj *objP;
+ int i;
+
+ objP = (psobj *)vm_alloc(256*(sizeof(psobj)));
+ if (!(objP)) return(SCAN_OUT_OF_MEMORY);
+
+ arrayP->data.valueP = (char *) objP;
+ arrayP->len = 256;
+
+ for (i=0; i<256; i++, objP++)
+ {
+ scan_token(inputP);
+
+ if (tokenType != TOKEN_LITERAL_NAME)
+ return(SCAN_ERROR);
+
+ if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
+ objFormatName(objP,tokenLength,tokenStartP);
+ }
+
+ scan_token(inputP);
+ if ( (tokenType == TOKEN_RIGHT_BRACE) ||
+ (tokenType == TOKEN_RIGHT_BRACKET) )
+ return(SCAN_OK);
+ }
+ else
+ {
+ /* Must be sequences of ``dup <index> <charactername> put" */
+
+ psobj *objP;
+ int i;
+
+ objP = (psobj *)vm_alloc(256*(sizeof(psobj)));
+ if (!(objP)) return(SCAN_OUT_OF_MEMORY);
+
+ arrayP->data.valueP = (char *) objP;
+ arrayP->len = 256;
+
+ for (i=0; i<256; i++)
+ objFormatName(objP + i, 7, not_def);
+
+ while (TRUE)
+ {
+ scan_token(inputP);
+
+ switch (tokenType)
+ {
+ case TOKEN_NAME:
+ if (tokenLength == 3)
+ {
+ if (strncmp(tokenStartP,"dup",3) == 0)
+ {
+ /* get <index> */
+ scan_token(inputP);
+ if (tokenType != TOKEN_INTEGER ||
+ tokenValue.integer < 0 ||
+ tokenValue.integer > 255)
+ return (SCAN_ERROR);
+ i = tokenValue.integer;
+
+ /* get <characer_name> */
+ scan_token(inputP);
+ if (tokenType != TOKEN_LITERAL_NAME)
+ return(SCAN_ERROR);
+
+ if (!(vm_alloc(tokenLength)) )
+ return(SCAN_OUT_OF_MEMORY);
+ objFormatName(objP + i,tokenLength,tokenStartP);
+
+ /* get "put" */
+ scan_token(inputP);
+ if (tokenType != TOKEN_NAME)
+ return(SCAN_ERROR);
+ }
+ else if (strncmp(tokenStartP,"def",3) == 0)
+ return (SCAN_OK);
+ }
+ break;
+ case TOKEN_EOF:
+ case TOKEN_NONE:
+ case TOKEN_INVALID:
+ return (SCAN_ERROR);
+ }
+ }
+ }
+
+ return (SCAN_ERROR);
+}
+/***================================================================***/
+static int getArray(arrayP)
+ psobj *arrayP;
+{
+ int N; /* count the items in the array */
+ psobj *objP;
+
+
+ scan_token(inputP);
+ if ( (tokenType != TOKEN_LEFT_BRACE) &&
+ (tokenType != TOKEN_LEFT_BRACKET) ) {
+ return(SCAN_ERROR);
+ }
+ /* format the array in memory, save pointer to the beginning */
+ arrayP->data.valueP = tokenStartP;
+ /* loop, picking up next object, until right BRACE or BRACKET */
+ N = 0;
+ do {
+ scan_token(inputP);
+ if ( (tokenType == TOKEN_RIGHT_BRACE) ||
+ (tokenType == TOKEN_RIGHT_BRACKET) ) {
+ /* save then number of items in the array */
+ arrayP->len = N;
+ return(SCAN_OK);
+ }
+ /* allocate the space for the object */
+ objP = (psobj *)vm_alloc(sizeof(psobj));
+ if (!(objP)) return(SCAN_OUT_OF_MEMORY);
+
+ /* array is an array of numbers, (real or integer) */
+ if (tokenType == TOKEN_REAL) {
+ objFormatReal(objP, tokenValue.real);
+ }
+ else
+ if (tokenType == TOKEN_INTEGER) {
+ objFormatInteger(objP, tokenValue.integer);
+ }
+ else return(SCAN_ERROR);
+ N++;
+ } while ( 1>0 );
+ /* NOTREACHED*/
+}
+/***================================================================***/
+/* is not needed */
+/*
+ static int getName(nameP)
+ char *nameP;
+ {
+ do {
+ scan_token(inputP);
+ if (tokenType <= TOKEN_NONE) {
+ if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
+ return(SCAN_ERROR);
+ }
+ } while ((tokenType != TOKEN_NAME) ||
+ (0 != strncmp(tokenStartP,nameP,strlen(nameP))) );
+
+ return(SCAN_OK);
+ }
+*/
+
+/***================================================================***/
+static int getNbytes(N)
+ int N;
+{
+ int I;
+
+ if (N > vm_free_bytes()) {
+ if (!vm_init()) return(SCAN_OUT_OF_MEMORY);
+ }
+ tokenStartP = vm_next_byte();
+ I = fread(tokenStartP,1,N,inputP->data.fileP);
+ if ( I != N ) return(SCAN_FILE_EOF);
+ return(SCAN_OK);
+}
+
+/***================================================================***/
+/* getLiteralName(nameObjP) */
+/* scan for next literal. */
+/* if we encounter the name 'end' then terminate and say ok. */
+/* It means that the CharStrings does not have as many characters */
+/* as the dictionary said it would and that is ok. */
+/***================================================================***/
+static int getLiteralName(nameObjP)
+ psobj *nameObjP;
+{
+ do {
+ scan_token(inputP);
+ if (tokenType <= TOKEN_NONE) {
+ if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
+ return(SCAN_ERROR);
+ }
+ if (tokenType == TOKEN_NAME) {
+ if (0 == strncmp(tokenStartP,"end",3) ) {
+ return(SCAN_END);
+ }
+ }
+ } while (tokenType != TOKEN_LITERAL_NAME) ;
+ nameObjP->len = tokenLength;
+ /* allocate all the names in the CharStrings Structure */
+ if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
+ nameObjP->data.valueP = tokenStartP;
+ /* found */
+ return(SCAN_OK);
+}
+
+/***================================================================***/
+/*
+ * BuildSubrs routine
+ */
+/***================================================================***/
+
+static int BuildSubrs(FontP)
+ psfont *FontP;
+{
+ int N; /* number of values in Subrs */
+ int I; /* index into Subrs */
+ int i; /* loop thru Subrs */
+ int J; /* length of Subrs entry */
+ psobj *arrayP;
+
+ /* next token should be a positive int */
+ /* note: rc is set by getInt. */
+ N = getInt();
+ if (rc) return(rc);
+ if (N < 0 ) return(SCAN_ERROR);
+ /* if we already have a Subrs, then skip the second one */
+ /* The second one is for hiresolution devices. */
+ if (FontP->Subrs.data.arrayP != NULL) {
+ TwoSubrs = TRUE;
+ /* process all the Subrs, but do not update anything */
+ /* can not just skip them because of the binary data */
+ for (i=0;i<N;i++) {
+ /* look for "dup" or "ND" or "|-" or (noaccess) "def". If one of
+ the latter three token appears, we are done even if still i < N-1.
+ in this case, there aren´t as much subroutines as fields in the
+ array which is allowed (Fix thanks to Derek B. Noonburg) */
+ do {
+ rc = getNextValue(TOKEN_NAME);
+ if ( rc != SCAN_OK ) return(rc);
+ if (!strncmp(tokenStartP, "ND", 2) ||
+ !strncmp(tokenStartP, "|-", 2) ||
+ !strncmp(tokenStartP, "def", 3)) {
+ return SCAN_OK;
+ }
+ } while (strncmp(tokenStartP, "dup", 3));
+ if (rc) return(rc);
+ /* get 2 integers */
+ I = getInt();
+ if (rc) return(rc);
+ J = getInt();
+ if (rc) return(rc);
+ if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR);
+ /* get the next token, it should be RD or -|, either is ok */
+ rc = getNextValue(TOKEN_NAME);
+ if ( rc != SCAN_OK ) return(rc);
+ rc = getNbytes(J);
+ if (rc) return(rc);
+ }
+ return(SCAN_OK);
+ }
+
+ arrayP = (psobj *)vm_alloc(N*sizeof(psobj));
+ if (!(arrayP) ) return(SCAN_OUT_OF_MEMORY);
+ /* explicitly resetting the array is not necessary since the pointer
+ as well as the subroutines both are located in VM and we can
+ assume that only define subroutines are referenced. */
+ FontP->Subrs.len = N;
+ FontP->Subrs.data.arrayP = arrayP;
+ /* get N values for Subrs */
+ for (i=0;i<N;i++) {
+ /* look for "dup" or "ND" or "|-" or (noaccess) "def". If one of
+ the latter three token appears, we are done even if still i < N-1.
+ in this case, there aren´t as much subroutines as fields in the
+ array which is allowed (Fix thanks to Derek B. Noonburg) */
+ do {
+ rc = getNextValue(TOKEN_NAME);
+ if ( rc != SCAN_OK ) return(rc);
+ if (!strncmp(tokenStartP, "ND", 2) ||
+ !strncmp(tokenStartP, "|-", 2) ||
+ !strncmp(tokenStartP, "def", 3)) {
+ return SCAN_OK;
+ }
+ } while (strncmp(tokenStartP, "dup", 3));
+ /* get 2 integers */
+ I = getInt(); /* index into array of Subroutines */
+ if (rc) return(rc);
+ J = getInt(); /* number of binary bytes that follow */
+ if (rc) return(rc);
+ if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR);
+ arrayP[I].len = J;
+ /* get the next token, it should be RD or -|, either is ok */
+ rc = getNextValue(TOKEN_NAME);
+ if ( rc != SCAN_OK ) return(rc);
+ rc = getNbytes(J);
+ if (rc == SCAN_OK) {
+ arrayP[I].data.valueP = tokenStartP;
+ if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY);
+ }
+ else return(rc);
+ }
+ return(SCAN_OK);
+
+}
+
+
+/***================================================================***/
+/***================================================================***/
+/*
+ * BuildCharStrings routine
+ */
+/***================================================================***/
+
+static int BuildCharStrings(FontP)
+ psfont *FontP;
+{
+ int N; /* number of values in CharStrings */
+ int i; /* loop thru Subrs */
+ int J; /* length of Subrs entry */
+ psdict *dictP;
+
+ /* next token should be a positive int */
+ N = getInt();
+ if (rc) {
+ /* check if file had TwoSubrs, hi resolution stuff is in file*/
+ if (TwoSubrs) {
+ do {
+ scan_token(inputP);
+ if (tokenType <= TOKEN_NONE) {
+ if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
+ return(SCAN_ERROR);
+ }
+ } while (tokenType != TOKEN_INTEGER);
+ N = tokenValue.integer;
+ }
+ else return(rc); /* if next token was not an Int */
+ }
+ if (N<=0) return(SCAN_ERROR);
+ /* save number of entries in the dictionary */
+
+ dictP = (psdict *)vm_alloc((N+1)*sizeof(psdict));
+ if (!(dictP)) return(SCAN_OUT_OF_MEMORY);
+ FontP->CharStringsP = dictP;
+ dictP[0].key.len = N;
+ /* get N values for CharStrings */
+ for (i=1;i<=N;i++) {
+ /* look for next literal name */
+ rc = getLiteralName(&(dictP[i].key));
+ /* If rc=SCAN_END, the end of file has been reached. This means
+ there were less than N charstrings. This is perfectly valid. */
+ if (rc) return(rc);
+ /* get 1 integer */
+ J = getInt();
+ if (rc) return(rc); /* if next token was not an Int */
+ if (J<0) return (SCAN_ERROR);
+ dictP[i].value.len = J;
+ /* get the next token, it should be RD or -|, either is ok */
+ rc = getNextValue(TOKEN_NAME);
+ if ( rc != SCAN_OK ) return(rc);
+ rc = getNbytes(J);
+ if (rc == SCAN_OK) {
+ dictP[i].value.data.valueP = tokenStartP;
+ if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY);
+ }
+ else {
+ return(rc);
+ }
+
+ }
+ return(SCAN_OK);
+
+}
+/***================================================================***/
+/***================================================================***/
+/*
+ * BuildFontInfo Dictionary
+ */
+/***================================================================***/
+static int BuildFontInfo(fontP)
+ psfont *fontP;
+{
+ psdict *dictP;
+
+ /* allocate the private dictionary */
+ dictP = (psdict *)vm_alloc(20*sizeof(psdict));
+ if (!(dictP)) return(SCAN_OUT_OF_MEMORY);
+
+ fontP->fontInfoP = dictP;
+ fontP->fontInfoP[0].key.len = 17; /* number of actual entries */
+ objFormatName(&(dictP[FONTNAME].key),8,"FontName");
+ objFormatName(&(dictP[FONTNAME].value),0,NULL);
+ objFormatName(&(dictP[PAINTTYPE].key),9,"PaintType");
+ objFormatInteger(&(dictP[PAINTTYPE].value),0);
+ objFormatName(&(dictP[FONTTYPENUM].key),8,"FontType");
+ objFormatInteger(&(dictP[FONTTYPENUM].value),0);
+ objFormatName(&(dictP[FONTMATRIX].key),10,"FontMatrix");
+ objFormatArray(&(dictP[FONTMATRIX].value),0,NULL);
+ objFormatName(&(dictP[FONTBBOX].key),8,"FontBBox");
+ objFormatArray(&(dictP[FONTBBOX].value),0,NULL);
+ objFormatName(&(dictP[ENCODING].key),8,"Encoding");
+ objFormatEncoding(&(dictP[ENCODING].value),0,NULL);
+ objFormatName(&(dictP[UNIQUEID].key),8,"UniqueID");
+ objFormatInteger(&(dictP[UNIQUEID].value),0);
+ objFormatName(&(dictP[STROKEWIDTH].key),11,"StrokeWidth");
+ objFormatReal(&(dictP[STROKEWIDTH].value),0.0);
+ objFormatName(&(dictP[VERSION].key),7,"version");
+ objFormatString(&(dictP[VERSION].value),0,NULL);
+ objFormatName(&(dictP[NOTICE].key),6,"Notice");
+ objFormatString(&(dictP[NOTICE].value),0,NULL);
+ objFormatName(&(dictP[FULLNAME].key),8,"FullName");
+ objFormatString(&(dictP[FULLNAME].value),0,NULL);
+ objFormatName(&(dictP[FAMILYNAME].key),10,"FamilyName");
+ objFormatString(&(dictP[FAMILYNAME].value),0,NULL);
+ objFormatName(&(dictP[WEIGHT].key),6,"Weight");
+ objFormatString(&(dictP[WEIGHT].value),0,NULL);
+ objFormatName(&(dictP[ITALICANGLE].key),11,"ItalicAngle");
+ objFormatReal(&(dictP[ITALICANGLE].value),0.0);
+ objFormatName(&(dictP[ISFIXEDPITCH].key),12,"isFixedPitch");
+ objFormatBoolean(&(dictP[ISFIXEDPITCH].value),FALSE);
+ objFormatName(&(dictP[UNDERLINEPOSITION].key),17,"UnderlinePosition");
+ objFormatReal(&(dictP[UNDERLINEPOSITION].value),0.0);
+ objFormatName(&(dictP[UNDERLINETHICKNESS].key),18,"UnderlineThickness");
+ objFormatReal(&(dictP[UNDERLINETHICKNESS].value),0.0);
+ return(SCAN_OK);
+}
+/***================================================================***/
+/*
+ * BuildPrivate Dictionary
+ */
+/* "LenIV" corrected to be "lenIV", otherwise fonts with some specific
+ lenIV value could not be decrypted. (RMz, Author of t1lib, 06/03/1998)*/
+/***================================================================***/
+static int BuildPrivate(fontP)
+ psfont *fontP;
+{
+ psdict *Private;
+
+ /* allocate the private dictionary */
+ Private = (psdict *)vm_alloc(20*sizeof(psdict));
+
+ if (!(Private)) return(SCAN_OUT_OF_MEMORY);
+
+ fontP->Private = Private;
+ fontP->Private[0].key.len = 16; /* number of actual entries */
+
+ objFormatName(&(Private[BLUEVALUES].key),10,"BlueValues");
+ objFormatArray(&(Private[BLUEVALUES].value),0,NULL);
+ objFormatName(&(Private[OTHERBLUES].key),10,"OtherBlues");
+ objFormatArray(&(Private[OTHERBLUES].value),0,NULL);
+ objFormatName(&(Private[FAMILYBLUES].key),11,"FamilyBlues");
+ objFormatArray(&(Private[FAMILYBLUES].value),0,NULL);
+ objFormatName(&(Private[FAMILYOTHERBLUES].key),16,"FamilyOtherBlues");
+ objFormatArray(&(Private[FAMILYOTHERBLUES].value),0,NULL);
+ objFormatName(&(Private[BLUESCALE].key),9,"BlueScale");
+ objFormatReal(&(Private[BLUESCALE].value),DEFAULTBLUESCALE);
+ objFormatName(&(Private[BLUESHIFT].key),9,"BlueShift");
+ objFormatInteger(&(Private[BLUESHIFT].value),DEFAULTBLUESHIFT);
+ objFormatName(&(Private[BLUEFUZZ].key),8,"BlueFuzz");
+ objFormatInteger(&(Private[BLUEFUZZ].value),DEFAULTBLUEFUZZ);
+ objFormatName(&(Private[STDHW].key),5,"StdHW");
+ objFormatArray(&(Private[STDHW].value),0,NULL);
+ objFormatName(&(Private[STDVW].key),5,"StdVW");
+ objFormatArray(&(Private[STDVW].value),0,NULL);
+ objFormatName(&(Private[STEMSNAPH].key),9,"StemSnapH");
+ objFormatArray(&(Private[STEMSNAPH].value),0,NULL);
+ objFormatName(&(Private[STEMSNAPV].key),9,"StemSnapV");
+ objFormatArray(&(Private[STEMSNAPV].value),0,NULL);
+ objFormatName(&(Private[FORCEBOLD].key),9,"ForceBold");
+ objFormatBoolean(&(Private[FORCEBOLD].value),DEFAULTFORCEBOLD);
+ objFormatName(&(Private[LANGUAGEGROUP].key),13,"LanguageGroup");
+ objFormatInteger(&(Private[LANGUAGEGROUP].value),DEFAULTLANGUAGEGROUP);
+ objFormatName(&(Private[LENIV].key),5,"lenIV");
+ objFormatInteger(&(Private[LENIV].value),DEFAULTLENIV);
+ objFormatName(&(Private[RNDSTEMUP].key),9,"RndStemUp");
+ objFormatBoolean(&(Private[RNDSTEMUP].value),DEFAULTRNDSTEMUP);
+ objFormatName(&(Private[EXPANSIONFACTOR].key),9,"ExpansionFactor");
+ objFormatReal(&(Private[EXPANSIONFACTOR].value),
+ DEFAULTEXPANSIONFACTOR);
+ return(SCAN_OK);
+}
+/***================================================================***/
+/**********************************************************************/
+/* GetType1Blues(fontP) */
+/* */
+/* Routine to support font-level hints. */
+/* */
+/* Gets all the Blues information from the Private dictionary */
+/* for the font. */
+/* */
+/* */
+/**********************************************************************/
+static int GetType1Blues(fontP)
+ psfont *fontP;
+{
+ psdict *PrivateDictP; /* the Private dict relating to hints */
+ struct blues_struct *blues; /* ptr for the blues struct we will allocate */
+ int i;
+ psobj *HintEntryP;
+
+
+
+ /* get the Private dictionary pointer */
+ PrivateDictP = fontP->Private;
+
+ /* allocate the memory for the blues structure */
+ blues = (struct blues_struct *) vm_alloc(sizeof(struct blues_struct));
+
+ if (!blues) return(SCAN_OUT_OF_MEMORY);
+
+ /* Make fontP's blues ptr point to this newly allocated structure. */
+ fontP->BluesP = blues;
+
+ /* fill in the BlueValues array */
+ HintEntryP = &(PrivateDictP[BLUEVALUES].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numBlueValues = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMBLUEVALUES) {
+ blues->numBlueValues = NUMBLUEVALUES;
+ } else
+ blues->numBlueValues = HintEntryP->len;
+ for (i = 0; i<= blues->numBlueValues-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->BlueValues[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->BlueValues[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->BlueValues[i] = 0;
+ }
+ }
+
+ /* fill in the OtherBlues array */
+ HintEntryP = &(PrivateDictP[OTHERBLUES].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numOtherBlues = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMOTHERBLUES) {
+ blues->numOtherBlues = NUMOTHERBLUES;
+ } else
+ blues->numOtherBlues = HintEntryP->len;
+ for (i = 0; i<= blues->numOtherBlues-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->OtherBlues[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->OtherBlues[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->OtherBlues[i] = 0;
+ }
+ }
+
+ /* fill in the FamilyBlues array */
+ HintEntryP = &(PrivateDictP[FAMILYBLUES].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numFamilyBlues = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMFAMILYBLUES) {
+ blues->numFamilyBlues = NUMFAMILYBLUES;
+ } else
+ blues->numFamilyBlues = HintEntryP->len;
+ for (i = 0; i<= blues->numFamilyBlues-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->FamilyBlues[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->FamilyBlues[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->FamilyBlues[i] = 0;
+ }
+ }
+
+ /* fill in the FamilyOtherBlues array */
+ HintEntryP = &(PrivateDictP[FAMILYOTHERBLUES].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numFamilyOtherBlues = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMFAMILYOTHERBLUES) {
+ blues->numFamilyOtherBlues = NUMFAMILYOTHERBLUES;
+ } else
+ blues->numFamilyOtherBlues = HintEntryP->len;
+ for (i = 0; i<= blues->numFamilyOtherBlues-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->FamilyOtherBlues[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->FamilyOtherBlues[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->FamilyOtherBlues[i] = 0;
+ }
+ }
+
+ /* fill in the StemSnapH array */
+ HintEntryP = &(PrivateDictP[STEMSNAPH].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numStemSnapH = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMSTEMSNAPH) {
+ blues->numStemSnapH = NUMSTEMSNAPH;
+ } else
+ blues->numStemSnapH = HintEntryP->len;
+ for (i = 0; i<= blues->numStemSnapH-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->StemSnapH[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->StemSnapH[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->StemSnapH[i] = 0;
+ }
+ }
+
+ /* fill in the StemSnapV array */
+ HintEntryP = &(PrivateDictP[STEMSNAPV].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ blues->numStemSnapV = 0;
+ else {
+ /* get the number of values in the array */
+ if (HintEntryP->len > NUMSTEMSNAPV) {
+ blues->numStemSnapV = NUMSTEMSNAPV;
+ } else
+ blues->numStemSnapV = HintEntryP->len;
+ for (i = 0; i<= blues->numStemSnapV-1; ++i) {
+ if (objPIsInteger(&HintEntryP->data.arrayP[i]))
+ blues->StemSnapV[i] =
+ HintEntryP->data.arrayP[i].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[i]))
+ blues->StemSnapV[i] =
+ HintEntryP->data.arrayP[i].data.real;
+ else
+ blues->StemSnapV[i] = 0;
+ }
+ }
+
+ /* fill in the StdVW array */
+ HintEntryP = &(PrivateDictP[STDVW].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ /* a value of zero signifies no entry */
+ blues->StdVW = 0.0;
+ else {
+ if (HintEntryP->len > NUMSTDVW) {
+ }
+ if (objPIsInteger(&HintEntryP->data.arrayP[0]))
+ blues->StdVW = HintEntryP->data.arrayP[0].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[0]))
+ blues->StdVW = HintEntryP->data.arrayP[0].data.real;
+ else
+ blues->StdVW = 0.0;
+ }
+
+ /* fill in the StdHW array */
+ HintEntryP = &(PrivateDictP[STDHW].value);
+ /* check to see if the entry exists and if it's an array */
+ if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
+ /* a value of zero signifies no entry */
+ blues->StdHW = 0;
+ else {
+ if (HintEntryP->len > NUMSTDHW) {
+ }
+ if (objPIsInteger(&HintEntryP->data.arrayP[0]))
+ blues->StdHW = HintEntryP->data.arrayP[0].data.integer;
+ else if (objPIsReal(&HintEntryP->data.arrayP[0]))
+ blues->StdHW = HintEntryP->data.arrayP[0].data.real;
+ else
+ blues->StdHW = 0;
+ }
+
+
+ /* get the ptr to the BlueScale entry */
+ HintEntryP = &(PrivateDictP[BLUESCALE].value);
+ /* put the BlueScale in the blues structure */
+ if (objPIsInteger(HintEntryP)) /* Must be integer! */
+ blues->BlueScale = HintEntryP->data.integer;
+ else if (objPIsReal(HintEntryP)) /* Error? */
+ blues->BlueScale = HintEntryP->data.real;
+ else
+ blues->BlueScale = DEFAULTBLUESCALE;
+
+ /* get the ptr to the BlueShift entry */
+ HintEntryP = &(PrivateDictP[BLUESHIFT].value);
+ if (objPIsInteger(HintEntryP)) /* Must be integer! */
+ blues->BlueShift = HintEntryP->data.integer;
+ else if (objPIsReal(HintEntryP)) /* Error? */
+ blues->BlueShift = HintEntryP->data.real;
+ else
+ blues->BlueShift = DEFAULTBLUESHIFT;
+
+ /* get the ptr to the BlueFuzz entry */
+ HintEntryP = &(PrivateDictP[BLUEFUZZ].value);
+ if (objPIsInteger(HintEntryP)) /* Must be integer! */
+ blues->BlueFuzz = HintEntryP->data.integer;
+ else if (objPIsReal(HintEntryP)) /* Error? */
+ blues->BlueFuzz = HintEntryP->data.real;
+ else
+ blues->BlueFuzz = DEFAULTBLUEFUZZ;
+
+ /* get the ptr to the ForceBold entry */
+ HintEntryP = &(PrivateDictP[FORCEBOLD].value);
+ if (objPIsBoolean(HintEntryP)) /* Must be integer! */
+ blues->ForceBold = HintEntryP->data.boolean;
+ else
+ blues->ForceBold = DEFAULTFORCEBOLD;
+
+ /* get the ptr to the LanguageGroup entry */
+ HintEntryP = &(PrivateDictP[LANGUAGEGROUP].value);
+ if (objPIsInteger(HintEntryP)) /* Must be integer! */
+ blues->LanguageGroup = HintEntryP->data.integer;
+ else
+ blues->LanguageGroup = DEFAULTLANGUAGEGROUP;
+
+ /* get the ptr to the RndStemUp entry */
+ HintEntryP = &(PrivateDictP[RNDSTEMUP].value);
+ if (objPIsBoolean(HintEntryP)) /* Must be integer! */
+ blues->RndStemUp = HintEntryP->data.boolean;
+ else
+ blues->RndStemUp = DEFAULTRNDSTEMUP;
+
+ /* get the ptr to the lenIV entry */
+ HintEntryP = &(PrivateDictP[LENIV].value);
+ if (objPIsInteger(HintEntryP)) {/* Must be integer! */
+ blues->lenIV = HintEntryP->data.integer;
+ }
+ else{
+ blues->lenIV = DEFAULTLENIV;
+ }
+
+
+ /* get the ptr to the ExpansionFactor entry */
+ HintEntryP = &(PrivateDictP[EXPANSIONFACTOR].value);
+ if (objPIsInteger(HintEntryP))
+ blues->ExpansionFactor = HintEntryP->data.integer;
+ else if (objPIsReal(HintEntryP))
+ blues->ExpansionFactor = HintEntryP->data.real;
+ else
+ blues->ExpansionFactor = DEFAULTEXPANSIONFACTOR;
+ return(SCAN_OK);
+}
+/**********************************************************************/
+/* GetType1CharString(fontP,code) */
+/* */
+/* Look up code in the standard encoding vector and return */
+/* the charstring associated with the character name. */
+/* */
+/* fontP is the psfont structure. */
+/* */
+/* Returns a psobj (string) */
+/**********************************************************************/
+psobj *GetType1CharString(fontP, code)
+psfont *fontP;
+unsigned char code;
+{
+ int N; /* the 'Nth' entry in the CharStrings */
+ psobj *charnameP; /* points to psobj that is name of character*/
+
+ psdict *CharStringsDictP; /* dictionary with char strings */
+ psobj *theStringP; /* the definition for the code */
+
+
+ if (StdEncArrayP == NULL) {
+ return(NULL);
+ }
+ /* use the code to index into the standard encoding vector */
+ charnameP = &(StdEncArrayP[code]);
+
+ /* test if the encoding array points to a name */
+ if (!(objPIsName(charnameP)) ) {
+ return(NULL);
+ }
+
+ /* Now that we have the character name out of the standardencoding */
+ /* get the character definition out of the current font */
+ CharStringsDictP = fontP->CharStringsP;
+
+ /* search the chars string for this charname as key */
+ N = SearchDictName(CharStringsDictP,charnameP);
+ if (N<=0) {
+ return(NULL);
+ }
+
+ /* OK, the nth item is the psobj that is the string for this char */
+ theStringP = &(CharStringsDictP[N].value);
+
+ return(theStringP);
+}
+
+/***================================================================***/
+/*
+ * FindDictValue
+ */
+/***================================================================***/
+
+static int FindDictValue(dictP)
+ psdict *dictP;
+{
+ psobj LitName;
+ int N;
+ int V;
+
+ /* we have just scanned a token and it is a literal name */
+ /* need to check if that name is in Private dictionary */
+ objFormatName(&LitName,tokenLength,tokenStartP);
+ /* is it in the dictP */
+ N = SearchDictName(dictP,&LitName);
+ /* if found */
+ if ( N > 0 ) {
+ /* what type */
+ switch (dictP[N].value.type) {
+ case OBJ_ENCODING:
+ V = getEncoding(&(dictP[N].value));
+ if ( V != SCAN_OK ) return(V);
+ break;
+ case OBJ_ARRAY:
+ V = getArray(&(dictP[N].value));
+ if ( V != SCAN_OK ) return(V);
+ break;
+ case OBJ_INTEGER:
+ /* next value in integer */
+ dictP[N].value.data.integer = getInt();
+ if (rc) return(rc); /* if next token was not an Int */
+ break;
+ case OBJ_REAL:
+ /* next value must be real or int, store as a real */
+ scan_token(inputP);
+ if (tokenType == TOKEN_REAL) {
+ dictP[N].value.data.real = tokenValue.real;
+ }
+ else
+ if (tokenType == TOKEN_INTEGER) {
+ dictP[N].value.data.real = tokenValue.integer;
+ }
+ else return(SCAN_ERROR);
+ break;
+ case OBJ_NAME:
+ V = getNextValue(TOKEN_LITERAL_NAME);
+ if ( V != SCAN_OK ) return(V);
+ if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
+ objFormatName(&(dictP[N].value),tokenLength,tokenStartP);
+ break;
+ case OBJ_STRING:
+ V = getNextValue(TOKEN_STRING);
+ if ( V != SCAN_OK ) return(V);
+ if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
+ objFormatString(&(dictP[N].value),tokenLength,tokenStartP);
+ break;
+ case OBJ_BOOLEAN:
+ scan_token(inputP);
+ if (tokenType != TOKEN_NAME) {
+ return(SCAN_ERROR);
+ }
+ if (0 == strncmp(tokenStartP,"true",4) ) {
+ dictP[N].value.data.boolean =TRUE;
+ }
+ else
+ if (0 == strncmp(tokenStartP,"false",5) ) {
+ dictP[N].value.data.boolean =FALSE;
+ }
+ else return(SCAN_ERROR);
+ break;
+
+ default:
+ return(SCAN_ERROR);
+ break;
+ }
+ }
+ /* Name is not in dictionary. That is ok. */
+ return(SCAN_OK);
+
+}
+/***================================================================***/
+
+/*
+ * -------------------------------------------------------------------
+ * Scan the next token and convert it into an object
+ * Result is placed on the Operand Stack as next object
+ * -------------------------------------------------------------------
+ */
+int scan_font(FontP)
+ psfont *FontP;
+{
+
+
+ char filename[MAXPATHLEN+1];
+ FILE *fileP;
+ char *nameP;
+ int namelen;
+
+ /* copy the filename and remove leading or trailing blanks */
+ /* point to name and search for leading blanks */
+ nameP= FontP->FontFileName.data.nameP;
+ namelen = FontP->FontFileName.len;
+ while (nameP[0] == ' ') {
+ nameP++;
+ namelen--;
+ }
+ /* now remove any trailing blanks */
+ while ((namelen>0) && ( nameP[namelen-1] == ' ')) {
+ namelen--;
+ }
+ if ( namelen >= MAXPATHLEN ) {
+ /* Hopefully, this will lead to a file open error */
+ namelen = MAXPATHLEN;
+ }
+ strncpy(filename,nameP,namelen);
+ filename[namelen] = '\0';
+ /* file name is now constructed */
+ inputFile.data.fileP = NULL;
+ filterFile.data.fileP = NULL;
+
+ inputP = &inputFile;
+ if ((fileP = fopen(filename,"rb"))!=NULL) {
+ objFormatFile(inputP,fileP);
+ }
+ else {
+ return(SCAN_FILE_OPEN_ERROR);
+ };
+
+ WantFontInfo = TRUE;
+ InPrivateDict = FALSE;
+ TwoSubrs = FALSE;
+ rc = BuildFontInfo(FontP);
+#ifdef DEBUG_SCANFONT
+ printf("BuildFontInfo(): retval=%d\n", rc);
+#endif
+ if (rc != 0) return(rc);
+
+ /* Assume everything will be OK */
+ rc = 0;
+
+ /* Loop until complete font is read */
+ do {
+ /* Scan the next token */
+ scan_token(inputP);
+
+ /* ==> tokenLength, tokenTooLong, tokenType, and tokenValue are */
+ /* now set */
+
+ switch (tokenType) {
+ case TOKEN_EOF:
+ case TOKEN_NONE:
+ case TOKEN_INVALID:
+ /* in this case we are done */
+ if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
+ rc = SCAN_ERROR;
+ break;
+ case TOKEN_LITERAL_NAME:
+ /* Look up the name */
+ tokenStartP[tokenLength] = '\0';
+ /* At this point we check for the font not being a
+ Multiple Master Font. If it is, we return an error.
+ However, we restrict searching for forbidden keywords
+ to FontInfo, in order not to make assumptions about
+ internal PostScript routine names. (RMz, 2004-11-27) */
+ if ( !InPrivateDict ) {
+ if (strncmp(tokenStartP, "BlendAxisTypes", 14)==0){
+ rc=SCAN_MMFONT;
+ break;
+ }
+ }
+ if (InPrivateDict ) {
+ if (0== strncmp(tokenStartP,"Subrs",5) ) {
+ rc = BuildSubrs(FontP);
+#ifdef DEBUG_SCANFONT
+ printf("BuildSubrs(): retval=%d\n", rc);
+#endif
+ break;
+ }
+ if (0== strncmp(tokenStartP,"CharStrings",11) ) {
+ rc = BuildCharStrings(FontP);
+#ifdef DEBUG_SCANFONT
+ printf("BuildCharstrings(): retval=%d\n", rc);
+#endif
+ if ( (rc == SCAN_OK) ||(rc == SCAN_END) ) {
+ fclose(inputP->data.fileP);
+ /* Build the Blues Structure */
+ rc = GetType1Blues(FontP);
+#ifdef DEBUG_SCANFONT
+ printf("GetType1Blues(): retval=%d\n", rc);
+#endif
+ /* whatever the return code, return it */
+ /* all the work is done. This is the normal exit.*/
+ return(rc);
+ }
+ break;
+ }
+ rc = FindDictValue(FontP->Private);
+ /* we are not going to report errors */
+ /* Sometimes the font file may test a value such as */
+ /* testing to see if the font is alreadly loaded with */
+ /* same UniqueID. We would faile on /UniqueID get */
+ /* because we are expecting a int to follow UniqueID*/
+ /* If the correct object type does not follow a Name*/
+ /* then we will skip over it without reporting error*/
+ rc = SCAN_OK;
+ break;
+ } /* end of reading Private dictionary */
+ else
+ if (0== strncmp(tokenStartP,"Private",7) ) {
+ InPrivateDict = TRUE;
+ rc = BuildPrivate(FontP);
+ break;
+ }
+ else
+ if (WantFontInfo) {
+ rc = FindDictValue(FontP->fontInfoP);
+ /* we are not going to report errors */
+ rc = SCAN_OK;
+ break;
+ }
+ break;
+ case TOKEN_NAME:
+ if (0 == strncmp(tokenStartP,"eexec",5) ) {
+ /* We check for the pfb-headers in I/O-module */
+ filterFile.data.fileP = T1eexec(inputP->data.fileP);
+ if (filterFile.data.fileP == NULL) {
+ fclose(inputFile.data.fileP);
+ /* SCAN_FILE_OPEN_ERROR replaced because at this point
+ a portion of the file has already been read successfully.
+ We hence have encountered a premature end of file
+ (2002-08-17, RMz). */
+ return SCAN_FILE_EOF;
+ }
+ inputP = &filterFile;
+
+ WantFontInfo = FALSE;
+ }
+ break;
+ }
+
+ }
+ while (rc ==0);
+ fclose(inputP->data.fileP);
+ if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
+ return(rc);
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.c
new file mode 100644
index 00000000000..667150dc5bf
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.c
@@ -0,0 +1,1016 @@
+/* $XConsortium: spaces.c,v 1.4 91/10/10 11:19:16 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+ /* SPACES CWEB V0021 ******** */
+/*
+:h1 id=spaces.SPACES Module - Handles Coordinate Spaces
+
+This module is responsible for handling the TYPE1IMAGER "XYspace" object.
+
+&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
+
+
+:h3.Include Files
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "types.h"
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "pictures.h"
+#include "fonts.h"
+#include "arith.h"
+#include "trig.h"
+
+static int FindFfcn();
+static int FindIfcn();
+/*
+:h3.Entry Points Provided to the TYPE1IMAGER User
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.Entry Points Provided to Other Modules
+*/
+
+/*
+In addition, other modules call the SPACES module through function
+vectors in the "XYspace" structure. The entry points accessed that
+way are "FConvert()", "IConvert()", and "ForceFloat()".
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h3.Macros and Typedefs Provided to Other Modules
+
+:h4.Duplicating and Killing Spaces
+
+Destroying XYspaces is so simple we can do it with a
+macro:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+On the other hand, duplicating XYspaces is slightly more difficult
+because of the need to keep a unique ID in the space, see
+:hdref refid=dupspace..
+
+:h4.Fixed Point Pel Representation
+
+We represent pel positions with fixed point numbers. This does NOT
+mean integer, but truly means fixed point, with a certain number
+of binary digits (FRACTBITS) representing the fractional part of the
+pel.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+/*
+:h2.Data Structures for Coordinate Spaces and Points
+*/
+/*
+:h3 id=matrix.Matrices
+
+TYPE1IMAGER uses 2x2 transformation matrices. We'll use C notation for
+such a matrix (M[2][2]), the first index being rows, the second columns.
+*/
+
+/*
+:h3.The "doublematrix" Structure
+
+We frequently find it desirable to store both a matrix and its
+inverse. We store these in a "doublematrix" structure.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.The "XYspace" Structure
+
+The XYspace structure represents the XYspace object.
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+#define RESERVED 10 /* 'n' IDs are reserved for invalid & immortal spaces */
+/*
+*/
+#define NEXTID ((SpaceID < RESERVED) ? (SpaceID = RESERVED) : ++SpaceID)
+
+static unsigned int SpaceID = 1;
+
+struct XYspace *CopySpace(S)
+ register struct XYspace *S;
+{
+ S = (struct XYspace *)Allocate(sizeof(struct XYspace), S, 0);
+ S->ID = NEXTID;
+ return(S);
+}
+/*
+:h3.The "fractpoint" Structure
+
+A fractional point is just a "fractpel" x and y:
+*/
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+/*
+:h3.Lazy Evaluation of Matrix Inverses
+
+Calculating the inverse of a matrix is somewhat involved, and we usually
+do not need them. So, we flag whether or not the space has the inverse
+already calculated:
+*/
+
+#define HASINVERSE(flag) ((flag)&0x80)
+
+/*
+The following macro forces a space to have an inverse:
+*/
+
+#define CoerceInverse(S) if (!HASINVERSE((S)->flag)) { \
+ MatrixInvert((S)->tofract.normal, (S)->tofract.inverse); (S)->flag |= HASINVERSE(ON); }
+/*
+:h3.IDENTITY Space
+
+IDENTITY space is (logically) the space corresponding to the identity
+transformation matrix. However, since all our transformation matrices
+have a common FRACTFLOAT scale factor to convert to 'fractpel's, that
+is actually what we store in 'tofract' matrix of IDENTITY:
+*/
+
+static struct XYspace identity = { SPACETYPE, ISPERMANENT(ON) + ISIMMORTAL(ON)
+ + HASINVERSE(ON), 2, /* added 3-26-91 PNM */
+ NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ INVALIDID + 1, 0,
+ {{{FRACTFLOAT, 0.0}, {0.0, FRACTFLOAT}},
+ {{1.0/FRACTFLOAT, 0.0}, {0.0, 1.0/FRACTFLOAT}}},
+ {{0, 0}, {0, 0}} };
+struct XYspace *IDENTITY = &identity;
+
+/*
+*/
+#define MAXCONTEXTS 16
+
+static struct doublematrix contexts[MAXCONTEXTS];
+
+#ifdef notdef
+
+static int nextcontext = 1;
+
+/*SHARED LINE(S) ORIGINATED HERE*/
+
+#if __STDC__
+#define pointer void *
+#else
+#define pointer char *
+#endif
+
+/*
+:h3.FindDeviceContext() - Find the Context Given a Device
+
+This routine, given a device, returns the index of the device's
+transformation matrix in the context array. If it cannot find it,
+it will allocate a new array entry and fill it out.
+*/
+
+static int FindDeviceContext(device)
+ pointer device; /* device token */
+{
+ DOUBLE M[2][2]; /* temporary matrix */
+ float Xres,Yres; /* device resolution */
+ int orient = -1; /* device orientation */
+ int rc = -1; /* return code for QueryDeviceState */
+
+ if (rc != 0) /* we only bother with this check once */
+ abort("Context: QueryDeviceState didn't work", 44);
+
+ M[0][0] = M[1][0] = M[0][1] = M[1][1] = 0.0;
+
+ switch (orient) {
+ case 0:
+ M[0][0] = Xres; M[1][1] = -Yres;
+ break;
+ case 1:
+ M[1][0] = Yres; M[0][1] = Xres;
+ break;
+ case 2:
+ M[0][0] = -Xres; M[1][1] = Yres;
+ break;
+ case 3:
+ M[1][0] = -Yres; M[0][1] = -Xres;
+ break;
+ default:
+ abort("QueryDeviceState returned invalid orientation", 45);
+ }
+ return(FindContext(M));
+}
+
+/*
+:h3.FindContext() - Find the Context Given a Matrix
+
+This routine, given a matrix, returns the index of that matrix matrix in
+the context array. If it cannot find it, it will allocate a new array
+entry and fill it out.
+*/
+
+int FindContext(M)
+ DOUBLE M[2][2]; /* array to search for */
+{
+ register int i; /* loop variable for search */
+ for (i=0; i < nextcontext; i++)
+ if (M[0][0] == contexts[i].normal[0][0] && M[1][0] == contexts[i].normal[1][0]
+ && M[0][1] == contexts[i].normal[0][1] && M[1][1] == contexts[i].normal[1][1])
+ break;
+
+ if (i >= nextcontext) {
+ if (i >= MAXCONTEXTS)
+ abort("Context: out of them", 46);
+ LONGCOPY(contexts[i].normal, M, sizeof(contexts[i].normal));
+ MatrixInvert(M, contexts[i].inverse);
+ nextcontext++;
+ }
+
+ return(i);
+}
+
+/*
+:h3.Context() - Create a Coordinate Space for a Device
+
+This user operator is implemented by first finding the device context
+array index, then transforming IDENTITY space to create an appropriate
+cooridnate space.
+*/
+
+struct XYspace *Context(device, units)
+ pointer device; /* device token */
+ DOUBLE units; /* multiples of one inch */
+{
+ DOUBLE M[2][2]; /* device transformation matrix */
+ register int n; /* will hold device context number */
+ register struct XYspace *S; /* XYspace constructed */
+
+ IfTrace2((MustTraceCalls),"Context(%x, %f)\n", device, &units);
+
+ ARGCHECK((device == NULL), "Context of NULLDEVICE not allowed",
+ NULL, IDENTITY, (0), struct XYspace *);
+ ARGCHECK((units == 0.0), "Context: bad units", NULL, IDENTITY, (0), struct XYspace *);
+
+ n = FindDeviceContext(device);
+
+ LONGCOPY(M, contexts[n].normal, sizeof(M));
+
+ M[0][0] *= units;
+ M[0][1] *= units;
+ M[1][0] *= units;
+ M[1][1] *= units;
+
+ S = (struct XYspace *)Xform(IDENTITY, M);
+
+ S->context = n;
+ return(S);
+}
+#endif
+
+/*
+:h3.ConsiderContext() - Adjust a Matrix to Take Out Device Transform
+
+Remember, we have :f/x times U times D/ and :f/M/ and and we want :f/x
+times U times M times D/. An easy way to do this is to calculate
+:f/D sup <-1> times M times D/, because:
+:formula.
+x times U times D times D sup <-1> times M times D = x times U times M times D
+:formula.
+So this subroutine, given an :f/M/and an object, finds the :f/D/ for that
+object and modifies :f/M/ so it is :f/D sup <-1> times M times D/.
+*/
+
+static void ConsiderContext(obj, M)
+ register struct xobject *obj; /* object to be transformed */
+ register DOUBLE M[2][2]; /* matrix (may be changed) */
+{
+ register int context=0; /* index in contexts array */
+
+ if (obj == NULL) return;
+
+ if (ISPATHTYPE(obj->type)) {
+ struct segment *path = (struct segment *) obj;
+
+ context = path->context;
+ }
+ else if (obj->type == SPACETYPE) {
+ struct XYspace *S = (struct XYspace *) obj;
+
+ context = S->context;
+ }
+ else if (obj->type == PICTURETYPE) {
+
+ }
+ else
+ context = NULLCONTEXT;
+
+ if (context != NULLCONTEXT) {
+ MatrixMultiply(contexts[context].inverse, M, M);
+ MatrixMultiply(M, contexts[context].normal, M);
+ }
+}
+
+/*
+:h2.Conversion from User's X,Y to "fractpel" X,Y
+
+When the user is building paths (lines, moves, curves, etc.) he passes
+the control points (x,y) for the paths together with an XYspace. We
+must convert from the user's (x,y) to our internal representation
+which is in pels (fractpels, actually). This involves transforming
+the user's (x,y) under the coordinate space transformation. It is
+important that we do this quickly. So, we store pointers to different
+conversion functions right in the XYspace structure. This allows us
+to have simpler special case functions for the more commonly
+encountered types of transformations.
+
+:h3.Convert(), IConvert(), and ForceFloat() - Called Through "XYspace" Structure
+
+These are functions that fit in the "convert" and "iconvert" function
+pointers in the XYspace structure. They call the "xconvert", "yconvert",
+"ixconvert", and "iyconvert" as appropriate to actually do the work.
+These secondary routines come in many flavors to handle different
+special cases as quickly as possible.
+*/
+
+int FXYConvert(pt, S, x, y)
+ register struct fractpoint *pt; /* point to set */
+ register struct XYspace *S; /* relevant coordinate space */
+ register DOUBLE x,y; /* user's coordinates of point */
+{
+ pt->x = (*S->xconvert)(S->tofract.normal[0][0], S->tofract.normal[1][0], x, y);
+ pt->y = (*S->yconvert)(S->tofract.normal[0][1], S->tofract.normal[1][1], x, y);
+ return(0);
+
+}
+
+int IXYConvert(pt, S, x, y)
+ register struct fractpoint *pt; /* point to set */
+ register struct XYspace *S; /* relevant coordinate space */
+ register LONG x,y; /* user's coordinates of point */
+{
+ pt->x = (*S->ixconvert)(S->itofract[0][0], S->itofract[1][0], x, y);
+ pt->y = (*S->iyconvert)(S->itofract[0][1], S->itofract[1][1], x, y);
+ return(0);
+
+}
+
+/*
+ForceFloat is a substitute for IConvert(), when we just do not have
+enough significant digits in the coefficients to get high enough
+precision in the answer with fixed point arithmetic. So, we force the
+integers to floats, and do the arithmetic all with floats:
+*/
+
+int ForceFloat(pt, S, x, y)
+ register struct fractpoint *pt; /* point to set */
+ register struct XYspace *S; /* relevant coordinate space */
+ register LONG x,y; /* user's coordinates of point */
+{
+ (*S->convert)(pt, S, (DOUBLE) x, (DOUBLE) y);
+ return(0);
+
+}
+
+/*
+:h3.FXYboth(), FXonly(), FYonly() - Floating Point Conversion
+
+These are the routines we use when the user has given us floating
+point numbers for x and y. FXYboth() is the general purpose routine;
+FXonly() and FYonly() are special cases when one of the coefficients
+is 0.0.
+*/
+
+fractpel FXYboth(cx, cy, x, y)
+ register DOUBLE cx,cy; /* x and y coefficients */
+ register DOUBLE x,y; /* user x,y */
+{
+ register DOUBLE r; /* temporary float */
+
+ r = x * cx + y * cy;
+ return((fractpel) r);
+}
+
+/*ARGSUSED*/
+fractpel FXonly(cx, cy, x, y)
+ register DOUBLE cx,cy; /* x and y coefficients */
+ register DOUBLE x,y; /* user x,y */
+{
+ register DOUBLE r; /* temporary float */
+
+ r = x * cx;
+ return((fractpel) r);
+}
+
+/*ARGSUSED*/
+fractpel FYonly(cx, cy, x, y)
+ register DOUBLE cx,cy; /* x and y coefficients */
+ register DOUBLE x,y; /* user x,y */
+{
+ register DOUBLE r; /* temporary float */
+
+ r = y * cy;
+ return((fractpel) r);
+}
+
+/*
+:h3.IXYboth(), IXonly(), IYonly() - Simple Integer Conversion
+
+These are the routines we use when the user has given us integers for
+x and y, and the coefficients have enough significant digits to
+provide precise answers with only "long" (32 bit?) multiplication.
+IXYboth() is the general purpose routine; IXonly() and IYonly() are
+special cases when one of the coefficients is 0.
+*/
+
+fractpel IXYboth(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return(x * cx + y * cy);
+}
+
+/*ARGSUSED*/
+fractpel IXonly(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return(x * cx);
+}
+
+/*ARGSUSED*/
+fractpel IYonly(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return(y * cy);
+}
+
+
+/*
+:h3.FPXYboth(), FPXonly(), FPYonly() - More Involved Integer Conversion
+
+These are the routines we use when the user has given us integers for
+x and y, but the coefficients do not have enough significant digits to
+provide precise answers with only "long" (32 bit?) multiplication.
+We have increased the number of significant bits in the coefficients
+by FRACTBITS; therefore we must use "double long" (64 bit?)
+multiplication by calling FPmult(). FPXYboth() is the general purpose
+routine; FPXonly() and FPYonly() are special cases when one of the
+coefficients is 0.
+
+Note that it is perfectly possible for us to calculate X with the
+"FP" method and Y with the "I" method, or vice versa. It all depends
+on how the functions in the XYspace structure are filled out.
+*/
+
+fractpel FPXYboth(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return( FPmult(x, cx) + FPmult(y, cy) );
+}
+
+/*ARGSUSED*/
+fractpel FPXonly(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return( FPmult(x, cx) );
+}
+
+/*ARGSUSED*/
+fractpel FPYonly(cx, cy, x, y)
+ register fractpel cx,cy; /* x and y coefficients */
+ register LONG x,y; /* user x,y */
+{
+ return( FPmult(y, cy) );
+}
+
+
+
+/*
+:h3.FillOutFcns() - Determine the Appropriate Functions to Use for Conversion
+
+This function fills out the "convert" and "iconvert" function pointers
+in an XYspace structure, and also fills the "helper"
+functions that actually do the work.
+*/
+
+static void FillOutFcns(S)
+ register struct XYspace *S; /* functions will be set in this structure */
+{
+ S->convert = FXYConvert;
+ S->iconvert = IXYConvert;
+
+ FindFfcn(S->tofract.normal[0][0], S->tofract.normal[1][0], &S->xconvert);
+ FindFfcn(S->tofract.normal[0][1], S->tofract.normal[1][1], &S->yconvert);
+ FindIfcn(S->tofract.normal[0][0], S->tofract.normal[1][0],
+ &S->itofract[0][0], &S->itofract[1][0], &S->ixconvert);
+ FindIfcn(S->tofract.normal[0][1], S->tofract.normal[1][1],
+ &S->itofract[0][1], &S->itofract[1][1], &S->iyconvert);
+
+ if (S->ixconvert == NULL || S->iyconvert == NULL)
+ S->iconvert = ForceFloat;
+}
+
+/*
+:h4.FindFfcn() - Subroutine of FillOutFcns() to Fill Out Floating Functions
+
+This function tests for the special case of one of the coefficients
+being zero:
+*/
+
+static int FindFfcn(cx, cy, fcnP)
+ register DOUBLE cx,cy; /* x and y coefficients */
+ register fractpel (**fcnP)(); /* pointer to function to set */
+{
+ if (cx == 0.0)
+ *fcnP = FYonly;
+ else if (cy == 0.0)
+ *fcnP = FXonly;
+ else
+ *fcnP = FXYboth;
+ return(0);
+
+}
+
+/*
+:h4.FindIfcn() - Subroutine of FillOutFcns() to Fill Out Integer Functions
+
+There are two types of integer functions, the 'I' type and the 'FP' type.
+We use the I type functions when we are satisfied with simple integer
+arithmetic. We used the FP functions when we feel we need higher
+precision (but still fixed point) arithmetic. If all else fails,
+we store a NULL indicating that this we should do the conversion in
+floating point.
+*/
+
+static int FindIfcn(cx, cy, icxP, icyP, fcnP)
+ register DOUBLE cx,cy; /* x and y coefficients */
+ register fractpel *icxP,*icyP; /* fixed point coefficients to set */
+ register fractpel (**fcnP)(); /* pointer to function to set */
+{
+ register fractpel imax; /* maximum of cx and cy */
+
+ *icxP = cx;
+ *icyP = cy;
+
+ if (cx != (float) (*icxP) || cy != (float) (*icyP)) {
+/*
+At this point we know our integer approximations of the coefficients
+are not exact. However, we will still use them if the maximum
+coefficient will not fit in a 'fractpel'. Of course, we have little
+choice at that point, but we haven't lost that much precision by
+staying with integer arithmetic. We have enough significant digits
+so that
+any error we introduce is less than one part in 2:sup/16/.
+*/
+
+ imax = TYPE1_MAX(TYPE1_ABS(*icxP), TYPE1_ABS(*icyP));
+ if (imax < (fractpel) (1<<(FRACTBITS-1)) ) {
+/*
+At this point we know our integer approximations just do not have
+enough significant digits for accuracy. We will add FRACTBITS
+significant digits to the coefficients (by multiplying them by
+1<<FRACTBITS) and go to the "FP" form of the functions. First, we
+check to see if we have ANY significant digits at all (that is, if
+imax == 0). If we don't, we suspect that adding FRACTBITS digits
+won't help, so we punt the whole thing.
+*/
+ if (imax == 0) {
+ *fcnP = NULL;
+ return(0);
+ }
+ cx *= FRACTFLOAT;
+ cy *= FRACTFLOAT;
+ *icxP = cx;
+ *icyP = cy;
+ *fcnP = FPXYboth;
+ }
+ else
+ *fcnP = IXYboth;
+ }
+ else
+ *fcnP = IXYboth;
+/*
+Now we check for special cases where one coefficient is zero (after
+integer conversion):
+*/
+ if (*icxP == 0)
+ *fcnP = (*fcnP == FPXYboth) ? FPYonly : IYonly;
+ else if (*icyP == 0)
+ *fcnP = (*fcnP == FPXYboth) ? FPXonly : IXonly;
+ return(0);
+
+}
+/*
+:h3.UnConvert() - Find User Coordinates From FractPoints
+
+The interesting thing with this routine is that we avoid calculating
+the matrix inverse of the device transformation until we really need
+it, which is to say, until this routine is called for the first time
+with a given coordinate space.
+
+We also only calculate it only once. If the inverted matrix is valid,
+we don't calculate it; if not, we do. We never expect matrices with
+zero determinants, so by convention, we mark the matrix is invalid by
+marking both X terms zero.
+*/
+
+void UnConvert(S, pt, xp, yp)
+ register struct XYspace *S; /* relevant coordinate space */
+ register struct fractpoint *pt; /* device coordinates */
+ DOUBLE *xp,*yp; /* where to store resulting x,y */
+{
+ DOUBLE x,y;
+
+ CoerceInverse(S);
+ x = pt->x;
+ y = pt->y;
+ *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y;
+ *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y;
+}
+
+/*
+:h2.Transformations
+*/
+/*
+:h3 id=xform.Xform() - Transform Object in X and Y
+
+TYPE1IMAGER wants transformations of objects like paths to be identical
+to transformations of spaces. For example, if you scale a line(1,1)
+by 10 it should yield the same result as generating the line(1,1) in
+a coordinate space that has been scaled by 10.
+
+We handle fonts by storing the accumulated transform, for example, SR
+(accumulating on the right). Then when we map the font through space TD,
+for example, we multiply the accumulated font transform on the left by
+the space transform on the right, yielding SRTD in this case. We will
+get the same result if we did S, then R, then T on the space and mapping
+an unmodified font through that space.
+*/
+
+struct xobject *t1_Xform(obj, M)
+ register struct xobject *obj; /* object to transform */
+ register DOUBLE M[2][2]; /* transformation matrix */
+{
+ if (obj == NULL)
+ return(NULL);
+
+ if (obj->type == FONTTYPE) {
+ register struct font *F = (struct font *) obj;
+
+ F = UniqueFont(F);
+ return((struct xobject*)F);
+ }
+ if (obj->type == PICTURETYPE) {
+/*
+In the case of a picture, we choose both to update the picture's
+transformation matrix and keep the handles up to date.
+*/
+ register struct picture *P = (struct picture *) obj;
+ register struct segment *handles; /* temporary path to transform handles */
+
+ P = UniquePicture(P);
+ handles = PathSegment(LINETYPE, P->origin.x, P->origin.y);
+ handles = Join(handles,
+ PathSegment(LINETYPE, P->ending.x, P->ending.y) );
+ handles = (struct segment *)Xform((struct xobject *) handles, M);
+ P->origin = handles->dest;
+ P->ending = handles->link->dest;
+ KillPath(handles);
+ return((struct xobject *)P);
+ }
+
+ if (ISPATHTYPE(obj->type)) {
+ struct XYspace pseudo; /* local temporary space */
+ PseudoSpace(&pseudo, M);
+ return((struct xobject *) PathTransform(obj, &pseudo));
+ }
+
+
+ if (obj->type == SPACETYPE) {
+ register struct XYspace *S = (struct XYspace *) obj;
+
+/* replaced ISPERMANENT(S->flag) with S->references > 1 3-26-91 PNM */
+ if (S->references > 1)
+ S = CopySpace(S);
+ else
+ S->ID = NEXTID;
+
+ MatrixMultiply(S->tofract.normal, M, S->tofract.normal);
+ /*
+ * mark inverted matrix invalid:
+ */
+ S->flag &= ~HASINVERSE(ON);
+
+ FillOutFcns(S);
+ return((struct xobject *) S);
+ }
+
+ return(ArgErr("Untransformable object", obj, obj));
+}
+
+/*
+:h3.Transform() - Transform an Object
+
+This is the external user's entry point.
+*/
+struct xobject *t1_Transform(obj, cxx, cyx, cxy, cyy)
+ struct xobject *obj;
+ DOUBLE cxx,cyx,cxy,cyy; /* 2x2 transform matrix elements in row order */
+{
+ DOUBLE M[2][2];
+
+ IfTrace1((MustTraceCalls),"Transform(%p,", obj);
+ IfTrace4((MustTraceCalls)," %f %f %f %f)\n", cxx, cyx, cxy, cyy);
+
+ M[0][0] = cxx;
+ M[0][1] = cyx;
+ M[1][0] = cxy;
+ M[1][1] = cyy;
+ ConsiderContext(obj, M);
+ return(Xform(obj, M));
+}
+/*
+:h3.Scale() - Special Case of Transform()
+
+This is a user operator.
+*/
+
+struct xobject *t1_Scale(obj, sx, sy)
+ struct xobject *obj; /* object to scale */
+ DOUBLE sx,sy; /* scale factors in x and y */
+{
+ DOUBLE M[2][2];
+ IfTrace3((MustTraceCalls),"Scale(%p, %f, %f)\n", obj, sx, sy);
+ M[0][0] = sx;
+ M[1][1] = sy;
+ M[1][0] = M[0][1] = 0.0;
+ ConsiderContext(obj, M);
+ return(Xform(obj, M));
+}
+
+/*
+:h3 id=rotate.Rotate() - Special Case of Transform()
+
+We special-case different settings of 'degrees' for performance
+and accuracy within the DegreeSin() and DegreeCos() routines themselves.
+*/
+
+#ifdef notdef
+struct xobject *xiRotate(obj, degrees)
+ struct xobject *obj; /* object to be transformed */
+ DOUBLE degrees; /* degrees of COUNTER-clockwise rotation */
+{
+ DOUBLE M[2][2];
+
+
+ IfTrace2((MustTraceCalls),"Rotate(%z, %f)\n", obj, &degrees);
+
+ M[0][0] = M[1][1] = DegreeCos(degrees);
+ M[1][0] = - (M[0][1] = DegreeSin(degrees));
+ ConsiderContext(obj, M);
+ return(Xform(obj, M));
+}
+#endif
+
+/*
+:h3.PseudoSpace() - Build a Coordinate Space from a Matrix
+
+Since we have built all this optimized code that, given an (x,y) and
+a coordinate space, yield transformed (x,y), it seems a shame not to
+use the same logic when we need to multiply an (x,y) by an arbitrary
+matrix that is not (initially) part of a coordinate space. This
+subroutine takes the arbitrary matrix and builds a coordinate
+space, with all its nifty function pointers.
+*/
+
+void PseudoSpace(S, M)
+ struct XYspace *S; /* coordinate space structure to fill out */
+ DOUBLE M[2][2]; /* matrix that will become 'tofract.normal' */
+{
+ S->type = SPACETYPE;
+ S->flag = ISPERMANENT(ON) + ISIMMORTAL(ON);
+ S->references = 2; /* 3-26-91 added PNM */
+ S->tofract.normal[0][0] = M[0][0];
+ S->tofract.normal[1][0] = M[1][0];
+ S->tofract.normal[0][1] = M[0][1];
+ S->tofract.normal[1][1] = M[1][1];
+
+ FillOutFcns(S);
+}
+
+/*
+:h2 id=matrixa.Matrix Arithmetic
+
+Following the convention in Newman and Sproull, :hp1/Interactive
+Computer Graphics/,
+matrices are organized:
+:xmp.
+ | cxx cyx |
+ | cxy cyy |
+:exmp.
+A point is horizontal, for example:
+:xmp.
+ [ x y ]
+:exmp.
+This means that:
+:formula/x prime = cxx times x + cxy times y/
+:formula/y prime = cyx times x + cyy times y/
+I've seen the other convention, where transform matrices are
+transposed, equally often in the literature.
+*/
+
+/*
+:h3.MatrixMultiply() - Implements Multiplication of Two Matrices
+
+Implements matrix multiplication, A * B = C.
+
+To remind myself, matrix multiplication goes rows of A times columns
+of B.
+The output matrix may be the same as one of the input matrices.
+*/
+void MatrixMultiply(A, B, C)
+ register DOUBLE A[2][2],B[2][2]; /* input matrices */
+ register DOUBLE C[2][2]; /* output matrix */
+{
+ register DOUBLE txx,txy,tyx,tyy;
+
+ txx = A[0][0] * B[0][0] + A[0][1] * B[1][0];
+ txy = A[1][0] * B[0][0] + A[1][1] * B[1][0];
+ tyx = A[0][0] * B[0][1] + A[0][1] * B[1][1];
+ tyy = A[1][0] * B[0][1] + A[1][1] * B[1][1];
+
+ C[0][0] = txx;
+ C[1][0] = txy;
+ C[0][1] = tyx;
+ C[1][1] = tyy;
+}
+/*
+:h3.MatrixInvert() - Invert a Matrix
+
+My reference for matrix inversion was :hp1/Elementary Linear Algebra/
+by Paul C. Shields, Worth Publishers, Inc., 1968.
+*/
+void MatrixInvert(M, Mprime)
+ DOUBLE M[2][2]; /* input matrix */
+ DOUBLE Mprime[2][2]; /* output inverted matrix */
+{
+ register DOUBLE D; /* determinant of matrix M */
+ register DOUBLE txx,txy,tyx,tyy;
+
+ txx = M[0][0];
+ txy = M[1][0];
+ tyx = M[0][1];
+ tyy = M[1][1];
+
+ D = M[1][1] * M[0][0] - M[1][0] * M[0][1];
+ if (D == 0.0)
+ abort("MatrixInvert: can't", 47);
+
+ Mprime[0][0] = tyy / D;
+ Mprime[1][0] = -txy / D;
+ Mprime[0][1] = -tyx / D;
+ Mprime[1][1] = txx / D;
+}
+/*
+:h2.Initialization, Queries, and Debug
+*/
+/*
+:h3.InitSpaces() - Initialize Constant Spaces
+
+For compatibility, we initialize a coordinate space called USER which
+maps 72nds of an inch to pels on the default device.
+*/
+
+struct XYspace *USER = &identity;
+
+void InitSpaces()
+{
+ /* extern char *DEFAULTDEVICE; */
+
+ IDENTITY->type = SPACETYPE;
+ FillOutFcns(IDENTITY);
+
+ contexts[NULLCONTEXT].normal[1][0]
+ = contexts[NULLCONTEXT].normal[0][1]
+ = contexts[NULLCONTEXT].inverse[1][0]
+ = contexts[NULLCONTEXT].inverse[0][1] = 0.0;
+ contexts[NULLCONTEXT].normal[0][0]
+ = contexts[NULLCONTEXT].normal[1][1]
+ = contexts[NULLCONTEXT].inverse[0][0]
+ = contexts[NULLCONTEXT].inverse[1][1] = 1.0;
+
+ USER->flag |= ISIMMORTAL(ON);
+ CoerceInverse(USER);
+}
+/*
+:h3.QuerySpace() - Returns the Transformation Matrix of a Space
+
+Since the tofract matrix of an XYspace includes the scale factor
+necessary to produce fractpel results (i.e., FRACTFLOAT), this
+must be taken out before we return the matrix to the user. Fortunately,
+this is simple: just multiply by the inverse of IDENTITY!
+*/
+
+void QuerySpace(S, cxxP, cyxP, cxyP, cyyP)
+ register struct XYspace *S; /* space asked about */
+ register DOUBLE *cxxP,*cyxP,*cxyP,*cyyP; /* where to put answer */
+{
+ DOUBLE M[2][2]; /* temp matrix to build user's answer */
+
+ if (S->type != SPACETYPE) {
+ ArgErr("QuerySpace: not a space", S, NULL);
+ return;
+ }
+ MatrixMultiply(S->tofract.normal, IDENTITY->tofract.inverse, M);
+ *cxxP = M[0][0];
+ *cxyP = M[1][0];
+ *cyxP = M[0][1];
+ *cyyP = M[1][1];
+}
+
+/*
+:h3.FormatFP() - Format a Fixed Point Pel
+
+We format the pel as "dddd.XXXX", where XX's are hexidecimal digits,
+and the dd's are decimal digits. This might be a little confusing
+mixing hexidecimal and decimal like that, but it is convenient
+to use for debug.
+
+We make sure we have N (FRACTBITS/4) digits past the decimal point.
+*/
+#define FRACTMASK ((1<<FRACTBITS)-1) /* mask for fractional part */
+
+void FormatFP(string, fpel)
+ register char *string; /* output string */
+ register fractpel fpel; /* fractional pel input */
+{
+ char temp[8];
+ register char *s;
+ register char *sign;
+
+ if (fpel < 0) {
+ sign = "-";
+ fpel = -fpel;
+ }
+ else
+ sign = "";
+
+ sprintf(temp, "000%x", fpel & FRACTMASK);
+ s = temp + strlen(temp) - (FRACTBITS/4);
+
+ sprintf(string, "%s%d.%sx", sign, fpel >> FRACTBITS, s);
+}
+
+/*
+:h3.DumpSpace() - Display a Coordinate Space
+*/
+/*ARGSUSED*/
+void DumpSpace(S)
+ register struct XYspace *S;
+{
+ IfTrace4(TRUE,"--Coordinate space at %p,ID=%d,convert=%p,iconvert=%p\n",
+ S, S->ID, S->convert, S->iconvert);
+ IfTrace2(TRUE," | %12.3f %12.3f |",
+ S->tofract.normal[0][0], S->tofract.normal[0][1]);
+ IfTrace2(TRUE," [ %d %d ]\n", S->itofract[0][0], S->itofract[0][1]);
+ IfTrace2(TRUE," | %12.3f %12.3f |",
+ S->tofract.normal[1][0], S->tofract.normal[1][1]);
+ IfTrace2(TRUE," [ %d %d ]\n", S->itofract[1][0], S->itofract[1][1]);
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.h
new file mode 100644
index 00000000000..7d751f4e8a8
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces.h
@@ -0,0 +1,142 @@
+/* $XConsortium: spaces.h,v 1.3 91/10/10 11:19:22 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#include "types.h"
+
+#define USER t1_User
+#define IDENTITY t1_Identity
+
+#define Context(d,u) t1_Context(d,u)
+#define Transform(o,f1,f2,f3,f4) t1_Transform(o,f1,f2,f3,f4)
+#define Rotate(o,d) t1_Rotate(o,d)
+#define Scale(o,sx,sy) t1_Scale(o,sx,sy)
+#define QuerySpace(S,f1,f2,f3,f4) t1_QuerySpace(S,f1,f2,f3,f4)
+#define Warp(s1,o,s2) t1_Warp(s1,o,s2)
+
+struct XYspace *t1_Context(); /* creates a coordinate space for a device */
+struct xobject *t1_Transform(); /* transform an object */
+struct xobject *t1_Rotate(); /* rotate an object */
+struct xobject *t1_Scale(); /* scale an object */
+struct xobject *t1_Warp(); /* transform like delta of two spaces */
+void t1_QuerySpace(); /* returns coordinate space matrix */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define DeviceResolution t1_DeviceResolution
+#define InitSpaces() t1_InitSpaces()
+#define CopySpace(s) t1_CopySpace(s)
+#define Xform(o,M) t1_Xform(o,M)
+#define UnConvert(S,pt,xp,yp) t1_UnConvert(S,pt,xp,yp)
+#define MatrixMultiply(A,B,C) t1_MMultiply(A,B,C)
+#define MatrixInvert(A,B) t1_MInvert(A,B)
+#define PseudoSpace(S,M) t1_PseudoSpace(S,M)
+#define FindContext(M) t1_FindContext(M)
+
+void t1_InitSpaces(); /* initialize pre-defined coordinate spaces */
+struct XYspace *t1_CopySpace(); /* duplicate a coordinate space */
+struct xobject *t1_Xform(); /* transform object by matrix */
+void t1_UnConvert(); /* return user coordinates from device coordinates */
+void t1_MMultiply(); /* multiply two matrices */
+void t1_MInvert(); /* invert a matrix */
+void t1_PseudoSpace(); /* force a coordinate space from a matrix */
+int t1_FindContext(); /* return the "context" represented by a matrix */
+
+/*END SHARED*/
+/*SHARED*/
+
+/* #define KillSpace(s) Free(s)
+Note - redefined KillSpace() to check references !
+3-26-91 PNM */
+
+#define KillSpace(s) if ( (--(s->references) == 0) ||\
+ ( (s->references == 1) && ISPERMANENT(s->flag) ) )\
+ Free(s)
+
+#define ConsumeSpace(s) MAKECONSUME(s,KillSpace(s))
+#define UniqueSpace(s) MAKEUNIQUE(s,CopySpace(s))
+
+/*END SHARED*/
+/*SHARED*/
+
+typedef SHORT pel; /* integer pel locations */
+typedef LONG fractpel; /* fractional pel locations */
+
+#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */
+/*
+We define the following macros to convert from 'fractpel' to 'pel' and
+vice versa:
+*/
+#define TOFRACTPEL(p) (((fractpel)p)<<FRACTBITS)
+#define FPHALF (1<<(FRACTBITS-1))
+#define NEARESTPEL(fp) (((fp)+FPHALF)>>FRACTBITS)
+#define FRACTFLOAT (DOUBLE)(1L<<FRACTBITS)
+
+/*END SHARED*/
+/*SHARED*/
+
+struct doublematrix {
+ DOUBLE normal[2][2];
+ DOUBLE inverse[2][2];
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+struct XYspace {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = SPACETYPE */
+ int (*convert)(); /* calculate "fractpoint" X,Y from float X,Y */
+ int (*iconvert)(); /* calculate "fractpoint" X,Y from int X,Y */
+ fractpel (*xconvert)(); /* subroutine of convert */
+ fractpel (*yconvert)(); /* subroutine of convert */
+ fractpel (*ixconvert)(); /* subroutine of iconvert */
+ fractpel (*iyconvert)(); /* subroutine of iconvert */
+ int ID; /* unique identifier (used in font caching) */
+ unsigned char context; /* device context of coordinate space */
+ struct doublematrix tofract; /* xform to get to fractional pels */
+ fractpel itofract[2][2]; /* integer version of "tofract.normal" */
+} ;
+
+#define INVALIDID 0 /* no valid space will have this ID */
+
+/*END SHARED*/
+/*SHARED*/
+
+struct fractpoint {
+ fractpel x,y;
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+#define NULLCONTEXT 0
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces_rmz.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces_rmz.h
new file mode 100644
index 00000000000..85b809da393
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/spaces_rmz.h
@@ -0,0 +1,147 @@
+/* $XConsortium: spaces.h,v 1.3 91/10/10 11:19:22 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
+ * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+ * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
+ * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
+ * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
+ * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
+ * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+/*SHARED*/
+
+#include "types.h"
+
+#define USER t1_User
+#define IDENTITY t1_Identity
+
+#define Context(d,u) t1_Context(d,u)
+/*
+#define Transform(o,f1,f2,f3,f4) t1_Transform(o,f1,f2,f3,f4)
+*/
+#define Rotate(o,d) t1_Rotate(o,d)
+/*
+#define Scale(o,sx,sy) t1_Scale(o,sx,sy)
+*/
+#define QuerySpace(S,f1,f2,f3,f4) t1_QuerySpace(S,f1,f2,f3,f4)
+#define Warp(s1,o,s2) t1_Warp(s1,o,s2)
+
+struct XYspace *t1_Context(); /* creates a coordinate space for a device */
+struct xobject *t1_Transform(); /* transform an object */
+struct xobject *t1_Rotate(); /* rotate an object */
+/*
+struct xobject *t1_Scale(); */ /* scale an object */
+struct xobject *t1_Warp(); /* transform like delta of two spaces */
+void t1_QuerySpace(); /* returns coordinate space matrix */
+
+/*END SHARED*/
+/*SHARED*/
+
+#define DeviceResolution t1_DeviceResolution
+#define InitSpaces() t1_InitSpaces()
+#define CopySpace(s) t1_CopySpace(s)
+#define Xform(o,M) t1_Xform(o,M)
+#define UnConvert(S,pt,xp,yp) t1_UnConvert(S,pt,xp,yp)
+#define MatrixMultiply(A,B,C) t1_MMultiply(A,B,C)
+#define MatrixInvert(A,B) t1_MInvert(A,B)
+#define PseudoSpace(S,M) t1_PseudoSpace(S,M)
+#define FindContext(M) t1_FindContext(M)
+
+void t1_InitSpaces(); /* initialize pre-defined coordinate spaces */
+struct XYspace *t1_CopySpace(); /* duplicate a coordinate space */
+struct xobject *t1_Xform(); /* transform object by matrix */
+void t1_UnConvert(); /* return user coordinates from device coordinates */
+void t1_MMultiply(); /* multiply two matrices */
+void t1_MInvert(); /* invert a matrix */
+void t1_PseudoSpace(); /* force a coordinate space from a matrix */
+int t1_FindContext(); /* return the "context" represented by a matrix */
+
+/*END SHARED*/
+/*SHARED*/
+
+/* #define KillSpace(s) Free(s)
+Note - redefined KillSpace() to check references !
+3-26-91 PNM */
+
+#define KillSpace(s) if ( (--(s->references) == 0) ||\
+ ( (s->references == 1) && ISPERMANENT(s->flag) ) )\
+ Free(s)
+
+#define ConsumeSpace(s) MAKECONSUME(s,KillSpace(s))
+#define UniqueSpace(s) MAKEUNIQUE(s,CopySpace(s))
+
+/*END SHARED*/
+/*SHARED*/
+
+typedef SHORT pel; /* integer pel locations */
+typedef LONG fractpel; /* fractional pel locations */
+
+#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */
+/*
+We define the following macros to convert from 'fractpel' to 'pel' and
+vice versa:
+*/
+#define TOFRACTPEL(p) (((fractpel)p)<<FRACTBITS)
+#define FPHALF (1<<(FRACTBITS-1))
+#define NEARESTPEL(fp) (((fp)+FPHALF)>>FRACTBITS)
+#define FRACTFLOAT (DOUBLE)(1L<<FRACTBITS)
+
+/*END SHARED*/
+/*SHARED*/
+
+struct doublematrix {
+ DOUBLE normal[2][2];
+ DOUBLE inverse[2][2];
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+struct XYspace {
+ XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
+ /* type = SPACETYPE */
+ int (*convert)(); /* calculate "fractpoint" X,Y from float X,Y */
+ int (*iconvert)(); /* calculate "fractpoint" X,Y from int X,Y */
+ fractpel (*xconvert)(); /* subroutine of convert */
+ fractpel (*yconvert)(); /* subroutine of convert */
+ fractpel (*ixconvert)(); /* subroutine of iconvert */
+ fractpel (*iyconvert)(); /* subroutine of iconvert */
+ int ID; /* unique identifier (used in font caching) */
+ unsigned char context; /* device context of coordinate space */
+ struct doublematrix tofract; /* xform to get to fractional pels */
+ fractpel itofract[2][2]; /* integer version of "tofract.normal" */
+} ;
+
+#define INVALIDID 0 /* no valid space will have this ID */
+
+/*END SHARED*/
+/*SHARED*/
+
+struct fractpoint {
+ fractpel x,y;
+} ;
+
+/*END SHARED*/
+/*SHARED*/
+
+#define NULLCONTEXT 0
+
+/*END SHARED*/
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/strokes.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/strokes.h
new file mode 100644
index 00000000000..59076329847
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/strokes.h
@@ -0,0 +1,38 @@
+/* $XConsortium: strokes.h,v 1.2 91/10/10 11:19:25 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/*STUB*/
+
+#define CopyLineStyle(s) s
+#define CopyStrokePath(p) p
+#define KillStrokePath(p)
+#define KillLineStyle(s)
+#define CoercePath(sp) sp
+#define DoStroke(sp) sp
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1chardump b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1chardump
new file mode 100644
index 00000000000..40fbd9aa09a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1chardump
@@ -0,0 +1,697 @@
+/*--------------------------------------------------------------------------
+ ----- File: t1chardump
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-03-02
+ ----- Description: This file is part of the t1-library. It contains
+ code responsible for dumping outline data to a
+ PostScript file (used only for debugging.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+fputs( "\
+%!PS-Adobe-2.0 EPSF-1.2\n\
+%%Creator: t1lib\n\
+%%Title: Type1Char Character Dump\n\
+%%Pages: 1\n\
+%%PageOrder: Ascend\n\
+%%BoundingBox: 0 0 596 842\n\
+%%DocumentPaperSizes: a4\n\
+%%EndComments\n\
+%!\n\
+/T1LibDict 100 dict def \n\
+T1LibDict begin\n\
+% Setup the size from the type1 module\n\
+/t1SetupSize {\n\
+ /size exch def\n\
+} def\n\
+\n\
+% Prepare the page. Compute scales and fill the charspace unit square\n\
+% background\n\
+/t1PreparePage {\n\
+\n\
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\
+ %\n\
+ % Start of Customizable Section\n\
+ %\n\
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\
+\n\
+ % Setup a standard linewidth\n\
+ /t1dumpstdlinewidth 1.0 def\n\
+ % Setup a scale for drawing direction arrows\n\
+ /arrowscale 3.0 def\n\
+\n\
+ % Should we draw the device pixel grid? (1=yes, otherwise no)\n\
+ /t1drawgrid 1 def\n\
+ % Should we draw stems? (1=yes, otherwise no)\n\
+ /t1drawstems 1 def\n\
+ % Should we draw alignment zones? (1=yes, otherwise no)\n\
+ /t1drawzones 1 def\n\
+ % Should we fill the charspace unit square? (1=yes, otherwise no)\n\
+ /t1fillunitsquare 1 def\n\
+ % Should we fill the device page? (1=yes, otherwise no)\n\
+ /t1fillpage 1 def\n\
+ % Should we show path segment On-Curve points? (1=yes, otherwise no)\n\
+ /t1showoncurvepoints 1 def\n\
+ % Should we show path segment Off Curve points? (1=yes, otherwise no)\n\
+ /t1showoffcurvepoints 1 def\n\
+ % Should we show Bezier tangets and their defining points? (1=yes, otherwise no)\n\
+ /t1showbeziertangents 1 def\n\
+\n\
+ % Define a few colors\n\
+ /t1linecolor { 0.0 0.0 0.0 } def\n\
+ /t1hlinecolor { 1.0 0.0 0.0 } def\n\
+ /t1slinecolor { 1.0 1.0 1.0 } def\n\
+ /t1movecolor { 0.0 0.0 0.0 } def\n\
+ /t1hmovecolor { 1.0 0.0 0.0 } def\n\
+ /t1smovecolor { 1.0 1.0 1.0 } def\n\
+ /t1curvecolor { 0.0 0.0 0.0 } def\n\
+ /t1hcurvecolor { 1.0 0.0 0.0 } def\n\
+ /t1scurvecolor { 0.0 0.0 1.0 } def\n\
+ /t1sprolongatecolor { 1.0 0.0 1.0 } def\n\
+ /t1stemcolor { 0.0 0.0 1.0 } def\n\
+ /t1alignedstemcolor { 1.0 0.0 1.0 } def\n\
+ /t1bottomzonecolor { 1.0 1.0 0.0 } def\n\
+ /t1topzonecolor { 1.0 1.0 0.0 } def\n\
+ /t1arrowcolor { 0.0 0.0 0.0 } def\n\
+ /t1harrowcolor { 1.0 0.0 0.0 } def\n\
+ /t1sarrowcolor { 0.0 0.0 1.0 } def\n\
+ /t1sbwcolor { 0.0 0.0 0.0 } def\n\
+ /t1closepathcolor { 0.0 0.0 0.0 } def\n\
+ /t1hclosepathcolor { 1.0 0.0 0.0 } def\n\
+ /t1sclosepathcolor { 0.0 0.0 1.0 } def\n\
+ /t1pagecolor { 0.7 0.7 0.7 } def\n\
+ /t1unitsquarecolor { 0.4 0.4 0.4 } def\n\
+ /t1gridcolor { 0.0 0.0 0.0 } def\n\
+\n\
+ % Line scale relative to the standard linewidth
+ /t1linescale 0.4 def\n\
+ /t1hlinescale 0.4 def\n\
+ /t1slinescale 0.4 def\n\
+ /t1movescale 0.4 def\n\
+ /t1hmovescale 0.4 def\n\
+ /t1smovescale 0.4 def\n\
+ /t1curvescale 0.4 def\n\
+ /t1hcurvescale 0.4 def\n\
+ /t1scurvescale 0.4 def\n\
+ /t1curvetangentscale 0.5 def\n\
+ /t1sprolongatescale 0.4 def\n\
+ /t1stemscale 0.5 def\n\
+ /t1alignedstemscale 0.5 def\n\
+ /t1bottomzonescale 0.5 def\n\
+ /t1topzonescale 0.5 def\n\
+ /t1closepathscale 0.4 def\n\
+ /t1hclosepathscale 0.4 def\n\
+ /t1sclosepathscale 0.4 def\n\
+ /t1gridscale 0.5 def\n\
+\n\
+ % Line dash specifications (stems and zones are not configurable!)
+ /t1linedash { [] 0 } def\n\
+ /t1hlinedash { [] 0 } def\n\
+ /t1slinedash { [] 0 } def\n\
+ /t1movedash { [2 2] 0 } def\n\
+ /t1hmovedash { [2 2] 0 } def\n\
+ /t1smovedash { [2 2] 0 } def\n\
+ /t1curvedash { [] 0 } def\n\
+ /t1hcurvedash { [] 0 } def\n\
+ /t1scurvedash { [] 0 } def\n\
+ /t1sprolongatedash { [1 1] 0 }def\n\
+ /t1closepathdash { [] 0 } def\n\
+ /t1hclosepathdash { [] 0 } def\n\
+ /t1sclosepathdash { [] 0 } def\n\
+ /t1griddash { [3 3] 0 } def\n\
+\n\
+ % Define a clipping rectangle ROI (in charspace coordinates)\n\
+ /t1ROIxmin -200 def\n\
+ /t1ROIxmax 1200 def\n\
+ /t1ROIymin -500 def\n\
+ /t1ROIymax 1200 def\n\
+\n\
+ % Device values (in bp). These must match the Bounding Box Statement!\n\
+ /xmindev 0 neg def\n\
+ /xmaxdev 596 def\n\
+ /ymindev 0 neg def\n\
+ /ymaxdev 842 def\n\
+ /dxdev 1 def\n\
+ /dydev 1 def\n\
+\n\
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\
+ %\n\
+ % End of Customizable Section\n\
+ %\n\
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\
+\n\
+ % logical pixel values\n\
+ /xminpixel t1ROIxmin 1000.0 div size mul def\n\
+ /xmaxpixel t1ROIxmax 1000.0 div size mul def\n\
+ /yminpixel t1ROIymin 1000.0 div size mul def\n\
+ /ymaxpixel t1ROIymax 1000.0 div size mul def\n\
+ /dxpixel 1 def\n\
+ /dypixel 1 def\n\
+\n\
+ % compute scales and set minimum scale\n\
+ /scalex xmaxdev xmindev sub xmaxpixel xminpixel sub div def\n\
+ /scaley ymaxdev ymindev sub ymaxpixel yminpixel sub div def\n\
+ scalex scaley gt { /scale scaley def } { /scale scalex def } ifelse\n\
+\n\
+ % Fill device page\n\
+ xmindev ymindev moveto\n\
+ xmaxdev 0 rlineto\n\
+ 0 ymaxdev rlineto\n\
+ xmaxdev neg 0 rlineto\n\
+ 0 ymaxdev neg rlineto\n\
+ closepath\n\
+ clip\n\
+ t1fillpage 1 eq\n\
+ {\n\
+ t1pagecolor setrgbcolor\n\
+ fill\n\
+ } if\n\
+\n\
+ % reassign device values\n\
+ /xmindev xminpixel scale mul def\n\
+ /xmaxdev xmaxpixel scale mul def\n\
+ /ymindev yminpixel scale mul def\n\
+ /ymaxdev ymaxpixel scale mul def\n\
+ /dxdev dxpixel scale mul def\n\
+ /dydev dypixel scale mul def\n\
+\n\
+ % translate coordinate system \n\
+ xminpixel scale mul neg yminpixel scale mul neg translate\n\
+ \n\
+ % Fill unit square of charspace coordinate system \n\
+ t1fillunitsquare 1 eq\n\
+ {\n\
+ t1unitsquarecolor setrgbcolor\n\
+ 0 0 moveto\n\
+ size scale mul 0 rlineto\n\
+ 0 size scale mul rlineto\n\
+ size scale mul neg 0 rlineto\n\
+ 0 size scale mul neg rlineto\n\
+ closepath fill\n\
+ } if\n\
+} def\n\
+\n\
+/t1FinishPage {\n\
+ t1drawgrid 1 eq\n\
+ {\n\
+ t1gridcolor setrgbcolor\n\
+ t1gridscale setlinewidth\n\
+ t1griddash setdash\n\
+ % draw grid and align to the point (0,0)\n\
+ 0 dxdev xmaxdev {\n\
+ /xval exch def\n\
+ xval ymindev moveto\n\
+ xval ymaxdev lineto\n\
+ stroke\n\
+ } for\n\
+ 0 dxdev neg xmindev {\n\
+ /xval exch def\n\
+ xval ymindev moveto\n\
+ xval ymaxdev lineto\n\
+ stroke\n\
+ } for\n\
+ 0 dydev ymaxdev {\n\
+ /yval exch def\n\
+ xmindev yval moveto\n\
+ xmaxdev yval lineto\n\
+ stroke\n\
+ } for\n\
+ 0 dydev neg ymindev {\n\
+ /yval exch def\n\
+ xmindev yval moveto\n\
+ xmaxdev yval lineto\n\
+ stroke\n\
+ } for\n\
+ } if\n\
+} def\n\
+\n\
+% Define three arrow routines available for later providing the output with directions\n\
+/t1arrowhead {\n\
+ /tmpy exch def\n\
+ /tmpx exch def\n\
+ gsave\n\
+ t1arrowcolor setrgbcolor\n\
+ currx curry translate\n\
+ tmpy tmpx atan rotate\n\
+ newpath\n\
+ 0 0 moveto\n\
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto\n\
+ closepath\n\
+ fill\n\
+ grestore\n\
+ tmpx\n\
+ tmpy\n\
+} def\n\
+/t1harrowhead {\n\
+ /tmpy exch def\n\
+ /tmpx exch def\n\
+ gsave\n\
+ t1harrowcolor setrgbcolor\n\
+ currhx currhy translate\n\
+ tmpy tmpx atan rotate\n\
+ newpath\n\
+ 0 0 moveto\n\
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto\n\
+ closepath\n\
+ fill\n\
+ grestore\n\
+ tmpx\n\
+ tmpy\n\
+} def\n\
+/t1sarrowhead {\n\
+ /tmpy exch def\n\
+ /tmpx exch def\n\
+ gsave\n\
+ t1sarrowcolor setrgbcolor\n\
+ currsx currsy translate\n\
+ tmpy tmpx atan rotate\n\
+ newpath\n\
+ 0 0 moveto\n\
+ 0 2 arrowscale currentlinewidth neg mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul 2 arrowscale currentlinewidth mul mul rlineto\n\
+ 6 arrowscale currentlinewidth mul mul neg 2 arrowscale currentlinewidth mul mul rlineto\n\
+ closepath\n\
+ fill\n\
+ grestore\n\
+ tmpx\n\
+ tmpy\n\
+} def\n\
+\n\
+/t1rlineto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1linecolor setrgbcolor\n\
+ t1linedash setdash\n\
+ t1linescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currx curry moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currx currx x2 add def\n\
+ /curry curry y2 add def\n\
+} def\n\
+\n\
+/t1srlineto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1slinecolor setrgbcolor\n\
+ t1slinedash setdash\n\
+ t1slinescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currsx currsy moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currsx currsx x2 add def\n\
+ /currsy currsy y2 add def\n\
+} def\n\
+\n\
+/t1sprolongate {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1sprolongatecolor setrgbcolor\n\
+ t1sprolongatedash setdash\n\
+ t1sprolongatescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currsx currsy moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currsx currsx x2 add def\n\
+ /currsy currsy y2 add def\n\
+} def\n\
+\n\
+/t1hintedrlineto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1hlinecolor setrgbcolor\n\
+ t1hlinedash setdash\n\
+ t1hlinescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currhx currhy moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currhx currhx x2 add def\n\
+ /currhy currhy y2 add def\n\
+} def\n\
+\n\
+/t1rmoveto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1movecolor setrgbcolor\n\
+ t1movedash setdash\n\
+ t1movescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currx x2 add curry y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currx curry moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currx currx x2 add def\n\
+ /curry curry y2 add def\n\
+ /startx currx def\n\
+ /starty curry def\n\
+} def\n\
+\n\
+/t1srmoveto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1smovecolor setrgbcolor\n\
+ t1smovedash setdash\n\
+ t1smovescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currsx x2 add currsy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currsx currsy moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currsx currsx x2 add def\n\
+ /currsy currsy y2 add def\n\
+ /startsx currsx def\n\
+ /startsy currsy def\n\
+} def\n\
+\n\
+/t1hintedrmoveto {\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1hmovecolor setrgbcolor\n\
+ t1hmovedash setdash\n\
+ t1hmovescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currhx x2 add currhy y2 add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ currhx currhy moveto\n\
+ x2 y2 rlineto\n\
+ stroke\n\
+ /currhx currhx x2 add def\n\
+ /currhy currhy y2 add def\n\
+ /starthx currhx def\n\
+ /starthy currhy def\n\
+} def\n\
+\n\
+/t1rrcurveto {\n\
+ /y4 exch scale mul def\n\
+ /x4 exch scale mul def\n\
+ /y3 exch scale mul def\n\
+ /x3 exch scale mul def\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1curvecolor setrgbcolor\n\
+ t1curvedash setdash\n\
+ t1curvescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoffcurvepoints 1 eq\n\
+ {\n
+ newpath currx x2 add curry y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ newpath currx x2 x3 add add curry y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currx x2 x3 x4 add add add curry y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showbeziertangents 1 eq\n\
+ {\n\
+ [2 2] 0 setdash\n\
+ t1curvetangentscale currentlinewidth mul setlinewidth\n\
+ currx curry moveto\n\
+ currx x2 add curry y2 add lineto\n\
+ stroke\n\
+ currx x2 x3 add add curry y2 y3 add add moveto\n\
+ currx x2 x3 x4 add add add curry y2 y3 y4 add add add lineto\n\
+ stroke\n\
+ } if\n\
+ t1curvedash setdash\n\
+ t1curvescale t1dumpstdlinewidth mul setlinewidth\n\
+ currx curry moveto\n\
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto\n\
+ stroke\n\
+ /currx currx x2 x3 x4 add add add def\n\
+ /curry curry y2 y3 y4 add add add def\n\
+} def\n\
+\n\
+/t1srrcurveto {\n\
+ /y4 exch scale mul def\n\
+ /x4 exch scale mul def\n\
+ /y3 exch scale mul def\n\
+ /x3 exch scale mul def\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1scurvecolor setrgbcolor\n\
+ t1scurvedash setdash\n\
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoffcurvepoints 1 eq\n\
+ {\n\
+ newpath currsx x2 add currsy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ newpath currsx x2 x3 add add currsy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showbeziertangents 1 eq\n\
+ {\n\
+ [2 2] 0 setdash\n\
+ t1curvetangentscale currentlinewidth mul setlinewidth\n\
+ currsx currsy moveto\n\
+ currsx x2 add currsy y2 add lineto\n\
+ stroke\n\
+ currsx x2 x3 add add currsy y2 y3 add add moveto\n\
+ currsx x2 x3 x4 add add add currsy y2 y3 y4 add add add lineto\n\
+ stroke\n\
+ } if\n\
+ t1scurvedash setdash\n\
+ t1scurvescale t1dumpstdlinewidth mul setlinewidth\n\
+ currsx currsy moveto\n\
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto\n\
+ stroke\n\
+ /currsx currsx x2 x3 x4 add add add def\n\
+ /currsy currsy y2 y3 y4 add add add def\n\
+} def\n\
+\n\
+/t1hintedrrcurveto {\n\
+ /y4 exch scale mul def\n\
+ /x4 exch scale mul def\n\
+ /y3 exch scale mul def\n\
+ /x3 exch scale mul def\n\
+ /y2 exch scale mul def\n\
+ /x2 exch scale mul def\n\
+ t1hcurvecolor setrgbcolor\n\
+ t1hcurvedash setdash\n\
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currhx x2 add currhy y2 add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ newpath currhx x2 x3 add add currhy y2 y3 add add 1.0 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showoncurvepoints 1 eq\n\
+ {\n\
+ newpath currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add 1.5 currentlinewidth mul 0 360 arc closepath fill\n\
+ } if\n\
+ t1showbeziertangents 1 eq\n\
+ {\n\
+ [2 2] 0 setdash\n\
+ t1curvetangentscale currentlinewidth mul setlinewidth\n\
+ currhx currhy moveto\n\
+ currhx x2 add currhy y2 add lineto\n\
+ stroke\n\
+ currhx x2 x3 add add currhy y2 y3 add add moveto\n\
+ currhx x2 x3 x4 add add add currhy y2 y3 y4 add add add lineto\n\
+ stroke\n\
+ } if\n\
+ t1hcurvedash setdash\n\
+ t1hcurvescale t1dumpstdlinewidth mul setlinewidth\n\
+ currhx currhy moveto\n\
+ x2 y2 x2 x3 add y2 y3 add x2 x3 x4 add add y2 y3 y4 add add rcurveto\n\
+ stroke\n\
+ /currhx currhx x2 x3 x4 add add add def\n\
+ /currhy currhy y2 y3 y4 add add add def\n\
+} def\n\
+\n\
+/t1sbw {\n\
+ /wy exch scale mul def\n\
+ /wx exch scale mul def\n\
+ /sby exch scale mul def\n\
+ /sbx exch scale mul def\n\
+ t1sbwcolor setrgbcolor\n\
+ newpath sbx sby 3 0 360 arc closepath fill\n\
+ newpath wx wy 3 0 360 arc closepath fill\n\
+ /currx sbx def\n\
+ /curry sby def\n\
+ /currhx sbx def\n\
+ /currhy sby def\n\
+ /currsx sbx def\n\
+ /currsy sby def\n\
+} def\n\
+\n\
+/t1closepath {\n\
+ t1closepathdash setdash\n\
+ t1closepathscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1closepathcolor setrgbcolor\n\
+ currx curry moveto\n\
+ startx starty lineto\n\
+ stroke\n\
+} def\n\
+\n\
+/t1sclosepath {\n\
+ t1sclosepathdash setdash\n\
+ t1sclosepathscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1sclosepathcolor setrgbcolor\n\
+ currsx currsy moveto\n\
+ startsx startsy lineto\n\
+ stroke\n\
+} def\n\
+\n\
+/t1hintedclosepath {\n\
+ t1hclosepathdash setdash\n\
+ t1hclosepathscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1hclosepathcolor setrgbcolor\n\
+ currhx currhy moveto\n\
+ starthx starthy lineto\n\
+ stroke\n\
+} def\n\
+\n\
+/t1vstem {\n\
+ t1drawstems 1 eq\n\
+ {\n\
+ /stemwidth exch scale mul def\n\
+ /stemstart exch scale mul def\n\
+ t1stemscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1stemcolor setrgbcolor\n\
+ [] 0 setdash\n\
+ stemstart ymindev moveto\n\
+ stemstart ymaxdev lineto\n\
+ stroke\n\
+ [2 2] 0 setdash\n\
+ stemwidth stemstart add ymindev moveto\n\
+ stemwidth stemstart add ymaxdev lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+/t1alignedvstem {\n\
+ t1drawstems 1 eq\n\
+ {\n\
+ /stemwidth exch scale mul def\n\
+ /stemstart exch scale mul def\n\
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1alignedstemcolor setrgbcolor\n\
+ [] 0 setdash\n\
+ stemstart ymindev moveto\n\
+ stemstart ymaxdev lineto\n\
+ stroke\n\
+ [2 2] 0 setdash\n\
+ stemwidth stemstart add ymindev moveto\n\
+ stemwidth stemstart add ymaxdev lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+/t1hstem {\n\
+ t1drawstems 1 eq\n\
+ {\n\
+ /stemwidth exch scale mul def\n\
+ /stemstart exch scale mul def\n\
+ t1stemscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1stemcolor setrgbcolor\n\
+ [] 0 setdash\n\
+ xmindev stemstart moveto\n\
+ xmaxdev stemstart lineto\n\
+ stroke\n\
+ [2 2] 0 setdash\n\
+ xmindev stemwidth stemstart add moveto\n\
+ xmaxdev stemwidth stemstart add lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+/t1alignedhstem {\n\
+ t1drawstems 1 eq\n\
+ {\n\
+ /stemwidth exch scale mul def\n\
+ /stemstart exch scale mul def\n\
+ t1alignedstemscale t1dumpstdlinewidth mul setlinewidth\n\
+ t1alignedstemcolor setrgbcolor\n\
+ [] 0 setdash\n\
+ xmindev stemstart moveto\n\
+ xmaxdev stemstart lineto\n\
+ stroke\n\
+ [2 2] 0 setdash\n\
+ xmindev stemwidth stemstart add moveto\n\
+ xmaxdev stemwidth stemstart add lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+/t1bottomzone {\n\
+ t1drawzones 1 eq\n\
+ {\n\
+ /bottom exch scale mul def\n\
+ /top exch scale mul def\n\
+ t1bottomzonescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1bottomzonecolor setrgbcolor\n\
+ [] 0 setdash\n\
+ xmindev bottom moveto\n\
+ xmaxdev bottom lineto\n\
+ stroke\n\
+ [2 2] 0 setdash\n\
+ xmindev top moveto\n\
+ xmaxdev top lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+/t1topzone {\n\
+ t1drawzones 1 eq\n\
+ {\n\
+ /bottom exch scale mul def\n\
+ /top exch scale mul def\n\
+ t1topzonescale t1dumpstdlinewidth mul setlinewidth\n\
+ t1topzonecolor setrgbcolor\n\
+ [2 2] 0 setdash\n\
+ xmindev bottom moveto\n\
+ xmaxdev bottom lineto\n\
+ stroke\n\
+ [] 0 setdash\n\
+ xmindev top moveto\n\
+ xmaxdev top lineto\n\
+ stroke\n\
+ } if\n\
+} def\n\
+\n\
+end\n\
+\n\
+% Next follows drawing code from charstring commands:\n", fp);
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1hdigit.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1hdigit.h
new file mode 100644
index 00000000000..9979ef55ceb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1hdigit.h
@@ -0,0 +1,40 @@
+/* $XConsortium: t1hdigit.h,v 1.2 91/10/10 11:19:31 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Indicators for special characters in the p_hdigit.h tables */
+#define HERROR (0xfe)
+#define HWHITE_SPACE (0xfd)
+#define HRIGHT_ANGLE (0xfc)
+#define LAST_HDIGIT (0xf0)
+
+/* Declarations for the tables */
+#define HighHexP (HighHex+1)
+extern unsigned char HighHex[];
+#define LowHexP (LowHex+1)
+extern unsigned char LowHex[];
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1imager.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1imager.h
new file mode 100644
index 00000000000..2761493e9ed
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1imager.h
@@ -0,0 +1,151 @@
+/* $XConsortium: t1imager.h,v 1.5 92/03/20 14:36:05 keith Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#include "types.h"
+#include "fontmisc.h"
+
+typedef pointer xobject;
+typedef pointer location;
+typedef pointer path;
+typedef pointer region;
+/* typedef pointer XYspace; */
+
+#ifndef NOEXTERNS
+/*
+The following are the user entry locations to TYPE1IMAGER
+*/
+extern path t1_Bezier();
+extern path t1_ClosePath();
+extern xobject t1_Destroy();
+extern xobject t1_Dup();
+extern char *t1_ErrorMsg();
+extern void t1_InitImager();
+extern region t1_Interior();
+extern location t1_ILoc();
+extern xobject t1_Join();
+extern path t1_Line();
+extern xobject t1_Permanent();
+extern path t1_Phantom();
+extern location t1_Loc();
+extern xobject t1_Scale();
+extern xobject t1_Snap();
+extern location t1_SubLoc();
+extern xobject t1_Temporary();
+
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+/*
+Here are some TYPE1IMAGER functions that are defined in terms of others:
+*/
+
+#define t1_AddLoc(p1,p2) t1_Join(p1,p2)
+
+#ifndef NONAMES
+/*
+Define the simple form of all the subroutine names:
+*/
+#define AddLoc(p1,p2) t1_AddLoc(p1,p2)
+#define Bezier(B,C,D) t1_Bezier(B,C,D)
+#define ClosePath(p) t1_ClosePath(p,0)
+#define Complement(area) t1_Complement(area)
+#define Destroy(o) t1_Destroy(o)
+#define Dup(o) t1_Dup(o)
+#define ErrorMsg() t1_ErrorMsg()
+#define HeadSegment(p) t1_HeadSegment(p)
+#define InitImager() t1_InitImager()
+#define Interior(p,rule) t1_Interior(p,rule)
+#define ILoc(S,x,y) t1_ILoc(S,x,y)
+#define Join(p1,p2) t1_Join(p1,p2)
+#define Line(P) t1_Line(P)
+#define Permanent(o) t1_Permanent(o)
+#define Phantom(o) t1_Phantom(o)
+#define Loc(S,x,y) t1_Loc(S,(DOUBLE)x,(DOUBLE)y)
+#define Scale(o,sx,sy) t1_Scale(o,(DOUBLE)sx,(DOUBLE)sy)
+#define Snap(o) t1_Snap(o)
+#define SubLoc(a,b) t1_SubLoc(a,b)
+#define Temporary(o) t1_Temporary(o)
+#define TermImager() t1_TermImager()
+#define Transform(o,cxx,cyx,cxy,cyy) t1_Transform(o,(DOUBLE)cxx,(DOUBLE)cyx,\
+ (DOUBLE)cxy,(DOUBLE)cyy)
+
+#endif
+
+#define WINDINGRULE -2
+#define EVENODDRULE -3
+
+#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */
+
+/*
+Stroke() line style constants:
+*/
+
+/*
+Coordinate space constants:
+*/
+ /*
+#define IDENTITY t1_Identity
+extern XYspace *IDENTITY;
+*/
+/*
+Generic null object definition:
+*/
+#define NULLOBJECT ((xobject)NULL)
+
+/*
+Null path definition:
+*/
+#define NULLPATH NULLOBJECT
+
+/*
+Full page and null region definition:
+*/
+#ifndef NOEXTERNS
+extern region *t1_Infinity;
+#endif
+#define NULLREGION NULLOBJECT
+
+#define FF_PARSE_ERROR 2 /* Previously 5 */
+#define FF_PATH_ERROR 1 /* Changed from FF_PATH */
+#define FF_PATH 33 /* Some arbitrary value */
+
+extern pointer xiStub();
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1intf.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1intf.h
new file mode 100644
index 00000000000..21eb910d2ad
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1intf.h
@@ -0,0 +1,36 @@
+/* $XConsortium: t1intf.h,v 1.2 91/10/10 11:19:39 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#define FIRSTCOL 0
+
+struct type1font {
+ CharInfoPtr pDefault;
+ CharInfoRec glyphs[256-FIRSTCOL];
+};
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1io.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1io.c
new file mode 100644
index 00000000000..079327fe0bb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1io.c
@@ -0,0 +1,641 @@
+/* $XConsortium: t1io.c,v 1.4 91/10/10 11:19:41 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Carol H. Thompson IBM Almaden Research Center
+ */
+/*******************************************************************
+* I/O package for Type 1 font reading
+********************************************************************/
+
+#ifndef STATIC
+#define STATIC static
+#endif
+
+#if defined(_MSC_VER)
+# include <io.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif
+#include <stdio.h>
+#include <fcntl.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include "t1stdio.h"
+#include "t1hdigit.h"
+
+/* we define this to switch to decrypt-debugging mode. The stream of
+ decrypted bytes will be written to stdout! This contains binary
+ charstring data */
+/* #define DEBUG_DECRYPTION */
+/* #define DEBUG_PFB_BLOCKS */
+
+/* Constants and variables used in the decryption */
+#define c1 ((unsigned short)52845)
+#define c2 ((unsigned short)22719)
+static unsigned short r;
+static int asc, Decrypt;
+static int extrach;
+static int haveextrach;
+
+static int starthex80=0;
+static long pfbblocklen=0;
+static long accu=0;
+static unsigned long bytecnt=0;
+static int eexec_startOK=0;
+static int eexec_endOK=0;
+static int in_eexec=0;
+
+
+/* Our single FILE structure and buffer for this package */
+STATIC F_FILE TheFile;
+STATIC unsigned char TheBuffer[F_BUFSIZ];
+
+/* Our routines */
+F_FILE *T1Open(), *T1eexec();
+int T1Close(F_FILE *);
+int T1Read(), T1Getc(F_FILE *), T1Ungetc(int,F_FILE *);
+void T1io_reset(void);
+STATIC int T1Decrypt(), T1Fill();
+
+/* -------------------------------------------------------------- */
+/*ARGSUSED*/
+F_FILE *T1Open(fn, mode)
+ char *fn; /* Pointer to filename */
+ char *mode; /* Pointer to open mode string */
+{
+ F_FILE *of = &TheFile;
+ char c;
+
+
+ Decrypt = 0;
+ eexec_startOK=0;
+ eexec_endOK=0;
+
+#ifndef O_BINARY
+# define O_BINARY 0x0
+#endif
+
+ /* We know we are only reading */
+ if ((of->fd=open(fn, O_RDONLY | O_BINARY)) < 0) return NULL;
+
+ /* We check for pfa/pfb file */
+ if (read( of->fd, &c, 1)!=1) {
+ close( of->fd);
+ return(NULL);
+ }
+ else
+ if (c==(char)0x80){
+ starthex80=1;
+ }
+ lseek( of->fd, 0, SEEK_SET);
+
+ /* Initialize the buffer information of our file descriptor */
+ of->b_base = TheBuffer;
+ of->b_size = F_BUFSIZ;
+ of->b_ptr = NULL;
+ of->b_cnt = 0;
+ of->flags = 0;
+ of->error = 0;
+ haveextrach = 0;
+ return &TheFile;
+} /* end Open */
+
+/* -------------------------------------------------------------- */
+int T1Getc(f) /* Read one character */
+ F_FILE *f; /* Stream descriptor */
+{
+ if (f->b_base == NULL) return EOF; /* already closed */
+
+ if (f->flags & UNGOTTENC) { /* there is an ungotten c */
+ f->flags &= ~UNGOTTENC;
+ return (int) f->ungotc;
+ }
+
+ if (f->b_cnt == 0) /* Buffer needs to be (re)filled */
+ f->b_cnt = T1Fill(f);
+ if (f->b_cnt > 0) return (f->b_cnt--, (int) *(f->b_ptr++));
+ else {
+ f->flags |= FIOEOF;
+ return EOF;
+ }
+} /* end Getc */
+
+/* This function is added by RMz:
+ T1Gets(): Read a line of the file and save it to string. At most,
+ (size-1) bytes are read. The user *must* ensure (by making size large
+ enough) that "eexec" does not get split between two calls because
+ in this case, eexec-decryption does not set in.
+ ------------------------------------------------------------ */
+int T1Gets(char *string,
+ int size,
+ F_FILE *f) /* Read a line */
+{
+ int i=0;
+ char *eexecP;
+
+ if (string == NULL) {
+ return( i);
+ }
+ if (f->b_base == NULL)
+ return( i); /* already closed */
+ if (size<2) /* no bytes to be read. For size = 1 we only had
+ room for the \0-character. */
+ return( i);
+
+ if (f->flags & UNGOTTENC) { /* there is an ungotten c */
+ f->flags &= ~UNGOTTENC;
+ string[i++]=f->ungotc;
+ size--;
+ }
+
+ size--; /* we have to leave room for one \0-character */
+
+ while ( size>0) {
+ if (f->b_cnt == 0) { /* Buffer needs to be (re)filled */
+ f->b_cnt = T1Fill(f);
+ }
+ if (f->b_cnt == 0) { /* no more bytes available. Put \0-char
+ and return. */
+ if ( i==0) { /* we did not already store one single char to string */
+ f->flags |= FIOEOF;
+ return( i);
+ }
+ else {
+ f->flags |= FIOEOF;
+ string[i]='\0';
+ return( i);
+ }
+ }
+
+ /* do not skip white space as required by Adobe spec, because
+ I have found fonts where the first encrypted byte was of
+ white space type. */
+ if ( (eexec_startOK==1) && (eexec_endOK==1)) {
+ T1eexec( f);
+ eexec_startOK=0;
+ eexec_endOK=0;
+ in_eexec=1;
+ /* we are now in the encrypted portion. */
+ }
+ string[i]=*(f->b_ptr);
+
+ /* Check whether eexec appears in the string just setup */
+ if ( (Decrypt==0) &&
+ ((eexecP=strstr( string, "eexec"))!=NULL) ) {
+ /* if eexec is an isolated token, start decryption */
+ if ( (eexec_startOK==1) &&
+ (isspace( (int)string[i])!=0) ) {
+ eexec_endOK=1;
+ }
+ if ( (eexec_startOK==0) &&
+ (isspace( (int)string[i-5])!=0) ) {
+ eexec_startOK=1;
+ }
+ }
+ i++;
+ /* Under UNIX, '\n' is the accepted newline. For pfb-files it is also
+ common to use '\r' as the newline indicator. I have, however, never
+ seen a pfb-file which uses the sequence '\r''\n' as a newline
+ indicator, as known from DOS. So we don't take care for this case
+ and simply map both single characters \r and \n into \n. Of course,
+ this can only be done in the ASCII section of the font.
+
+ 2002-10-26: Well, life life is teaching me better: There *are* fonts
+ out there, ASCII encoded pfa's, that use the crappy DOSian 0x0d 0x0a
+ sequence as line separation. In order to make it still work, we absorb
+ the byte 0x0a. Failure to do so result in decryption failure. The
+ workaround is implemented T1eexec():
+
+ */
+ if ( *(f->b_ptr)=='\n' || *(f->b_ptr)=='\r') {
+ if (in_eexec==0)
+ string[i-1]='\n';
+ string[i]='\0';
+ f->b_cnt--;
+ f->b_ptr++;
+ return( i);
+ }
+
+ f->b_cnt--;
+ f->b_ptr++;
+ size--;
+ } /* end of while (size>0) */
+
+ string[i]='\0'; /* finish string */
+ return( i);
+
+} /* end of T1Gets() */
+
+
+
+int T1GetDecrypt( void)
+{
+ return( in_eexec);
+}
+
+
+/* Return the optional contents after the final cleartomark token.
+ There might appear some PostScript code which is not important
+ for t1lib, but which becomes important if subsetted fonts are
+ embedded in PostScript files. */
+int T1GetTrailer(char *string,
+ int size,
+ F_FILE *f)
+{
+ unsigned long off_save;
+ char *buf;
+ char *ctmP;
+ int i=0, j;
+ int datasize;
+ int len;
+
+ datasize=size;
+
+ off_save=lseek( f->fd, 0, SEEK_CUR);
+ if ((buf=(char *)malloc( size+1))==NULL ) {
+ return( -1);
+ }
+ lseek( f->fd, -size, SEEK_END);
+ read(f->fd, buf, size);
+ buf[size]='\0'; /* to be ablo perform a strstr() on this memory */
+
+ i=datasize;
+ j=datasize-11; /* length of "cleartomark" plus terminating white
+ space or newline */
+
+ while ((j--)>-1) {
+ if ((unsigned char)buf[i]==0x80) {
+ datasize=i; /* we skip the segment marker of pfb-files */
+ }
+ if ((ctmP=strstr( &(buf[j]), "cleartomark"))!=NULL) {
+ /* buf[i-1] now is the first character after cleartomark. Advance now
+ to the next non white character of EOF. */
+ len = datasize - i;
+ while ( (isspace( (int)(buf[i-1])) != 0) &&
+ (i < datasize) ) {
+ ++i;
+ }
+ memcpy( string, &(buf[i-1]), len);
+ string[len]='\0';
+ lseek( f->fd, off_save, SEEK_SET);
+ free( buf);
+ return len;
+ }
+ i--;
+ }
+ lseek( f->fd, off_save, SEEK_SET);
+ free( buf);
+ return( -1);
+}
+
+
+
+unsigned long T1GetFileSize( F_FILE *f)
+{
+ unsigned long off_save;
+ unsigned long filesize;
+
+ off_save=lseek( f->fd, 0, SEEK_CUR);
+ filesize=lseek( f->fd, 0, SEEK_END);
+ lseek( f->fd, off_save, SEEK_SET);
+ return( filesize);
+}
+
+
+
+/* -------------------------------------------------------------- */
+int T1Ungetc(c, f) /* Put back one character */
+ int c;
+ F_FILE *f; /* Stream descriptor */
+{
+ if (c != EOF) {
+ f->ungotc = c;
+ f->flags |= UNGOTTENC; /* set flag */
+ f->flags &= ~FIOEOF; /* reset EOF */
+ }
+ return c;
+} /* end Ungetc */
+
+/* -------------------------------------------------------------- */
+int T1Read(buffP, size, n, f) /* Read n items into caller's buffer */
+ char *buffP; /* Buffer to be filled */
+ int size; /* Size of each item */
+ int n; /* Number of items to read */
+ F_FILE *f; /* Stream descriptor */
+{
+ int bytelen, cnt, i;
+ F_char *p = (F_char *)buffP;
+ int icnt; /* Number of characters to read */
+
+ if (f->b_base == NULL) return 0; /* closed */
+ icnt = (size!=1)?n*size:n; /* Number of bytes we want */
+
+ if (f->flags & UNGOTTENC) { /* there is an ungotten c */
+ f->flags &= ~UNGOTTENC;
+ *(p++) = f->ungotc;
+ icnt--; bytelen = 1;
+ }
+ else bytelen = 0;
+
+ while (icnt > 0) {
+ /* First use any bytes we have buffered in the stream buffer */
+ if ((cnt=f->b_cnt) > 0) {
+ if (cnt > icnt) cnt = icnt;
+ for (i=0; i<cnt; i++) *(p++) = *(f->b_ptr++);
+ f->b_cnt -= cnt;
+ icnt -= cnt;
+ bytelen += cnt;
+ }
+
+ if ((icnt == 0) || (f->flags & FIOEOF)) break;
+
+ f->b_cnt = T1Fill(f);
+ }
+ return ((size!=1)?bytelen/size:bytelen);
+} /* end Read */
+
+/* -------------------------------------------------------------- */
+int T1Close(f) /* Close the file */
+ F_FILE *f; /* Stream descriptor */
+{
+ if (f->b_base == NULL) return 0; /* already closed */
+ f->b_base = NULL; /* no valid stream */
+ return close(f->fd);
+} /* end Close */
+
+
+/* -------------------------------------------------------------- */
+F_FILE *T1eexec(f) /* Initialization */
+ F_FILE *f; /* Stream descriptor */
+{
+ int i;
+ int H;
+
+ unsigned char *p;
+ int testchar;
+ unsigned char randomP[8];
+
+ r = 55665; /* initial key */
+ asc = 1; /* indicate ASCII form */
+
+#ifdef DEBUG_DECRYPTION
+ printf("T1eexec(1): first 20 bytes=%.20s, b_cnt=%d\n", f->b_ptr, f->b_cnt);
+#endif
+
+ /* As the very first action we check the first byte against 0x0a.
+ This mmight happen in context with the T1gets() function for
+ pfa files that use DOSian linefeed style. If that character appears
+ here, we absorb it (see also T1Gets()!).
+ */
+ if ( ( testchar = T1Getc( f)) != 0x0a )
+ T1Ungetc( testchar, f);
+
+ /* Consume the 4 random bytes, determining if we are also to
+ ASCIIDecodeHex as we process our input. (See pages 63-64
+ of the Adobe Type 1 Font Format book.) */
+
+ /* Skipping over initial white space chars has been removed since
+ it could lead to unprocessable pfb-fonts if accindentally the
+ first cipher text byte was of the class HWHITE_SPACE.
+ Instead, we just read ahead, this should suffice for any
+ Type 1 font program. (RMz, 08/02/1998) */
+
+ /* If ASCII, the next 7 chars are guaranteed consecutive */
+ randomP[0] = getc(f); /* store first non white space char */
+ fread(randomP+1, 1, 3, f); /* read 3 more, for a total of 4 */
+ /* store first four chars */
+ for (i=0,p=randomP; i<4; i++) { /* Check 4 valid ASCIIEncode chars */
+ if (HighHexP[*p++] > LAST_HDIGIT) { /* non-ASCII byte */
+ asc = 0;
+ break;
+ }
+ }
+ if (asc) { /* ASCII form, convert first eight bytes to binary */
+ fread(randomP+4, 1, 4, f); /* Need four more */
+ for (i=0,p=randomP; i<4; i++) { /* Convert */
+ H = HighHexP[*p++];
+ randomP[i] = H | LowHexP[*p++];
+ }
+ }
+
+ /* Adjust our key */
+ for (i=0,p=randomP; i<4; i++) {
+ r = (*p++ + r) * c1 + c2;
+ }
+
+ /* Decrypt the remaining buffered bytes */
+ f->b_cnt = T1Decrypt(f->b_ptr, f->b_cnt);
+ Decrypt = 1;
+
+#ifdef DEBUG_DECRYPTION
+ printf("T1eexec(2): first 120 bytes=%.120s, b_cnt=%d\n", f->b_ptr, f->b_cnt);
+#endif
+
+ return (feof(f))?NULL:f;
+} /* end eexec */
+
+/* -------------------------------------------------------------- */
+STATIC int T1Decrypt(p, len)
+ unsigned char *p;
+ int len;
+{
+ int n;
+ int H=0, L=0;
+ unsigned char *inp = p;
+ unsigned char *tblP;
+
+#ifdef DEBUG_DECRYPTION
+ printf("T1_Decrypt(): called with len=%d\n",len);
+#endif
+ if (asc) {
+ if (haveextrach) {
+ H = extrach;
+ tblP = LowHexP;
+ }
+ else tblP = HighHexP;
+ for (n=0; len>0; len--) {
+ L = tblP[*inp++];
+#ifdef DEBUG_DECRYPTION
+ printf("L=0x%X, %d, inp=%c (%d)\n", L,L, *(inp-1), *(inp-1));
+#endif
+ if (L == HWHITE_SPACE) {
+#ifdef DEBUG_DECRYPTION
+ printf("continue\n");
+#endif
+ continue;
+ }
+ if (L > LAST_HDIGIT) {
+#ifdef DEBUG_DECRYPTION
+ printf("L=0x%X, --> break\n", L);
+#endif
+ break;
+ }
+
+ if (tblP == HighHexP) { /* Got first hexit value */
+ H = L;
+ tblP = LowHexP;
+ } else { /* Got second hexit value; compute value and store it */
+ n++;
+ tblP = HighHexP;
+ H |= L;
+ /* H is an int, 0 <= H <= 255, so all of this will work */
+ *p++ = H ^ (r >> 8);
+ r = (H + r) * c1 + c2;
+ }
+ }
+ if (tblP != HighHexP) { /* We had an odd number of hexits */
+ extrach = H;
+ haveextrach = 1;
+ } else haveextrach = 0;
+#ifdef DEBUG_DECRYPTION
+ printf("T1_Decrypt(): Decrypted %d bytes\n",n);
+#endif
+ return n;
+ } else {
+ for (n = len; n>0; n--) {
+ H = *inp++;
+ *p++ = H ^ (r >> 8);
+ r = (H + r) * c1 + c2;
+ }
+ return len;
+ }
+} /* end Decrypt */
+
+/* -------------------------------------------------------------- */
+/* This function has been adapted to support pfb-files with multiple
+ data segments */
+STATIC int T1Fill(f) /* Refill stream buffer */
+ F_FILE *f; /* Stream descriptor */
+{
+ int rc,i;
+ static unsigned char hdr_buf[6];
+
+ if (starthex80){ /* we have a pfb-file -> be aware of pfb-blocks */
+ if ( pfbblocklen-accu >= F_BUFSIZ){
+ /* fill the buffer */
+ rc = read(f->fd, f->b_base, F_BUFSIZ);
+ bytecnt+=rc;
+ accu +=rc;
+ }
+ else{
+ if (pfbblocklen-accu>0){
+ /* read the remaining of the pfb-block ... */
+ rc = read(f->fd, f->b_base, pfbblocklen-accu);
+ bytecnt +=rc;
+ accu +=rc;
+ /* ... and examine the next header */
+ i=read(f->fd, hdr_buf, 6);
+ bytecnt +=i;
+ pfbblocklen=0;
+ pfbblocklen += hdr_buf[2]&0xFF ;
+ pfbblocklen += (hdr_buf[3] & 0xFF) <<8;
+ pfbblocklen += (hdr_buf[4] & 0xFF) <<16;
+ pfbblocklen += (hdr_buf[5] & 0xFF) <<24;
+#ifdef DEBUG_PFB_BLOCKS
+ printf("t1io: New segment, length=%d, type=%d\n",
+ pfbblocklen, hdr_buf[1]);
+#endif
+ accu=0;
+ }
+ else{
+ /* We are at the beginning of a new block ->
+ examine header */
+ i=read(f->fd, hdr_buf, 6);
+ pfbblocklen=0;
+ pfbblocklen += hdr_buf[2]&0xFF ;
+ pfbblocklen += (hdr_buf[3] & 0xFF) <<8;
+ pfbblocklen += (hdr_buf[4] & 0xFF) <<16;
+ pfbblocklen += (hdr_buf[5] & 0xFF) <<24;
+#ifdef DEBUG_PFB_BLOCKS
+ printf("t1io: New segment, length=%d, type=%d\n",
+ pfbblocklen, hdr_buf[1]);
+#endif
+ accu=0;
+ /* header read, now fill the buffer */
+ if (pfbblocklen-accu >= F_BUFSIZ){
+ rc = read(f->fd, f->b_base, F_BUFSIZ);
+ accu +=rc;
+ }
+ else{
+ /* we have the unusual case that the pfb-block size is
+ shorter than F_BUFSIZ -> Read this block only */
+ rc = read(f->fd, f->b_base, pfbblocklen);
+ accu +=rc;
+ }
+ }
+ }
+ }
+ else{
+ /* We have a pfa-file -> read straight ahead and fill buffer */
+ rc = read(f->fd, f->b_base, F_BUFSIZ);
+ }
+
+ /* propagate any error or eof to current file */
+ if (rc <= 0) {
+ if (rc == 0) /* means EOF */
+ f->flags |= FIOEOF;
+ else {
+ f->error = (short)-rc;
+ f->flags |= FIOERROR;
+ rc = 0;
+ }
+ }
+
+ f->b_ptr = f->b_base;
+#ifdef DEBUG_DECRYPTION
+ printf("T1_Fill(): read %d bytes\n", rc);
+#endif
+
+ if (Decrypt){
+ rc = T1Decrypt(f->b_base, rc);
+#ifdef DEBUG_DECRYPTION
+ printf("T1_Fill(): decrypted %d bytes\n", rc);
+#endif
+ }
+
+ return rc;
+} /* end Fill */
+
+
+void T1io_reset(void)
+{
+ pfbblocklen=0;
+ accu=0;
+ starthex80=0;
+ eexec_startOK=0;
+ eexec_endOK=0;
+ in_eexec=0;
+}
+
+
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1snap.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1snap.c
new file mode 100644
index 00000000000..988539b49cb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1snap.c
@@ -0,0 +1,79 @@
+/* $XConsortium: t1snap.c,v 1.3 91/10/10 11:19:47 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+
+/*
+:h2.Handle Functions
+
+:h3.Phantom() - Returns a Move Segment Equivalent to Handles
+
+This is a user operator. Its new name is QueryHandle.
+*/
+
+struct segment *t1_Phantom(obj)
+ register struct xobject *obj; /* object to take the Phantom of */
+{
+ struct fractpoint pt; /* handle size will built here */
+
+ if (obj == NULL)
+ pt.x = pt.y = 0;
+ else
+ PathDelta(obj, &pt);
+
+ return(PathSegment(MOVETYPE, pt.x, pt.y));
+}
+
+/*
+:h3.Snap() - Force Ending Handle of Object to Origin
+
+This is a user operator.
+*/
+
+struct xobject *t1_Snap(p)
+ register struct segment *p; /* path to snap */
+{
+ struct fractpoint pt; /* for finding length of path */
+
+ if (p == NULL)
+ return(NULL);
+ p = UniquePath(p);
+
+ PathDelta(p, &pt);
+ if (p->last->type == MOVETYPE) {
+ p->last->dest.x -= pt.x;
+ p->last->dest.y -= pt.y;
+ }
+ else
+ p = JoinSegment(p, MOVETYPE, -pt.x, -pt.y, NULL);
+ return((struct xobject *)p);
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stdio.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stdio.h
new file mode 100644
index 00000000000..f9ad8e97e25
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stdio.h
@@ -0,0 +1,87 @@
+/* $XConsortium: t1stdio.h,v 1.4 91/10/10 11:19:49 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* T1IO FILE structure and related stuff */
+
+#include "types.h"
+
+#undef getc
+#undef fclose
+#undef ungetc
+#undef fgetc
+#undef fread
+#undef feof
+#undef ferror
+#undef FILE
+
+#define FILE F_FILE
+typedef unsigned char F_char;
+
+typedef struct F_FILE {
+ F_char *b_base; /* Pointer to beginning of buffer */
+ LONG b_size; /* Size of the buffer */
+ F_char *b_ptr; /* Pointer to next char in buffer */
+ LONG b_cnt; /* Number of chars remaining in buffer */
+ F_char flags; /* other flags; != 0 means getc must call fgetc */
+ F_char ungotc; /* Place for ungotten char; flag set if present */
+ short error; /* error status */
+ int fd; /* underlying file descriptor */
+} F_FILE;
+
+
+/* defines for flags */
+#define UNGOTTENC (0x01)
+#define FIOEOF (0x80)
+#define FIOERROR (0x40)
+
+#ifndef NULL
+#define NULL 0 /* null pointer */
+#endif
+#ifndef EOF
+#define EOF (-1) /* end of file */
+#endif
+#define F_BUFSIZ (512)
+
+#define getc(f) \
+ ( \
+ ( ((f)->b_cnt > 0) && ((f)->flags == 0) ) ? \
+ ( (f)->b_cnt--, (unsigned int)*( (f)->b_ptr++ ) ) : \
+ T1Getc(f) \
+ )
+
+extern FILE *T1Open(), *T1eexec();
+extern int T1Close(F_FILE *), T1Ungetc(int,F_FILE *), T1Read();
+
+#define fclose(f) T1Close(f)
+#define fopen(name,mode) T1Open(name,mode)
+#define ungetc(c,f) T1Ungetc(c,f)
+#define fgetc(f) T1Getc(f)
+#define fread(bufP,size,n,f) T1Read(bufP,size,n,f)
+#define feof(f) (((f)->flags & FIOEOF) && ((f)->b_cnt==0))
+#define ferror(f) (((f)->flags & FIOERROR)?(f)->error:0)
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stub.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stub.c
new file mode 100644
index 00000000000..01ae1ade94d
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/t1stub.c
@@ -0,0 +1,47 @@
+/* $XConsortium: t1stub.c,v 1.3 92/03/20 15:58:40 eswu Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#include <stdio.h>
+
+#include "objects.h" /* get #define for abort() */
+
+int xiStub( void)
+{
+ printf("xiStub called\n");
+ abort("xiStub called", 48);
+ return(0);
+
+}
+
+void t1_DumpText( void)
+{
+ xiStub();
+
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.c
new file mode 100644
index 00000000000..f9efc379cac
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.c
@@ -0,0 +1,1208 @@
+/* $XConsortium: token.c,v 1.2 91/10/10 11:19:55 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Authors: Sig Nin & Carol Thompson IBM Almaden Research Laboratory */
+#include "types.h"
+#include "t1stdio.h"
+#include "util.h"
+#include "digit.h"
+#include "token.h"
+#include "tokst.h"
+#include "hdigit.h"
+
+/*
+ * -------------------------------------------------------------------
+ * Globals
+ * -------------------------------------------------------------------
+ */
+
+extern int T1Getc(F_FILE * ), T1Ungetc( int,F_FILE *);
+
+/* These variables are set by the caller */
+char *tokenStartP; /* Pointer to token buffer in VM */
+char *tokenMaxP; /* Pointer to last byte in buffer + 1 */
+
+/* These variables are set by TOKEN */
+int tokenLength; /* Characters in token */
+boolean tokenTooLong; /* Token too long for buffer */
+int tokenType; /* Type of token identified */
+psvalue tokenValue; /* Token value */
+
+/*
+ * -------------------------------------------------------------------
+ * Private variables
+ * -------------------------------------------------------------------
+ */
+
+static FILE *inputFileP; /* Current input file */
+
+
+/* Token */
+static char *tokenCharP; /* Pointer to next character in token */
+
+/*
+ * -------------------------------------------------------------------
+ * Private routines for manipulating numbers
+ * -------------------------------------------------------------------
+ */
+
+#define Exp10(e) \
+((e) == 0\
+ ? (DOUBLE)(1.0)\
+ : (-64 <= (e) && (e) <= 63\
+ ? Exp10T[(e)+64]\
+ : P10(e)\
+ )\
+)
+
+static DOUBLE Exp10T[128] = {
+ 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57,
+ 1e-56, 1e-55, 1e-54, 1e-53, 1e-52, 1e-51, 1e-50, 1e-49,
+ 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41,
+ 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33,
+ 1e-32, 1e-31, 1e-30, 1e-29, 1e-28, 1e-27, 1e-26, 1e-25,
+ 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17,
+ 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9,
+ 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
+ 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
+ 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
+ 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23,
+ 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31,
+ 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39,
+ 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47,
+ 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55,
+ 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63
+};
+
+static DOUBLE P10(exponent)
+ LONG exponent;
+{
+ DOUBLE value, power;
+
+ if (exponent < 0) {
+ power = 0.1;
+ value = (exponent & 1 ? power : 1.0);
+ exponent = -((exponent+1) >> 1); /* portable C for -(exponent/2) */
+ }
+ else {
+ power = 10.0;
+ value = (exponent & 1 ? power : 1.0);
+ exponent = exponent >> 1;
+ }
+
+ while(exponent > 0) {
+ power *= power;
+ if (exponent & 1)
+ value *= power;
+ exponent >>= 1;
+ }
+
+ return(value);
+}
+
+/*
+ * -------------------------------------------------------------------
+ * Private routines and macros for manipulating the input
+ * -------------------------------------------------------------------
+ */
+
+/* Get next character from the input --
+ *
+ */
+#define next_ch() (getc(inputFileP))
+
+/* Push a character back into the input --
+ *
+ * Ungetc of EOF will fail, but that's ok: the next getc will
+ * return EOF.
+ *
+ * NOTE: These macros are presently written to return the character
+ * pushed, or EOF if none was pushed. However, they are not
+ * required to return anything in particular, and callers should
+ * not rely on the returned value.
+ */
+#define back_ch(ch) (ungetc(ch, inputFileP))
+
+/* Push a character back into the input if it was not white space.
+ * If it is a carriage return (\r) then check next char for
+ * linefeed and consume them both, otherwise put next char back.
+ *
+ */
+#define back_ch_not_white(ch) \
+(\
+isWHITE_SPACE(ch)\
+ ? ((ch == '\r')\
+ ? (((ch = next_ch()) == '\n')\
+ ? EOF\
+ : back_ch(ch)\
+ )\
+ : EOF\
+ )\
+ : back_ch(ch)\
+)
+
+/*
+ * -------------------------------------------------------------------
+ * Private routines and macros for manipulating the token buffer
+ * -------------------------------------------------------------------
+ */
+
+/* Add a character to the token
+ * ---- use ONLY when you KNOW that this character will
+ * be stored within the token buffer.
+ */
+#define save_unsafe_ch(ch) (*tokenCharP++ = ch)
+
+/* Add a character to the token, if not too long to fit */
+#define save_ch(ch) \
+((tokenCharP < tokenMaxP)\
+ ? save_unsafe_ch(ch)\
+ : (tokenTooLong = TRUE)\
+)
+
+/*
+ * -------------------------------------------------------------------
+ * Action Routines
+ *
+ * These routines all
+ * -- take int ch as a parameter
+ * -- return int ch if no token was recognized, DONE otherwise
+ * -- leave the next character in the input, if returning DONE
+ * -------------------------------------------------------------------
+ */
+
+#define DONE (256)
+
+/* Get the next input character */
+static int next_char(ch)
+ int ch;
+{
+ return(next_ch());
+}
+
+/* Add character to token */
+static int add_char(ch)
+ int ch;
+{
+ save_ch(ch);
+ return(next_ch());
+}
+
+
+/* -------------------------------------------------------------------
+ * Skip white space and comments
+ */
+
+/* Skip white space */
+static int skip_space(ch)
+ int ch;
+{
+ do {
+ ch = next_ch();
+ } while(isWHITE_SPACE(ch));
+ return(ch);
+}
+
+/* Skip comments */
+static int skip_comment(ch)
+ int ch;
+{
+ do {
+ ch = next_ch();
+ } while(isCOMMENT(ch));
+ return(ch);
+}
+
+/* -------------------------------------------------------------------
+ * Collect value elements for a number
+ */
+
+/* decimal integer or real number mantissa */
+static int m_sign;
+static LONG m_value;
+static LONG m_scale;
+
+/* real number exponent */
+static int e_sign;
+static LONG e_value;
+static LONG e_scale;
+
+/* radix number */
+static LONG r_base;
+static LONG r_value;
+static LONG r_scale;
+
+static int add_sign(ch)
+ int ch;
+{
+ m_sign = ch;
+ save_unsafe_ch(ch);
+ return(next_ch());
+}
+
+static int add_1st_digits(ch)
+ int ch;
+{
+ m_sign = '+';
+ return(add_digits(ch));
+}
+
+static int add_digits(ch)
+ int ch;
+{
+ LONG value, p_value, scale;
+ int digit;
+
+ /* On entry, expect m_sign to be set to '+' or '-';
+ * ch is a decimal digit.
+ * Expect at most one character saved at this point,
+ * a sign. This routine will save up to 10 more
+ * characters without checking the buffer boundary.
+ */
+
+ value = ch - '0';
+ save_unsafe_ch(ch);
+ ch = next_ch();
+
+ while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
+ value = (value << 3) + (value << 1) + (ch - '0');
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ }
+
+ /* Quick exit for small integers --
+ * |x| <= 10*((MAX_INTEGER/10)-1)+9
+ * |x| <= 2,147,483,639 for 32 bit integers
+ */
+ if (isNUMBER_ENDER(ch)) {
+ back_ch_not_white(ch);
+ tokenValue.integer = (m_sign == '-' ? -value : value);
+ tokenType = TOKEN_INTEGER;
+ return(DONE);
+ }
+
+ /* Handle additional digits. Beyond the boundary case,
+ * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER
+ * just count the digits: the number is too large to
+ * represent as an integer and will be returned as a real.
+ * The mantissa of a real holds fewer bits than an integer.
+ */
+ p_value = value;
+ value = (m_sign == '-' ? -value : value);
+ scale = 0;
+
+ if (isDECIMAL_DIGIT(ch)) {
+
+ /* Handle the boundary case */
+ if (p_value == (MAX_INTEGER/10)) {
+ digit = ch - '0';
+
+ /* Must handle positive and negative values separately */
+ /* for 2's complement arithmetic */
+ if (value > 0) {
+ if (digit <= MAX_INTEGER%10)
+ value = (value << 3) + (value << 1) + digit;
+ else
+ ++scale; /* Too big, just count it */
+ }
+ else {
+ /* Use positive % operands for portability */
+ if (digit <= -(MIN_INTEGER+10)%10)
+ value = (value << 3) + (value << 1) - digit;
+ else
+ ++scale; /* Too big, just count it */
+ }
+ }
+ else
+ ++scale; /* Not boundary case, just count digit */
+
+ save_unsafe_ch(ch);
+ ch = next_ch();
+
+ /* Continue scanning digits, but can't store them */
+ while(isDECIMAL_DIGIT(ch)) {
+ ++scale;
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+
+ /* Continue from here scanning radix integer or real */
+ m_value = value;
+ m_scale = scale;
+
+ /* Initialize for possible real */
+ e_sign = '+';
+ e_value = 0;
+ e_scale = 0;
+
+ return(ch);
+}
+
+static int add_1st_decpt(ch)
+ int ch;
+{
+ m_sign = '+';
+ return(add_decpt(ch));
+}
+
+static int add_decpt(ch)
+ int ch;
+{
+ /* On entry, expect m_sign to be set to '+' or '-' */
+ m_value = 0;
+ m_scale = 0;
+ save_unsafe_ch(ch);
+ return(next_ch());
+}
+
+static int add_fraction(ch)
+ int ch;
+{
+ LONG value, scale;
+ int digit;
+
+ /* On entry, expect m_value and m_scale to be initialized,
+ * and m_sign to be set to '+' or '-'. Expect m_value and m_sign
+ * to be consistent (this is not checked).
+ */
+ value = m_value;
+ scale = m_scale;
+
+ /* Scan leading zeroes */
+ if (value == 0) {
+ while(ch == '0') {
+ --scale;
+ save_ch(ch);
+ ch = next_ch();
+ }
+
+ /* Scan first significant digit */
+ if (isDECIMAL_DIGIT(ch)) {
+ --scale;
+ value = ch - '0';
+ value = (m_sign == '-' ? -value : value);
+ save_ch(ch);
+ ch = next_ch();
+ }
+ else
+ /* no significant digits -- number is zero */
+ scale = 0;
+ }
+ /* value != 0 || value == 0 && !isDECIMAL_DIGIT(ch) */
+
+ /* Scan additional significant digits */
+ if (isDECIMAL_DIGIT(ch)) {
+ if (value > 0) {
+ while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
+ --scale;
+ value = (value << 3) + (value << 1) + (ch - '0');
+ save_ch(ch);
+ ch = next_ch();
+ }
+ /* Check boundary case */
+ if (isDECIMAL_DIGIT(ch) && value == (MAX_INTEGER/10)) {
+ digit = ch - '0';
+ if (digit <= MAX_INTEGER%10) {
+ --scale;
+ value = (value << 3) + (value << 1) + digit;
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+ else {
+ /* value < 0 */
+ while(isDECIMAL_DIGIT(ch) && value > -(-(MIN_INTEGER+10)/10+1)) {
+ /* Use positive / operands for portability */
+ --scale;
+ value = (value << 3) + (value << 1) - (ch - '0');
+ save_ch(ch);
+ ch = next_ch();
+ }
+ /* Check boundary case */
+ if (isDECIMAL_DIGIT(ch)
+ && value == -(-(MIN_INTEGER+10)/10+1)) {
+ digit = ch - '0';
+ if (digit <= -(MIN_INTEGER+10)%10) {
+ /* Use positive % operands for portability */
+ --scale;
+ value = (value << 3) + (value << 1) - digit;
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+
+ /* Additional digits can be discarded */
+ while(isDECIMAL_DIGIT(ch)) {
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+
+ /* Store results */
+ m_value = value;
+ m_scale = scale;
+
+ /* Initialize for possible real */
+ e_sign = '+';
+ e_value = 0;
+ e_scale = 0;
+
+ return(ch);
+}
+
+static int add_e_sign(ch)
+ int ch;
+{
+ e_sign = ch;
+ save_ch(ch);
+ return(next_ch());
+}
+
+static int add_exponent(ch)
+ int ch;
+{
+ LONG value, p_value;
+ LONG scale = 0;
+ int digit;
+
+ /* On entry, expect e_sign to be set to '+' or '-' */
+
+ value = ch - '0';
+ save_ch(ch);
+ ch = next_ch();
+
+ while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
+ value = (value << 3) + (value << 1) + (ch - '0');
+ save_ch(ch);
+ ch = next_ch();
+ }
+
+ p_value = value;
+ value = (e_sign == '-' ? -value : value);
+
+ /* Handle additional digits. Beyond the boundary case,
+ * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER
+ * just count the digits: the number is too large to
+ * represent as an integer.
+ */
+ if (isDECIMAL_DIGIT(ch)) {
+
+ /* Examine boundary case */
+ if (p_value == (MAX_INTEGER/10)) {
+ digit = ch - '0';
+
+ /* Must handle positive and negative values separately */
+ /* for 2's complement arithmetic */
+ if (value > 0) {
+ if (digit <= MAX_INTEGER%10)
+ value = (value << 3) + (value << 1) + digit;
+ else
+ ++scale; /* Too big, just count it */
+ }
+ else {
+ /* Use positive % operands for portability */
+ if (digit <= -(MIN_INTEGER+10)%10)
+ value = (value << 3) + (value << 1) - digit;
+ else
+ ++scale; /* Too big, just count it */
+ }
+ }
+ else
+ ++scale; /* Not boundary case, just count digit */
+
+ save_ch(ch);
+ ch = next_ch();
+
+ /* Continue scanning digits, but can't store any more */
+ while(isDECIMAL_DIGIT(ch)) {
+ ++scale;
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+
+ /* Store results */
+ e_value = value;
+ e_scale = scale;
+
+ return(ch);
+}
+
+static int add_radix(ch)
+ int ch;
+{
+ if (2 <= m_value && m_value <= 36 && m_scale == 0) {
+ r_base = m_value;
+ save_ch(ch);
+ return(next_ch());
+ }
+ else {
+ /* Radix invalid, complete a name token */
+ return(AAH_NAME(ch));
+ }
+}
+
+static int add_r_digits(ch)
+ int ch;
+{
+ ULONG value;
+ LONG radix, scale;
+ int digit;
+
+ /* NOTE: The syntax of a radix number allows only for
+ * values of zero or more. The value will be stored as
+ * a 32 bit integer, which PostScript then interprets
+ * as signed. This means, for example, that the numbers:
+ *
+ * 8#37777777777
+ * 10#4294967295
+ * 16#FFFFFFFF
+ * 36#1Z141Z3
+ *
+ * are all interpreted as -1. This routine implements this
+ * idea explicitly: it accumulates the number's value
+ * as unsigned, then casts it to signed when done.
+ */
+
+ /* Expect r_base to be initialized */
+ radix = r_base;
+ value = 0;
+ scale = 0;
+
+ /* Scan leading zeroes */
+ while(ch == '0') {
+ save_ch(ch);
+ ch = next_ch();
+ }
+
+ /* Handle first non-zero digit */
+ if ((digit=digit_value[ch]) < radix) {
+ value = digit;
+ save_ch(ch);
+ ch = next_ch();
+
+ /* Add digits until boundary case reached */
+ while((digit=digit_value[ch]) < radix
+ && value < (MAX_ULONG / radix)) {
+ value = value * radix + digit;
+ save_ch(ch);
+ ch = next_ch();
+ };
+
+ /* Scan remaining digits */
+ if ((digit=digit_value[ch]) < radix) {
+
+ /* Examine boundary case ---
+ * radix*(MAX_ULONG/radix) <= number <= MAX_ULONG
+ */
+ if (value == (MAX_ULONG/radix) && digit <= MAX_ULONG%radix)
+ value = value * radix + digit;
+ else
+ ++scale;
+
+ /* Continue scanning digits, but can't store them */
+ save_ch(ch);
+ ch = next_ch();
+ while(digit_value[ch] < radix) {
+ ++scale;
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+
+ /* Store result */
+ r_value = (LONG) value; /* result is signed */
+ r_scale = scale;
+
+ return(ch);
+}
+
+/* -------------------------------------------------------------------
+ * Complete a number; set token type and done flag.
+ * Put current input character back, if it is not white space.
+ */
+
+/* Done: Radix Number */
+static int RADIX_NUMBER(ch)
+ int ch;
+{
+ back_ch_not_white(ch);
+ if (r_scale == 0) {
+ tokenValue.integer = r_value;
+ tokenType = TOKEN_INTEGER;
+ }
+ else {
+ tokenType = TOKEN_NAME;
+ }
+ return(DONE);
+}
+
+/* Done: Integer */
+static int INTEGER(ch)
+ int ch;
+{
+ back_ch_not_white(ch);
+ if (m_scale == 0) {
+ tokenValue.integer = m_value;
+ tokenType = TOKEN_INTEGER;
+ }
+ else {
+ tokenValue.real = (DOUBLE)(m_value) * Exp10(m_scale);
+ tokenType = TOKEN_REAL;
+ }
+ return(DONE);
+}
+
+/* Done: Real */
+static int REAL(ch)
+ int ch;
+{
+ DOUBLE temp;
+
+ back_ch_not_white(ch);
+
+ /* NOTE: ignore e_scale, since e_value alone will cause
+ * exponent overflow if e_scale > 0.
+ */
+
+ /* HAZARD: exponent overflow of intermediate result
+ * (e.g., in 370 floating point); this should not be a problem
+ * with IEEE floating point. Reduce exponent overflow hazard by
+ * combining m_scale and e_value first, if they have different signs,
+ * or multiplying m_value and one of the other factors, if both
+ * m_scale and e_value are negative.
+ */
+ if ((m_scale >= 0 && e_value <= 0)
+ || (m_scale <= 0 && e_value >= 0)) {
+ tokenValue.real = (DOUBLE)(m_value) * Exp10(m_scale + e_value);
+ }
+ else {
+ temp = (DOUBLE)(m_value) * Exp10(m_scale);
+ tokenValue.real = temp * Exp10(e_value);
+ }
+
+ tokenType = TOKEN_REAL;
+ return(DONE);
+}
+
+
+/* -------------------------------------------------------------------
+ * Assemble a hex string; set token type and done flag.
+ */
+
+/* Done: Hex String */
+static int HEX_STRING(ch)
+ int ch;
+{
+ int value;
+
+ while(TRUE) {
+
+ /* Process odd digit */
+ ch = next_ch();
+ if (!isHEX_DIGIT(ch)) {
+
+ /* Skip white space */
+ while(isWHITE_SPACE(ch))
+ ch = next_ch();
+
+ /* Check for terminator */
+ if (!isHEX_DIGIT(ch)) {
+ break;
+ }
+ }
+ value = digit_value[ch] << 4;
+
+ /* Process even digit */
+ ch = next_ch();
+ if (!isHEX_DIGIT(ch)) {
+
+ /* Skip white space */
+ while(isWHITE_SPACE(ch))
+ ch = next_ch();
+
+ /* Check for terminator */
+ if (!isHEX_DIGIT(ch)) {
+ save_ch(value);
+ break;
+ }
+ }
+ save_ch(value + digit_value[ch]);
+ }
+
+ /* Classify result, based on why loop ended */
+ if (ch == '>')
+ tokenType = TOKEN_HEX_STRING;
+ else {
+ /* save the invalid character for error reporting */
+ save_ch(ch);
+ tokenType = TOKEN_INVALID;
+ }
+
+ return(DONE);
+}
+
+/* -------------------------------------------------------------------
+ * Assemble a string; set token type and done flag
+ */
+
+/* Save a backslash-coded character in a string --
+ *
+ * Store the proper character for special cases
+ * "\b", "\f", "\n", "\r", and "\t".
+ *
+ * Decode and store octal-coded character, up to
+ * three octal digits, "\o", "\oo", and "\ooo".
+ *
+ * The sequence "\<newline>" is a line continuation,
+ * so consume both without storing anything.
+ *
+ * The sequence "\<EOF>" is an error; exit without
+ * storing anything and let the caller handle it.
+ *
+ * For other characters, including the sequences
+ * "\\", "\(", and "\)", simply store the second
+ * character.
+ */
+static void save_digraph(ch)
+ int ch;
+{
+ int value;
+
+ switch (ch) {
+
+ case 'b': /* backspace */
+ ch = '\b';
+ break;
+
+ case 'f': /* formfeed */
+ ch = '\f';
+ break;
+
+ case 'n': /* newline */
+ ch = '\n';
+ break;
+
+ case 'r': /* carriage return */
+ ch = '\r';
+ break;
+
+ case 't': /* horizontal tab */
+ ch = '\t';
+ break;
+
+ case '\n': /* line continuation -- consume it */
+ return;
+
+ case '\r': /* carriage return -- consume it */
+ ch = next_ch(); /* look at next character, is it \n? */
+ if (ch == '\n') return;
+ back_ch(ch); /* if not a line feed, then return it */
+ return;
+
+ case EOF: /* end of file -- forget it */
+ return;
+
+ default:
+ /* scan up to three octal digits to get value */
+ if (isOCTAL_DIGIT(ch)) {
+ value = digit_value[ch];
+ ch = next_ch();
+ if (isOCTAL_DIGIT(ch)) {
+ value = (value << 3) + digit_value[ch];
+ ch = next_ch();
+ if (isOCTAL_DIGIT(ch))
+ value = (value << 3) + digit_value[ch];
+ else
+ back_ch(ch);
+ }
+ else
+ back_ch(ch);
+ ch = value;
+ }
+ }
+
+ /* Found a character to save */
+ save_ch(ch);
+}
+
+/* Done: String */
+static int STRING(ch)
+ int ch;
+{
+ int nest_level = 1;
+
+ tokenType = TOKEN_STRING;
+
+ do {
+
+ ch = next_ch();
+ while(!isSTRING_SPECIAL(ch)) {
+ save_ch(ch);
+ ch = next_ch();
+ };
+
+ switch (ch) {
+
+ case '(':
+ ++nest_level;
+ save_ch(ch);
+ break;
+
+ case ')':
+ if (--nest_level > 0)
+ save_ch(ch);
+ break;
+
+ case '\\':
+ save_digraph(next_ch());
+ break;
+
+ case '\r':
+ /* All carriage returns (\r) are turned into linefeeds (\n)*/
+ ch = next_ch(); /* get the next one, is it \n? */
+ if (ch != '\n') { /* if not, then put it back. */
+ back_ch(ch);
+ }
+ save_ch('\n'); /* in either case, save a linefeed */
+ break;
+
+
+ case EOF:
+ tokenType = TOKEN_INVALID; /* Unterminated string */
+ nest_level = 0;
+ break;
+ }
+
+ } while(nest_level > 0);
+
+ return(DONE);
+}
+
+
+/* -------------------------------------------------------------------
+ * Assemble a name; set token type and done flag.
+ * Put current input character back, if it is not white space.
+ */
+
+/* Done: Name
+ * (Safe version used to complete name tokens that
+ * start out looking like something else).
+ */
+
+static int AAH_NAME(ch)
+ int ch;
+{
+ do {
+ save_ch(ch);
+ ch = next_ch();
+ } while(isNAME(ch));
+
+ back_ch_not_white(ch);
+ tokenType = TOKEN_NAME;
+ return(DONE);
+}
+
+/* Done: Name */
+static int NAME(ch)
+ int ch;
+{
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ while(isNAME(ch)) {
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ back_ch_not_white(ch);
+ tokenType = TOKEN_NAME;
+ return(DONE);
+}
+
+/* Done: Literal Name */
+static int LITERAL_NAME(ch)
+ int ch;
+{
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ while(isNAME(ch)) {
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ back_ch_not_white(ch);
+ tokenType = TOKEN_LITERAL_NAME;
+ return(DONE);
+}
+
+/* Done: immediate Name */
+static int IMMED_NAME(ch)
+ int ch;
+{
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ if (isNAME(ch)) {
+ save_unsafe_ch(ch);
+ ch = next_ch();
+ while(isNAME(ch)) {
+ save_ch(ch);
+ ch = next_ch();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ back_ch_not_white(ch);
+ tokenType = TOKEN_IMMED_NAME;
+ return(DONE);
+}
+
+/* Done: Name found while looking for something else */
+static int OOPS_NAME(ch)
+ int ch;
+{
+ back_ch_not_white(ch);
+ tokenType = TOKEN_NAME;
+ return(DONE);
+}
+
+
+/* -------------------------------------------------------------------
+ * Complete a miscellaneous token; set token type and done flag.
+ */
+
+/* Done: Unmatched Right Angle-Bracket */
+static int RIGHT_ANGLE(ch)
+ int ch;
+{
+ tokenType = TOKEN_RIGHT_ANGLE;
+ return(DONE);
+}
+
+/* Done: Unmatched Right Parenthesis */
+static int RIGHT_PAREN(ch)
+ int ch;
+{
+ tokenType = TOKEN_RIGHT_PAREN;
+ return(DONE);
+}
+
+/* Done: Left Brace */
+static int LEFT_BRACE(ch)
+ int ch;
+{
+ tokenType = TOKEN_LEFT_BRACE;
+ return(DONE);
+}
+
+/* Done: Right Brace */
+static int RIGHT_BRACE(ch)
+ int ch;
+{
+ tokenType = TOKEN_RIGHT_BRACE;
+ return(DONE);
+}
+
+/* Done: Left Bracket */
+static int LEFT_BRACKET(ch)
+ int ch;
+{
+ save_unsafe_ch(ch);
+ tokenType = TOKEN_LEFT_BRACKET;
+ return(DONE);
+}
+
+/* Done: Right Bracket */
+static int RIGHT_BRACKET(ch)
+ int ch;
+{
+ save_unsafe_ch(ch);
+ tokenType = TOKEN_RIGHT_BRACKET;
+ return(DONE);
+}
+
+/* Done: Break */
+static int BREAK_SIGNAL(ch)
+ int ch;
+{
+ tokenType = TOKEN_BREAK;
+ return(DONE);
+}
+
+/* Done: No Token Found */
+static int NO_TOKEN(ch)
+ int ch;
+{
+ tokenType = TOKEN_EOF;
+ return(DONE);
+}
+
+
+/*
+ * -------------------------------------------------------------------
+ * scan_token -- scan one token from the input. It uses a simple
+ * finite state machine to recognize token classes.
+ *
+ * The input is from a file.
+ *
+ * On entry --
+ *
+ * inputP -> input PostScript object, a file.
+ * tokenStartP -> buffer in VM for accumulating the token.
+ * tokenMaxP -> last character in the token buffer
+ *
+ * On exit --
+ *
+ * tokenLength = number of characters in the token
+ * tokenTooLong = TRUE if the token did not fit in the buffer
+ * tokenType = code for the type of token parsed.
+ * tokenValue = converted value of a numeric token.
+ *
+ *
+ * -------------------------------------------------------------------
+ */
+void scan_token(inputP)
+ psobj *inputP;
+{
+ int ch;
+ unsigned char *stateP = s0;
+ unsigned char entry;
+ int (*actionP)();
+
+ /* Define input source */
+ inputFileP = inputP->data.fileP;
+ if (inputFileP == NULL) {
+ tokenType = TOKEN_EOF;
+ return;
+ }
+
+ /* Ensure enough space for most cases
+ * (so we don't have to keep checking)
+ * The length needs to cover the maximum number
+ * of save_unsafe_ch() calls that might be executed.
+ * That number is 11 (a sign and 10 decimal digits, e.g.,
+ * when scanning -2147483648), but use MAX_NAME_LEN
+ * in case someone changes that without checking.
+ */
+ if (vm_free_bytes() < (MAX_NAME_LEN)) {
+ if (!(vm_init())) {
+ tokenLength = 0;
+ tokenTooLong = TRUE;
+ tokenType = TOKEN_NONE;
+ tokenValue.integer = 0;
+ return;
+ }
+ }
+
+ tokenStartP = vm_next_byte();
+
+ /* Reset token */
+ tokenCharP = tokenStartP;
+ tokenTooLong = FALSE;
+
+ /* Scan one token */
+ ch = next_ch();
+ do {
+ entry = stateP[ch];
+ stateP = classActionTable[entry].nextStateP;
+ actionP = classActionTable[entry].actionRoutineP;
+ ch = (*actionP)(ch);
+ } while(ch != DONE);
+
+
+ /* Return results */
+ tokenLength = tokenCharP - tokenStartP;
+}
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.h
new file mode 100644
index 00000000000..6fcfa0e63ce
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/token.h
@@ -0,0 +1,77 @@
+/* $XConsortium: token.h,v 1.2 91/10/10 11:19:58 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+#ifndef TOKEN_H
+#define TOKEN_H
+
+/* Special characters */
+#define CONTROL_C (3)
+
+/* Token type codes */
+#define TOKEN_INVALID (-3)
+#define TOKEN_BREAK (-2)
+#define TOKEN_EOF (-1)
+#define TOKEN_NONE (0)
+#define TOKEN_LEFT_PAREN (1)
+#define TOKEN_RIGHT_PAREN (2)
+#define TOKEN_LEFT_ANGLE (3)
+#define TOKEN_RIGHT_ANGLE (4)
+#define TOKEN_LEFT_BRACE (5)
+#define TOKEN_RIGHT_BRACE (6)
+#define TOKEN_LEFT_BRACKET (7)
+#define TOKEN_RIGHT_BRACKET (8)
+#define TOKEN_NAME (9)
+#define TOKEN_LITERAL_NAME (10)
+#define TOKEN_INTEGER (11)
+#define TOKEN_REAL (12)
+#define TOKEN_RADIX_NUMBER (13)
+#define TOKEN_HEX_STRING (14)
+#define TOKEN_STRING (15)
+#define TOKEN_IMMED_NAME (16)
+
+/* Token routines */
+extern void scan_token();
+
+/*
+ * -------------------------------------------------------------------------
+ * Globals shared -- (everyone else KEEP YOUR MITTS OFF THEM!)
+ * -------------------------------------------------------------------------
+ */
+
+/* These variables are set by the caller */
+extern char *tokenStartP; /* Pointer to token buffer in VM */
+extern char *tokenMaxP; /* Pointer to end of VM we may use + 1 */
+
+/* These variables are set by P_TOKEN */
+extern int tokenLength; /* Characters in token */
+extern boolean tokenTooLong; /* Token too long for space available */
+extern int tokenType; /* Type of token identified */
+extern psvalue tokenValue; /* Token value */
+
+#endif /* TOKEN_H */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/tokst.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/tokst.h
new file mode 100644
index 00000000000..31a9fd04b02
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/tokst.h
@@ -0,0 +1,508 @@
+/* $XConsortium: tokst.h,v 1.2 91/10/10 11:20:00 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* -------------------------------------- */
+/* --- MACHINE GENERATED, DO NOT EDIT --- */
+/* -------------------------------------- */
+
+#ifndef TOKST
+#define TOKST 1
+
+/*
+ * State Index Tables --
+ *
+ * These tables map the input character to the
+ * proper entry in the Class Action Table.
+ * There is one table for each state.
+ *
+ */
+#define s0 (si0+2)
+static unsigned char si0[258] = { 0x10,0x11,
+ 0x02,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x02,0x02,0x0F,0x0F,0x02,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x02,0x0F,0x0F,0x0F,0x0F,0x03,0x0F,0x0F,0x05,0x0B,0x0F,0x0D,0x0F,0x0D,0x0E,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x0F,0x08,0x0F,0x0C,0x0F,
+ 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0A,0x0F,0x0F,
+ 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x0F,0x09,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F
+};
+
+#define s1 (si1+2)
+static unsigned char si1[258] = { 0x14,0x15,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13
+};
+
+#define s2 (si2+2)
+static unsigned char si2[258] = { 0x1B,0x1C,
+ 0x16,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x16,0x16,0x1A,0x1A,0x16,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x16,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x1A,0x17,0x17,0x1A,0x1A,0x1A,0x1A,0x19,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1A,0x1A,0x17,0x1A,0x17,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
+ 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A
+};
+
+#define s3 (si3+2)
+static unsigned char si3[258] = { 0x23,0x24,
+ 0x1D,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1D,0x1D,0x22,0x22,0x1D,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x1D,0x22,0x22,0x20,0x22,0x1E,0x22,0x22,0x1E,0x1E,0x22,0x22,0x22,0x22,0x1F,0x1E,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
+};
+
+#define s4 (si4+2)
+static unsigned char si4[258] = { 0x29,0x2A,
+ 0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x25,0x25,0x28,0x28,0x25,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x25,0x28,0x28,0x28,0x28,0x26,0x28,0x28,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x26,0x28,0x26,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28
+};
+
+#define s5 (si5+2)
+static unsigned char si5[258] = { 0x30,0x31,
+ 0x2B,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2B,0x2B,0x2F,0x2F,0x2B,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2B,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2F,0x2C,0x2C,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,
+ 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
+ 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F
+};
+
+#define s6 (si6+2)
+static unsigned char si6[258] = { 0x36,0x37,
+ 0x32,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x32,0x32,0x35,0x35,0x32,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x32,0x35,0x35,0x35,0x35,0x33,0x35,0x35,0x33,0x33,0x35,0x35,0x35,0x35,0x35,0x33,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35
+};
+
+#define s7 (si7+2)
+static unsigned char si7[258] = { 0x3D,0x3E,
+ 0x38,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x38,0x38,0x3C,0x3C,0x38,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x38,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x3C,0x39,0x39,0x3C,0x3A,0x3C,0x3A,0x3C,0x39,
+ 0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3C,0x3C,0x39,0x3C,0x39,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+ 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C
+};
+
+#define s8 (si8+2)
+static unsigned char si8[258] = { 0x43,0x44,
+ 0x3F,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3F,0x3F,0x42,0x42,0x3F,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x3F,0x42,0x42,0x42,0x42,0x40,0x42,0x42,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x40,0x42,0x40,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42
+};
+
+#define s9 (si9+2)
+static unsigned char si9[258] = { 0x48,0x49,
+ 0x45,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x45,0x45,0x47,0x47,0x45,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x45,0x47,0x47,0x47,0x47,0x46,0x47,0x47,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x46,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47
+};
+
+#define s10 (si10+2)
+static unsigned char si10[258] = { 0x4E,0x4F,
+ 0x4A,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4A,0x4A,0x4D,0x4D,0x4A,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4A,0x4D,0x4D,0x4D,0x4D,0x4B,0x4D,0x4D,0x4B,0x4B,0x4D,0x4D,0x4D,0x4D,0x4D,0x4B,
+ 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4D,0x4D,0x4B,0x4D,0x4B,0x4D,
+ 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,
+ 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D,
+ 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,
+ 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
+ 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D
+};
+
+#define s11 (si11+2)
+static unsigned char si11[258] = { 0x53,0x54,
+ 0x50,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x50,0x50,0x52,0x52,0x50,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x50,0x52,0x52,0x52,0x52,0x51,0x52,0x52,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x51,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52
+};
+
+/*
+ * Class Action Table --
+ *
+ * The entries in the Class Action Table indicate the
+ * action routine to be called, and the next state to
+ * enter, for each relevant character class in each.
+ * state. There are several entries for each state.
+ *
+ */
+static int AAH_NAME();
+static int BREAK_SIGNAL();
+static int HEX_STRING();
+static int IMMED_NAME();
+static int INTEGER();
+static int LEFT_BRACE();
+static int LEFT_BRACKET();
+static int LITERAL_NAME();
+static int NAME();
+static int NO_TOKEN();
+static int OOPS_NAME();
+static int RADIX_NUMBER();
+static int REAL();
+static int RIGHT_ANGLE();
+static int RIGHT_BRACE();
+static int RIGHT_BRACKET();
+static int RIGHT_PAREN();
+static int STRING();
+static int add_1st_decpt();
+static int add_1st_digits();
+static int add_char();
+static int add_decpt();
+static int add_digits();
+static int add_e_sign();
+static int add_exponent();
+static int add_fraction();
+static int add_r_digits();
+static int add_radix();
+static int add_sign();
+static int next_char();
+static int skip_comment();
+static int skip_space();
+
+static struct cat {
+ int (*actionRoutineP)();
+ unsigned char *nextStateP;
+} classActionTable[] = {
+
+ /* s0: Classify initial character */
+ /* 00 ALPHA */ {NAME, s0}, /* executable name */
+ /* 01 DIGIT */ {add_1st_digits, s3}, /* number? */
+ /* 02 WHITE_SPACE */ {skip_space, s0}, /* skip white space */
+ /* 03 PERCENT */ {skip_comment, s0}, /* comment? */
+ /* 04 SLASH */ {next_char, s1}, /* literal or imm name */
+ /* 05 LEFT_PAREN */ {STRING, s0}, /* string */
+ /* 06 LEFT_BRACE */ {LEFT_BRACE, s0}, /* begin procedure body */
+ /* 07 LEFT_BRACKET */ {LEFT_BRACKET, s0}, /* begin array */
+ /* 08 LEFT_ANGLE */ {HEX_STRING, s0}, /* hex string? */
+ /* 09 RIGHT_BRACE */ {RIGHT_BRACE, s0}, /* end procedure body */
+ /* 0A RIGHT_BRACKET */ {RIGHT_BRACKET, s0}, /* end array */
+ /* 0B RIGHT_PAREN */ {RIGHT_PAREN, s0}, /* unmatched right paren */
+ /* 0C RIGHT_ANGLE */ {RIGHT_ANGLE, s0}, /* unmatched right angle */
+ /* 0D SIGN */ {add_sign, s2}, /* signed number? */
+ /* 0E DECIMAL_POINT */ {add_1st_decpt, s4}, /* real number? */
+ /* 0F ANY */ {NAME, s0}, /* executable name */
+ /* 10 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 11 EOF */ {NO_TOKEN, s0}, /* no token found */
+
+ /* s1: Further classify a '/' */
+ /* 12 SLASH */ {IMMED_NAME, s0}, /* immediate name */
+ /* 13 ANY */ {LITERAL_NAME, s0}, /* literal name */
+ /* 14 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 15 EOF */ {OOPS_NAME, s0}, /* isolated sign */
+
+ /* s2: sign */
+ /* 16 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated sign */
+ /* 17 SPECIAL */ {OOPS_NAME, s0}, /* isolated sign */
+ /* 18 DIGIT */ {add_digits, s3}, /* number? */
+ /* 19 DECIMAL_POINT */ {add_decpt, s4}, /* real number? */
+ /* 1A ANY */ {NAME, s0}, /* executable name */
+ /* 1B BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 1C EOF */ {OOPS_NAME, s0}, /* isolated sign */
+
+ /* s3: sign? digit+ */
+ /* 1D WHITE_SPACE */ {INTEGER, s0}, /* n-digit integer */
+ /* 1E SPECIAL */ {INTEGER, s0}, /* n-digit integer */
+ /* 1F DECIMAL_POINT */ {add_char, s5}, /* real number? */
+ /* 20 POUND */ {add_radix, s10}, /* radix number? */
+ /* 21 eE */ {add_char, s7}, /* real with exponent? */
+ /* 22 ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 23 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 24 EOF */ {INTEGER, s0}, /* n-digit integer */
+
+ /* s4: sign? . */
+ /* 25 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated +. or -. */
+ /* 26 SPECIAL */ {OOPS_NAME, s0}, /* isolated +. or -. */
+ /* 27 DIGIT */ {add_fraction, s6}, /* number? */
+ /* 28 ANY */ {NAME, s0}, /* executable name */
+ /* 29 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 2A EOF */ {OOPS_NAME, s0}, /* isolated +. or -. */
+
+ /* s5: sign? digit+ . */
+ /* 2B WHITE_SPACE */ {REAL, s0}, /* real with fraction */
+ /* 2C SPECIAL */ {REAL, s0}, /* real with fraction */
+ /* 2D eE */ {add_char, s7}, /* real with exponent? */
+ /* 2E DIGIT */ {add_fraction, s6}, /* number? */
+ /* 2F ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 30 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 31 EOF */ {REAL, s0}, /* real with fraction */
+
+ /* s6: sign? (digit+ . digit+) | (. digit+) */
+ /* 32 WHITE_SPACE */ {REAL, s0}, /* real with fraction */
+ /* 33 SPECIAL */ {REAL, s0}, /* real with fraction */
+ /* 34 eE */ {add_char, s7}, /* real with exponent? */
+ /* 35 ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 36 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 37 EOF */ {REAL, s0}, /* real with fraction */
+
+ /* s7: sign? ((digit+ (. digit*)?) | (. digit+)) Ee */
+ /* 38 WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */
+ /* 39 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */
+ /* 3A SIGN */ {add_e_sign, s8}, /* real w signed exponent? */
+ /* 3B DIGIT */ {add_exponent, s9}, /* real w exponent ? */
+ /* 3C ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 3D BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 3E EOF */ {OOPS_NAME, s0}, /* invalid real number */
+
+ /* s8: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign */
+ /* 3F WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */
+ /* 40 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */
+ /* 41 DIGIT */ {add_exponent, s9}, /* real w exponent? */
+ /* 42 ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 43 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 44 EOF */ {OOPS_NAME, s0}, /* invalid real number */
+
+ /* s9: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign? digit+ */
+ /* 45 WHITE_SPACE */ {REAL, s0}, /* real w exponent */
+ /* 46 SPECIAL */ {REAL, s0}, /* real w exponent */
+ /* 47 ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 48 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 49 EOF */ {REAL, s0}, /* real w exponent */
+
+ /* s10: digit+ # */
+ /* 4A WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid radix number */
+ /* 4B SPECIAL */ {OOPS_NAME, s0}, /* invalid radix number */
+ /* 4C R_DIGIT */ {add_r_digits, s11}, /* radix number? */
+ /* 4D ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 4E BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 4F EOF */ {OOPS_NAME, s0}, /* invalid radix number */
+
+ /* s11: digit+ # r_digit+ */
+ /* 50 WHITE_SPACE */ {RADIX_NUMBER, s0}, /* radix number */
+ /* 51 SPECIAL */ {RADIX_NUMBER, s0}, /* radix number */
+ /* 52 ANY */ {AAH_NAME, s0}, /* executable name */
+ /* 53 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
+ /* 54 EOF */ {RADIX_NUMBER, s0} /* radix number */
+};
+
+/*
+ * Character Classification Tables --
+ *
+ * The entries in the Character Classification Tables
+ * map character codes to character classes. The
+ * tables contains one entry per code. The bits in
+ * each entry indicate which classes the character
+ * code belongs to.
+ *
+ * The macros 'isInCLASS(ch)' generate code to test
+ * whether 'ch' is a character in 'CLASS'.
+ *
+ */
+/* Membership macros for classes defined in table 1 ... */
+#define isRADIX_DIGIT(c) ((isInP1[c] & 0x80) != 0)
+#define isHEX_DIGIT(c) ((isInP1[c] & 0x40) != 0)
+#define isDECIMAL_DIGIT(c) ((isInP1[c] & 0x10) != 0)
+#define isOCTAL_DIGIT(c) ((isInP1[c] & 0x20) != 0)
+
+/* Membership macros for classes defined in table 2 ... */
+#define isWHITE_SPACE(c) ((isInP2[c] & 0x80) != 0)
+#define isCOMMENT(c) ((isInP2[c] & 0x40) != 0)
+#define isNAME(c) ((isInP2[c] & 0x20) != 0)
+#define isSTRING_SPECIAL(c) ((isInP2[c] & 0x10) != 0)
+#define isNUMBER_ENDER(c) ((isInP2[c] & 0x08) != 0)
+
+#define isInP1 (isInT1+2)
+static unsigned char isInT1[258] = { 0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xD0,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+};
+
+#define isInP2 (isInT2+2)
+static unsigned char isInT2[258] = { 0x18,0x18,
+ 0xC8,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC8,0x88,0x60,0x60,0x98,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0xC8,0x60,0x60,0x60,0x60,0x48,0x60,0x60,0x58,0x58,0x60,0x60,0x60,0x60,0x60,0x48,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x70,0x48,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60
+};
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/trig.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/trig.h
new file mode 100644
index 00000000000..3b0577c6750
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/trig.h
@@ -0,0 +1,35 @@
+/* $XConsortium: trig.h,v 1.2 91/10/10 11:20:04 rws Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/*SHARED*/
+
+#define DegreeCos(d) xiStub()
+#define DegreeSin(d) xiStub()
+#define sqrt(d) xiStub()
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/type1.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/type1.c
new file mode 100644
index 00000000000..392016c690e
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/type1.c
@@ -0,0 +1,4676 @@
+/* $XConsortium: type1.c,v 1.5 91/10/10 11:20:06 rws Exp $ */
+/* Copyright International Business Machines, Corp. 1991
+ * All Rights Reserved
+ * Copyright Lexmark International, Inc. 1991
+ * All Rights Reserved
+ * Portions Copyright (c) 1990 Adobe Systems Incorporated.
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM or Lexmark or Adobe
+ * not be used in advertising or publicity pertaining to distribution of
+ * the software without specific, written prior permission.
+ *
+ * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY
+ * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE
+ * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING
+ * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY
+ * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM,
+ * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND
+ * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*********************************************************************/
+/* */
+/* Type 1 module - Converting fonts in Adobe Type 1 Font Format */
+/* to scaled and hinted paths for rasterization. */
+/* Files: type1.c, type1.h, and blues.h. */
+/* */
+/* Authors: Sten F. Andler, IBM Almaden Research Center */
+/* (Type 1 interpreter, stem & flex hints) */
+/* */
+/* Patrick A. Casey, Lexmark International, Inc. */
+/* (Font level hints & stem hints) */
+/* */
+/*********************************************************************/
+
+
+/* Write debug info into a PostScript file? */
+/* #define DUMPDEBUGPATH */
+/* If Dumping a debug path, should we dump both character and
+ outline path? Warning: Do never enable this, unless, your name
+ is Rainer Menzner and you know what you are doing! */
+/* #define DUMPDEBUGPATHBOTH */
+
+/* Generate a bunch of stderr output to understand and debug
+ the generation of outline surrounding curves */
+/* #define DEBUG_OUTLINE_SURROUNDING */
+
+#define SUBPATH_CLOSED 1
+#define SUBPATH_OPEN 0
+
+/******************/
+/* Include Files: */
+/******************/
+#include "types.h"
+#include <stdio.h> /* a system-dependent include, usually */
+#include <math.h>
+#include <stdlib.h>
+
+#include "objects.h"
+#include "spaces.h"
+#include "paths.h"
+#include "fonts.h" /* understands about TEXTTYPEs */
+#include "pictures.h" /* understands about handles */
+
+typedef struct xobject xobject;
+#include "util.h" /* PostScript objects */
+#include "fontfcn.h"
+#include "blues.h" /* Blues structure for font-level hints */
+
+
+/* Considerations about hinting (2002-07-11, RMz (Author of t1lib))
+
+ It turns out that the hinting code as used until now produces some
+ artifacts in which may show up in suboptimal bitmaps. I have therefore
+ redesigned the algorithm. It is generally a bad idea to hint every
+ point that falls into a stem hint.
+
+ The idea is to hint only points for
+ which at least one of the two neighboring curve/line segments is aligned
+ with the stem in question. For curves, we are speaking about the
+ tangent line, that is, the line defined by (p1-p2) or (p3-p4).
+
+ For vertical stems this means, that only points which are connected
+ exactly into vertical direction are hinted. That is, the dx of the
+ respective curve vanishes. For horizontal stems, accordingly, dy must
+ vanish at least on one hand side of the point in order to be considered
+ as a stem.
+
+ Unfortunately this principle requires information about both sides of the
+ neighborhood of the point in question. In other words, it is not possible
+ to define a segment completely until the next segment has been inspected.
+ The idea thus is not compatible with the code in this file.
+
+ Furthermore, if certain points of a character outline are hinted according
+ to the stem hint info from the charstring, the non-hinted points may not be
+ left untouched. This would lead to very strong artifacts at small sizes,
+ especially if characters are defined in terms of curves. This is predominantly
+ the case for ComputerModern, for example.
+
+ To conclude, it is best to build a point list from the character description
+ adjust the non-hinted points after hinting has been completely finished.
+
+
+ Another rule we should state is
+
+ We can work around this by not directly connecting the path segments at
+ the end of the lineto/curveto's, but rather deferring this to the beginning
+ of the next path constructing function. It's not great but it should work.
+
+ The functions that produce segments are
+
+ 1) RMoveTo()
+ 2) RLineto()
+ 3) RRCurveTo()
+ 4) DoClosePath()
+
+ Their code is moved into the switch statement of the new function
+ handleCurrentSegment(). This function is called when a new segment generating
+ operation has been decoded from the charstring. At this point a serious
+ decision about how to hint the points is possible.
+
+ ...
+*/
+
+
+/* The following struct is used to record points that define a path
+ in absolute charspace coordinates. x and y describe the location and
+ hinted, if greater 0, indicates that this point has been hinted. Bit 0
+ (0x1) indicates vertically adjusted and Bit 1 (0x2) indicates
+ horizontally adjusted. If hinted == -1, this point is not to be hinted
+ at all. This, for example, is the case for a a (H)SBW command.
+
+ The member type can be one of
+
+ PPOINT_SBW --> initial path point as setup by (H)SBW
+ PPOINT_MOVE --> point that finishes a MOVE segment
+ PPOINT_LINE --> point that finishes a LINE segment
+ PPOINT_BEZIER_B --> second point of a BEZIER segment
+ PPOINT_BEZIER_C --> third point of a BEZIER segment
+ PPOINT_BEZIER_D --> fourth point of a BEZIER segment
+ PPOINT_CLOSEPATH --> a ClosePath command
+ PPOINT_ENDCHAR --> an EndChar command
+ PPOINT_SEAC --> a Standard Encoding Accented Char command
+ PPOINT_NONE --> an invalid entry
+
+
+ Note: BEZIER_B and BEZIER_C points generally cannot be flagged as
+ being hinted because are off-curve points.
+*/
+typedef struct
+{
+ double x; /* x-coordinate */
+ double y; /* y-coordinate */
+ double ax; /* adjusted x-coordinate */
+ double ay; /* adjusted y-coordinate */
+ double dxpr; /* x-shift in right path due to incoming segment (previous) */
+ double dypr; /* y-shift in right path due to incoming segment (previous) */
+ double dxnr; /* x-shift in right path due to outgoing segment (next) */
+ double dynr; /* y-shift in right path due to incoming segment (next) */
+ double dxir; /* x-shift in right path resulting from prologation of the linkend tangents (intersect) */
+ double dyir; /* y-shift in right path resulting from prologation of the linkend tangents (intersect) */
+ double dist2prev; /* distance to the previous point in path (used only for stroking) */
+ double dist2next; /* distance to the next point in path (used only for stroking) */
+ enum
+ {
+ PPOINT_SBW,
+ PPOINT_MOVE,
+ PPOINT_LINE,
+ PPOINT_BEZIER_B,
+ PPOINT_BEZIER_C,
+ PPOINT_BEZIER_D,
+ PPOINT_CLOSEPATH,
+ PPOINT_ENDCHAR,
+ PPOINT_SEAC,
+ PPOINT_NONE
+ } type; /* type of path point */
+ signed char hinted; /* is this point hinted? */
+ unsigned char shape; /* is the outline concave or convex or straight at this point? This flag
+ is only relevant for onCurve points in the context of stroking! */
+} PPOINT;
+
+#define CURVE_NONE 0x00
+#define CURVE_STRAIGHT 0x01
+#define CURVE_CONVEX 0x02
+#define CURVE_CONCAVE 0x03
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+static char* pptypes[] = {
+ "PPOINT_SBW",
+ "PPOINT_MOVE",
+ "PPOINT_LINE",
+ "PPOINT_BEZIER_B",
+ "PPOINT_BEZIER_C",
+ "PPOINT_BEZIER_D",
+ "PPOINT_CLOSEPATH",
+ "PPOINT_ENDCHAR",
+ "PPOINT_SEAC"
+};
+static char* ppshapes[] = {
+ "SHAPE_OFFCURVE",
+ "SHAPE_STRAIGHT",
+ "SHAPE_CONVEX",
+ "SHAPE_CONCAVE"
+};
+#endif
+
+
+/* The PPOINT structs are organized in an array which is allocated
+ in chunks of 256 entries. A new point is allocated by a call to
+ nextPPoint and returns the index in the array of the newly
+ allocated point. */
+static PPOINT* ppoints = NULL;
+static long numppoints = 0;
+static long numppointchunks = 0;
+static int closepathatfirst = 0;
+
+static long nextPPoint( void)
+{
+ ++numppoints;
+ /* Check whether to reallocate */
+ if ( numppoints > (numppointchunks * 256) ) {
+ ++numppointchunks;
+ ppoints = (PPOINT*) realloc( ppoints, (numppointchunks * 256) * sizeof( PPOINT));
+ }
+ /* return the current index */
+ return numppoints-1;
+}
+
+static void createFillPath( void);
+static void createStrokePath( double strokewidth, int subpathclosed);
+static void createClosedStrokeSubPath( long startind, long stopind,
+ double strokewidth, int subpathclosed);
+static long computeDistances( long startind, long stopind, int subpathclosed);
+static void transformOnCurvePathPoint( double strokewidth,
+ long prevind, long currind, long lastind);
+static void transformOffCurvePathPoint( double strokewidth, long currind);
+/* values for flag:
+ INTERSECT_PREVIOUS: only take previous path segment into account.
+ INTERSECT_NEXT: only take next path segment into account.
+ INTERSECT_BOTH: do a real intersection
+*/
+#define INTERSECT_PREVIOUS -1
+#define INTERSECT_NEXT 1
+#define INTERSECT_BOTH 0
+static void intersectRight( long index, double halfwidth, long flag);
+/* values for orientation:
+ PATH_LEFT: we are constructing the left path.
+ PATH_RIGHT: we are constructing the right path.
+*/
+#define PATH_LEFT 1
+#define PATH_RIGHT 0
+/* values for position:
+ PATH_START: current point starts the current path (use next-values).
+ PATH_END: current point ends the current path (use prev-values).
+*/
+#define PATH_START 0
+#define PATH_END 1
+static void linkNode( long index, int position, int orientation);
+
+
+static long handleNonSubPathSegments( long pindex);
+static void handleCurrentSegment( long pindex);
+static void adjustBezier( long pindex);
+
+static double size;
+static double scxx, scyx, scxy, scyy;
+static double up;
+
+#ifdef DUMPDEBUGPATH
+static FILE* psfile = NULL;
+static void PSDumpProlog( FILE* fp);
+static void PSDumpEpilog( FILE* fp);
+#endif
+
+/* variables for querying SEAC from external */
+static int isseac = 0;
+static unsigned char seacbase = 0;
+static unsigned char seacaccent = 0;
+
+
+/**********************************/
+/* Type1 Constants and Structures */
+/**********************************/
+#define MAXSTACK 24 /* Adobe Type1 limit */
+#define MAXCALLSTACK 10 /* Adobe Type1 limit */
+#define MAXPSFAKESTACK 32 /* Max depth of fake PostScript stack (local) */
+#define MAXSTRLEN 512 /* Max length of a Type 1 string (local) */
+#define MAXLABEL 256 /* Maximum number of new hints */
+#define MAXSTEMS 512 /* Maximum number of VSTEM and HSTEM hints */
+#define EPS 0.001 /* Small number for comparisons */
+
+/************************************/
+/* Adobe Type 1 CharString commands */
+/************************************/
+#define HSTEM 1
+#define VSTEM 3
+#define VMOVETO 4
+#define RLINETO 5
+#define HLINETO 6
+#define VLINETO 7
+#define RRCURVETO 8
+#define CLOSEPATH 9
+#define CALLSUBR 10
+#define RETURN 11
+#define ESCAPE 12
+#define HSBW 13
+#define ENDCHAR 14
+#define RMOVETO 21
+#define HMOVETO 22
+#define VHCURVETO 30
+#define HVCURVETO 31
+
+/* The following charstring code appears in some old Adobe font files
+ in space and .notdef character and does not seems to do anything
+ useful aside from taking two args from the stack. We allow this
+ command and ignore it. The source code of ghostscript states that
+ this command is obsolete *and* undocumented.
+ This code may also appear in an Escape-sequence! */
+#define UNKNOWN_15 15
+
+/*******************************************/
+/* Adobe Type 1 CharString Escape commands */
+/*******************************************/
+#define DOTSECTION 0
+#define VSTEM3 1
+#define HSTEM3 2
+#define SEAC 6
+#define SBW 7
+#define DIV 12
+#define CALLOTHERSUBR 16
+#define POP 17
+#define SETCURRENTPOINT 33
+
+
+/* Note: We use routines from libm because in the original macro definitions,
+ the evaluation order of tmpx is undefined by C-standard! */
+#define USE_MATHLIB_ROUTINES
+
+#ifdef USE_MATHLIB_ROUTINES
+
+#define FABS(x) (fabs (x))
+#define CEIL(x) ((LONG) ceil (x))
+#define FLOOR(x) ((LONG) floor (x))
+
+#else
+
+/*****************/
+/* Useful macros */
+/*****************/
+static DOUBLE tmpx; /* Store macro argument in tmpx to avoid re-evaluation */
+static LONG tmpi; /* Store converted value in tmpi to avoid re-evaluation */
+#define FABS(x) (((tmpx = (x)) < 0.0) ? -tmpx : tmpx)
+#define CEIL(x) (((tmpi = (LONG) (tmpx = (x))) < tmpx) ? ++tmpi : tmpi)
+#define FLOOR(x) (((tmpi = (LONG) (tmpx = (x))) > tmpx) ? --tmpi : tmpi)
+
+#endif
+
+#define ROUND(x) FLOOR((x) + 0.5)
+#define ODD(x) (((int)(x)) & 01)
+
+#define CC IfTrace1(TRUE, "Char \"%s\": ", currentchar)
+
+/* To make some compiler happy we have to care about return types! */
+#define Errori {errflag = TRUE; return 0;} /* integer */
+#define Errord {errflag = TRUE; return 0.0;} /* double */
+#define Errorv {errflag = TRUE; return;} /* void */
+
+#define Error0i(errmsg) { CC; IfTrace0(TRUE, errmsg); Errori;}
+#define Error0d(errmsg) { CC; IfTrace0(TRUE, errmsg); Errord;}
+#define Error0v(errmsg) { CC; IfTrace0(TRUE, errmsg); Errorv;}
+
+#define Error1i(errmsg,arg) { CC; IfTrace1(TRUE, errmsg, arg); Errori;}
+#define Error1d(errmsg,arg) { CC; IfTrace1(TRUE, errmsg, arg); Errord;}
+#define Error1v(errmsg,arg) { CC; IfTrace1(TRUE, errmsg, arg); Errorv;}
+
+/********************/
+/* global variables */
+/********************/
+struct stem { /* representation of a STEM hint */
+ int vertical; /* TRUE if vertical, FALSE otherwise */
+ DOUBLE x, dx; /* interval of vertical stem */
+ DOUBLE y, dy; /* interval of horizontal stem */
+ DOUBLE alx, aldx; /* interval of grid-aligned vertical stem */
+ DOUBLE aly, aldy; /* interval of grid-aligned horizontal stem */
+ double lbhintval; /* adjustment value for left or bottom hint */
+ double rthintval; /* adjustment value for right ir top hint */
+};
+
+/******************************************************/
+/* Subroutines and statics for the Type1Char routines */
+/******************************************************/
+
+static int strindex; /* index into PostScript string being interpreted */
+static double currx, curry; /* accumulated x and y values */
+static double hcurrx, hcurry; /* accumulated values with hinting */
+
+
+struct callstackentry {
+ psobj *currstrP; /* current CharStringP */
+ int currindex; /* current strindex */
+ unsigned short currkey; /* current decryption key */
+ };
+
+static DOUBLE Stack[MAXSTACK];
+static int Top;
+static struct callstackentry CallStack[MAXCALLSTACK];
+static int CallTop;
+static DOUBLE PSFakeStack[MAXPSFAKESTACK];
+static int PSFakeTop;
+
+
+extern struct XYspace *IDENTITY;
+
+static DOUBLE escapementX, escapementY;
+static DOUBLE sidebearingX, sidebearingY;
+static DOUBLE accentoffsetX, accentoffsetY;
+
+static struct segment *path; /* path of basechar */
+static struct segment *apath; /* pass of accent char */
+static int errflag;
+
+/*************************************************/
+/* Global variables to hold Type1Char parameters */
+/*************************************************/
+static char *Environment;
+static char *currentchar;
+static struct XYspace *CharSpace;
+static psobj *CharStringP, *SubrsP, *OtherSubrsP;
+static int *ModeP;
+
+/************************/
+/* Forward declarations */
+/************************/
+static DOUBLE Div();
+static DOUBLE PSFakePop();
+static int DoCommand();
+static int Escape();
+static int HStem();
+static int VStem();
+static int RLineTo();
+static int RRCurveTo();
+static int DoClosePath();
+static int CallSubr();
+static int Return();
+static int EndChar();
+static int RMoveTo();
+static int DotSection();
+static int Seac();
+static int Sbw();
+static int CallOtherSubr();
+static int SetCurrentPoint();
+
+/******************************************************/
+/* statics for Font level hints (Blues) (see blues.h) */
+/******************************************************/
+static struct blues_struct *blues; /* the blues structure */
+static struct alignmentzone alignmentzones[MAXALIGNMENTZONES];
+int numalignmentzones; /* total number of alignment zones */
+
+/****************************************************************/
+/* Subroutines for the Font level hints (Alignment zones, etc.) */
+/****************************************************************/
+
+
+
+/* Flags to control the rasterizer */
+#define T1_IGNORE_FORCEBOLD 0x0001
+#define T1_IGNORE_FAMILYALIGNMENT 0x0002
+#define T1_IGNORE_HINTING 0x0004
+
+#define T1_DEBUG_LINE 0x0100
+#define T1_DEBUG_REGION 0x0200
+#define T1_DEBUG_PATH 0x0400
+#define T1_DEBUG_FONT 0x0800
+#define T1_DEBUG_HINT 0x1000
+
+int T1_Type1OperatorFlags; /* for manipulation from t1lib */
+
+
+static void SetRasterFlags( void)
+{
+
+ if (T1_Type1OperatorFlags & T1_IGNORE_HINTING)
+ ProcessHints=0;
+ else
+ ProcessHints=1;
+
+ if ( T1_Type1OperatorFlags & T1_DEBUG_LINE)
+ LineDebug=1;
+ else
+ LineDebug=0;
+ if ( T1_Type1OperatorFlags & T1_DEBUG_REGION)
+ RegionDebug=1;
+ else
+ RegionDebug=0;
+ if ( T1_Type1OperatorFlags & T1_DEBUG_PATH)
+ PathDebug=1;
+ else
+ PathDebug=0;
+ if ( T1_Type1OperatorFlags & T1_DEBUG_FONT)
+ FontDebug=1;
+ else
+ FontDebug=0;
+ if ( T1_Type1OperatorFlags & T1_DEBUG_HINT)
+ HintDebug=1;
+ else
+ HintDebug=0;
+ return;
+
+}
+
+
+/******************************************/
+/* Fill in the alignment zone structures. */
+/******************************************/
+static int ComputeAlignmentZones()
+{
+ int i;
+ DOUBLE dummy, bluezonepixels, familyzonepixels;
+ struct segment *p;
+
+ numalignmentzones = 0; /* initialize total # of zones */
+
+ /* Remarks by RMz (Author of t1lib): The handling of substitution of
+ the BlueValues by the FamilyBlues and correspondingly for the
+ OtherBlues and FamilyOtherBlues is not clearly documented.
+ These are the problems:
+
+ 1) Does the number of FamilyBlues entries need to be identical to
+ that of BlueValues?
+
+ 2) Obviously, the order of the alignment zones in the BlueValues
+ and the FamilyBlues need not be same (see TimesBold.pfa)
+
+ 3) Is it wise/recommended to make the substitution on a per
+ alignment-zone level or global, i.e., if once then for all
+ zones?
+
+ 4) The principle found below, checking the delta-height of an
+ alignment-zone and making a decision based on this is incorrect.
+ The decision has to be done according to absolute pixel values
+ at which a feature would be rendered with the BlueValues and the
+ FamilyBlues respectively.
+
+ To conclude, it seems better to disable the Family-feature until
+ these things are well-known/defined.
+ */
+
+ /* do the BlueValues zones */
+ for (i = 0; i < blues->numBlueValues; i +=2, ++numalignmentzones) {
+ /* the 0th & 1st numbers in BlueValues are for a bottom zone */
+ /* the rest are topzones */
+ if (i == 0) /* bottom zone */
+ alignmentzones[numalignmentzones].topzone = FALSE;
+ else /* top zone */
+ alignmentzones[numalignmentzones].topzone = TRUE;
+ /* Check FamilyAlignment suppression */
+ if ( (T1_Type1OperatorFlags & T1_IGNORE_FAMILYALIGNMENT)==0) {
+ if (i < blues->numFamilyBlues) { /* we must consider FamilyBlues */
+ p = ILoc(CharSpace,0,blues->BlueValues[i] - blues->BlueValues[i+1]);
+ QueryLoc(p, IDENTITY, &dummy, &bluezonepixels);
+ Destroy(p);
+ p = ILoc(CharSpace,0,blues->FamilyBlues[i] - blues->FamilyBlues[i+1]);
+ QueryLoc(p, IDENTITY, &dummy, &familyzonepixels);
+ Destroy(p);
+ /* is the difference in size of the zones less than 1 pixel? */
+ if (FABS(bluezonepixels - familyzonepixels) < 1.0) {
+ /* use the Family zones */
+ alignmentzones[numalignmentzones].bottomy =
+ blues->FamilyBlues[i];
+ alignmentzones[numalignmentzones].topy =
+ blues->FamilyBlues[i+1];
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ if ( alignmentzones[numalignmentzones].topzone == TRUE )
+ fprintf( psfile, "%f %f t1topzone\n", (blues->FamilyBlues[i])*up,
+ (blues->BlueValues[i+1])*up);
+ else
+ fprintf( psfile, "%f %f t1bottomzone\n", (blues->FamilyBlues[i])*up,
+ (blues->BlueValues[i+1])*up);
+ }
+#endif
+ continue;
+ }
+ }
+ }
+ /* use this font's Blue zones */
+ alignmentzones[numalignmentzones].bottomy = blues->BlueValues[i];
+ alignmentzones[numalignmentzones].topy = blues->BlueValues[i+1];
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ if ( alignmentzones[numalignmentzones].topzone == TRUE )
+ fprintf( psfile, "%f %f t1topzone\n", (blues->BlueValues[i])*up,
+ (blues->BlueValues[i+1])*up);
+ else
+ fprintf( psfile, "%f %f t1bottomzone\n", (blues->BlueValues[i])*up,
+ (blues->BlueValues[i+1])*up);
+ }
+#endif
+ }
+
+ /* do the OtherBlues zones */
+ for (i = 0; i < blues->numOtherBlues; i +=2, ++numalignmentzones) {
+ /* all of the OtherBlues zones are bottom zones */
+ alignmentzones[numalignmentzones].topzone = FALSE;
+ /* Check FamilyAlignment suppression */
+ if ( (T1_Type1OperatorFlags & T1_IGNORE_FAMILYALIGNMENT)==0) {
+ if (i < blues->numFamilyOtherBlues) {/* consider FamilyOtherBlues */
+ p = ILoc(CharSpace,0,blues->OtherBlues[i] - blues->OtherBlues[i+1]);
+ QueryLoc(p, IDENTITY, &dummy, &bluezonepixels);
+ Destroy(p);
+ p = ILoc(CharSpace,0,blues->FamilyOtherBlues[i] -
+ blues->FamilyOtherBlues[i+1]);
+ QueryLoc(p, IDENTITY, &dummy, &familyzonepixels);
+ Destroy(p);
+ /* is the difference in size of the zones less than 1 pixel? */
+ if (FABS(bluezonepixels - familyzonepixels) < 1.0) {
+ /* use the Family zones */
+ alignmentzones[numalignmentzones].bottomy =
+ blues->FamilyOtherBlues[i];
+ alignmentzones[numalignmentzones].topy =
+ blues->FamilyOtherBlues[i+1];
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "%f %f t1bottomzone\n", (blues->FamilyOtherBlues[i])*up,
+ (blues->FamilyOtherBlues[i+1])*up);
+ }
+#endif
+ continue;
+ }
+ }
+ }
+ /* use this font's Blue zones (as opposed to the Family Blues */
+ alignmentzones[numalignmentzones].bottomy = blues->OtherBlues[i];
+ alignmentzones[numalignmentzones].topy = blues->OtherBlues[i+1];
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "%f %f t1bottomzone\n", (blues->OtherBlues[i])*up,
+ (blues->OtherBlues[i+1])*up);
+ }
+#endif
+ }
+ return(0);
+
+}
+
+/**********************************************************************/
+/* Subroutines and statics for handling of the VSTEM and HSTEM hints. */
+/**********************************************************************/
+int InDotSection; /* DotSection flag */
+struct stem stems[MAXSTEMS]; /* All STEM hints */
+int numstems; /* Number of STEM hints */
+int currstartstem; /* The current starting stem. */
+int oldvert, oldhor; /* Remember hint in effect */
+int oldhorhalf, oldverthalf; /* Remember which half of the stem */
+DOUBLE wsoffsetX, wsoffsetY; /* White space offset - for VSTEM3,HSTEM3 */
+int wsset; /* Flag for whether we've set wsoffsetX,Y */
+
+static int InitStems() /* Initialize the STEM hint data structures */
+{
+ InDotSection = FALSE;
+ currstartstem = numstems = 0;
+ oldvert = oldhor = -1;
+ return(0);
+
+}
+
+
+/*******************************************************************/
+/* Compute the dislocation that a stemhint should cause for points */
+/* inside the stem. */
+/*******************************************************************/
+static int ComputeStem(stemno)
+int stemno;
+{
+ int verticalondevice, idealwidth;
+ DOUBLE stemstart, stemwidth;
+ struct segment *p;
+ int i;
+ DOUBLE stembottom, stemtop, flatposition;
+ DOUBLE Xpixels, Ypixels;
+ DOUBLE unitpixels, onepixel;
+ int suppressovershoot, enforceovershoot;
+ DOUBLE stemshift, flatpospixels, overshoot;
+ DOUBLE widthdiff; /* Number of character space units to adjust width */
+ DOUBLE lbhintvalue, rthintvalue;
+ DOUBLE cxx, cyx, cxy, cyy; /* Transformation matrix */
+ int rotated; /* TRUE if character is on the side, FALSE if upright */
+
+ /************************************************/
+ /* DETERMINE ORIENTATION OF CHARACTER ON DEVICE */
+ /************************************************/
+
+ QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */
+
+ if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001)
+ rotated = TRUE; /* Char is on side (90 or 270 degrees), possibly oblique. */
+ else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001)
+ rotated = FALSE; /* Char is upright (0 or 180 degrees), possibly oblique. */
+ else {
+ stems[stemno].lbhintval = 0.0; /* Char is at non-axial angle, ignore hints. */
+ stems[stemno].rthintval = 0.0;
+ ProcessHints = 0;
+ return(0);
+ }
+
+ /* Determine orientation of stem */
+
+ if (stems[stemno].vertical) {
+ verticalondevice = !rotated;
+ stemstart = stems[stemno].x;
+ stemwidth = stems[stemno].dx;
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1vstem\n", stemstart*up, stemwidth*up);
+#endif
+ } else {
+ verticalondevice = rotated;
+ stemstart = stems[stemno].y;
+ stemwidth = stems[stemno].dy;
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1hstem\n", stemstart*up, stemwidth*up);
+#endif
+ }
+
+ /* Determine how many pixels (non-negative) correspond to 1 character space
+ unit (unitpixels), and how many character space units (non-negative)
+ correspond to one pixel (onepixel). */
+
+ if (stems[stemno].vertical)
+ p = ILoc(CharSpace, 1, 0);
+ else
+ p = ILoc(CharSpace, 0, 1);
+ QueryLoc(p, IDENTITY, &Xpixels, &Ypixels);
+ Destroy(p);
+ if (verticalondevice)
+ unitpixels = FABS(Xpixels);
+ else
+ unitpixels = FABS(Ypixels);
+
+ onepixel = 1.0 / unitpixels;
+
+ /**********************/
+ /* ADJUST STEM WIDTHS */
+ /**********************/
+
+ widthdiff = 0.0;
+
+ /* Find standard stem with smallest width difference from this stem */
+ if (stems[stemno].vertical) { /* vertical stem */
+ if (blues->StdVW != 0) /* there is an entry for StdVW */
+ widthdiff = blues->StdVW - stemwidth;
+ for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+ if (FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff))
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapV[i] - stemwidth;
+ }
+ } else { /* horizontal stem */
+ if (blues->StdHW != 0) /* there is an entry for StdHW */
+ widthdiff = blues->StdHW - stemwidth;
+ for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+ if (FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff))
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapH[i] - stemwidth;
+ }
+ }
+
+ /* Only expand or contract stems if they differ by less than 1 pixel from
+ the closest standard width, otherwise make the width difference = 0. */
+ if (FABS(widthdiff) > onepixel)
+ widthdiff = 0.0;
+
+ /* Expand or contract stem to the nearest integral number of pixels. */
+ idealwidth = ROUND((stemwidth + widthdiff) * unitpixels);
+ /* Ensure that all stems are at least one pixel wide. */
+ if (idealwidth == 0)
+ idealwidth = 1;
+
+ /* Apply ForceBold to vertical stems. */
+ if (blues->ForceBold && stems[stemno].vertical &&
+ ((T1_Type1OperatorFlags & T1_IGNORE_FORCEBOLD)==0))
+ /* Force this vertical stem to be at least DEFAULTBOLDSTEMWIDTH wide. */
+ if (idealwidth < DEFAULTBOLDSTEMWIDTH)
+ idealwidth = DEFAULTBOLDSTEMWIDTH;
+ /* Now compute the number of character space units necessary */
+ widthdiff = idealwidth * onepixel - stemwidth;
+
+ /*********************************************************************/
+ /* ALIGNMENT ZONES AND OVERSHOOT SUPPRESSION - HORIZONTAL STEMS ONLY */
+ /*********************************************************************/
+
+ stemshift = 0.0;
+
+ if ( !stems[stemno].vertical ) {
+
+ /* Get bottom and top boundaries of the stem. */
+ stembottom = stemstart;
+ stemtop = stemstart + stemwidth;
+
+ /* Find out if this stem intersects an alignment zone (the BlueFuzz */
+ /* entry in the Private dictionary specifies the number of character */
+ /* units to extend (in both directions) the effect of an alignment */
+ /* zone on a horizontal stem. The default value of BlueFuzz is 1. */
+ for (i = 0; i < numalignmentzones; ++i) {
+ if (alignmentzones[i].topzone) {
+ if (stemtop >= alignmentzones[i].bottomy &&
+ stemtop <= alignmentzones[i].topy + blues->BlueFuzz) {
+ break; /* We found a top-zone */
+ }
+ } else {
+ if (stembottom <= alignmentzones[i].topy &&
+ stembottom >= alignmentzones[i].bottomy - blues->BlueFuzz) {
+ break; /* We found a bottom-zone */
+ }
+ }
+ }
+
+ if (i < numalignmentzones) { /* We found an intersecting zone (number i). */
+ suppressovershoot = FALSE;
+ enforceovershoot = FALSE;
+
+ /* When 1 character space unit is rendered smaller than BlueScale
+ device units (pixels), we must SUPPRESS overshoots. Otherwise,
+ if the top (or bottom) of this stem is more than BlueShift character
+ space units away from the flat position, we must ENFORCE overshoot. */
+
+ if (unitpixels < blues->BlueScale){
+ suppressovershoot = TRUE;
+ }
+ else{
+ if (alignmentzones[i].topzone){
+ if (stemtop >= alignmentzones[i].bottomy + blues->BlueShift){
+ enforceovershoot = TRUE;
+ }
+ else
+ if (stembottom <= alignmentzones[i].topy - blues->BlueShift){
+ enforceovershoot = TRUE;
+ }
+ }
+ }
+
+
+ /*************************************************/
+ /* ALIGN THE FLAT POSITION OF THE ALIGNMENT ZONE */
+ /*************************************************/
+
+ /* Compute the position of the alignment zone's flat position in
+ device space and the amount of shift needed to align it on a
+ pixel boundary. Move all stems this amount. */
+
+ if (alignmentzones[i].topzone)
+ flatposition = alignmentzones[i].bottomy;
+ else
+ flatposition = alignmentzones[i].topy;
+
+ /* Find the flat position in pixels */
+ flatpospixels = flatposition * unitpixels;
+
+ /* Find the stem shift necessary to align the flat
+ position on a pixel boundary, and use this shift for all stems */
+ stemshift = (ROUND(flatpospixels) - flatpospixels) * onepixel;
+
+ /************************************************/
+ /* HANDLE OVERSHOOT ENFORCEMENT AND SUPPRESSION */
+ /************************************************/
+
+ /* Compute overshoot amount (non-negative) */
+ if (alignmentzones[i].topzone)
+ overshoot = stemtop - flatposition;
+ else
+ overshoot = flatposition - stembottom;
+
+ if (overshoot > 0.0) {
+ /* ENFORCE overshoot by shifting the entire stem (if necessary) so that
+ it falls at least one pixel beyond the flat position. */
+
+ if (enforceovershoot){
+ if (overshoot < onepixel){
+ if (alignmentzones[i].topzone)
+ stemshift += onepixel - overshoot;
+ else
+ stemshift -= onepixel - overshoot;
+ }
+ }
+
+
+ /* SUPPRESS overshoot by aligning the stem to the alignment zone's
+ flat position. */
+
+ if (suppressovershoot){
+ if (alignmentzones[i].topzone)
+ stemshift -= overshoot;
+ else
+ stemshift += overshoot;
+ }
+ }
+
+ /************************************************************/
+ /* COMPUTE HINT VALUES FOR EACH SIDE OF THE HORIZONTAL STEM */
+ /************************************************************/
+
+ /* If the stem was aligned by a topzone, we expand or contract the stem
+ only at the bottom - since the stem top was aligned by the zone.
+ If the stem was aligned by a bottomzone, we expand or contract the stem
+ only at the top - since the stem bottom was aligned by the zone. */
+ if (alignmentzones[i].topzone) {
+ lbhintvalue = stemshift - widthdiff; /* bottom */
+ rthintvalue = stemshift; /* top */
+ } else {
+ lbhintvalue = stemshift; /* bottom */
+ rthintvalue = stemshift + widthdiff; /* top */
+ }
+
+ stems[stemno].lbhintval = lbhintvalue;
+ stems[stemno].rthintval = rthintvalue;
+
+ /* store grid-aligned stems values */
+ stems[stemno].aly = stemstart + lbhintvalue;
+ stems[stemno].aldy = stemwidth + widthdiff;
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1alignedhstem\n", (stems[stemno].aly)*up,
+ (stems[stemno].aldy)*up);
+#endif
+ return(0);
+
+ } /* endif (i < numalignmentzones) */
+
+ /* We didn't find any alignment zones intersecting this stem, so
+ proceed with normal stem alignment below. */
+
+ } /* endif (!stems[stemno].vertical) */
+
+ /* Align stem with pixel boundaries on device */
+ stemstart = stemstart - widthdiff / 2;
+ stemshift = ROUND(stemstart * unitpixels) * onepixel - stemstart;
+
+ /* Adjust the boundaries of the stem */
+ lbhintvalue = stemshift - widthdiff / 2; /* left or bottom */
+ rthintvalue = stemshift + widthdiff / 2; /* right or top */
+
+ if (stems[stemno].vertical) {
+ stems[stemno].lbhintval = lbhintvalue;
+ stems[stemno].rthintval = rthintvalue;
+
+ /* store grid-aligned stem values */
+ stems[stemno].alx = stemstart + stemshift;
+ stems[stemno].aldx = stemwidth + widthdiff;
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1alignedvstem\n", (stems[stemno].alx)*up,
+ (stems[stemno].aldx)*up);
+#endif
+ } else {
+ stems[stemno].lbhintval = lbhintvalue;
+ stems[stemno].rthintval = rthintvalue;
+
+ /* store grid-aligned stem values */
+ stems[stemno].aly = stemstart + stemshift;
+ stems[stemno].aldy = stemwidth + widthdiff;
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1alignedhstem\n", (stems[stemno].aly)*up,
+ (stems[stemno].aldy)*up);
+#endif
+ }
+ return(0);
+
+}
+
+
+#define LEFT 1
+#define RIGHT 2
+#define BOTTOM 3
+#define TOP 4
+
+
+/***********************************************************************/
+/* Find the vertical and horizontal stems that the current point */
+/* (x, y) may be involved in. At most one horizontal and one vertical */
+/* stem can apply to a single point, since there are no overlaps */
+/* allowed. */
+/* The point list updated by this function. */
+/* Hints are ignored inside a DotSection. */
+/***********************************************************************/
+static void FindStems( double x, double y,
+ double dx, double dy,
+ double nextdx, double nextdy)
+{
+ int i;
+ int newvert, newhor;
+ int newhorhalf, newverthalf;
+
+ /* The following values will be used to decide whether a curve
+ crosses or touches a stem in an aligned manner or not */
+ double dtana = 0.0; /* tangent of pre-delta against horizontal line */
+ double dtanb = 0.0; /* tangent of pre-delta against vertical line */
+ double nextdtana = 0.0; /* tangent of post-delta against horizontal line */
+ double nextdtanb = 0.0; /* tangent of post-delta against vertical line */
+
+
+ /* setup default hinted position */
+ ppoints[numppoints-1].ax = ppoints[numppoints-1].x;
+ ppoints[numppoints-1].ay = ppoints[numppoints-1].y;
+ if ( ppoints[numppoints-1].hinted == -1 )
+ /* point is not to be hinted! */
+ return;
+ else
+ ppoints[numppoints-1].hinted = 0;
+
+ if ( InDotSection )
+ return;
+
+ if ( ProcessHints == 0 ) {
+ return;
+ }
+
+ /* setup (absolute) tangent values and define limits that indicate nearly
+ horizontal or nearly vertical alignment */
+#define NEARLYVERTICAL 0.2 /* This corresponds to about 11.3 degress deviation */
+#define NEARLYHORIZONTAL 0.2 /* from the ideal direction. */
+ if ( dy != 0 ) {
+ dtana = dx/dy;
+ if ( dtanb < 0.0 )
+ dtana = -dtana;
+ }
+ else
+ dtana = NEARLYHORIZONTAL;
+ if ( dx != 0 ) {
+ dtanb = dy/dx;
+ if ( dtanb < 0.0 )
+ dtanb = -dtanb;
+ }
+ else
+ dtanb = NEARLYVERTICAL;
+ if ( nextdy != 0 ) {
+ nextdtana = nextdx/nextdy;
+ if ( nextdtana < 0.0 )
+ nextdtana = -nextdtana;
+ }
+ else
+ nextdtana = NEARLYHORIZONTAL;
+ if ( nextdx != 0 ) {
+ nextdtanb = nextdy/nextdx;
+ if ( nextdtanb < 0.0 )
+ nextdtanb = -nextdtanb;
+ }
+ else
+ nextdtanb = NEARLYVERTICAL;
+
+ newvert = newhor = -1;
+ newhorhalf = newverthalf = -1;
+
+ for (i = currstartstem; i < numstems; i++) {
+ if (stems[i].vertical) { /* VSTEM hint */
+ /* OK, stem is crossed in an aligned way */
+ if ( (dtana <= NEARLYVERTICAL) || (nextdtana <= NEARLYVERTICAL)) {
+ if ((x >= stems[i].x ) &&
+ (x <= stems[i].x+stems[i].dx )) {
+ newvert = i;
+ if (x < stems[i].x+stems[i].dx / 2)
+ newverthalf = LEFT;
+ else
+ newverthalf = RIGHT;
+ }
+ }
+ }
+ else { /* HSTEM hint */
+ if ( (dtanb <= NEARLYHORIZONTAL) || (nextdtanb <= NEARLYHORIZONTAL)) {
+ /* OK, stem is crossed in an aligned way */
+ if ((y >= stems[i].y ) &&
+ (y <= stems[i].y+stems[i].dy )) {
+ newhor = i;
+ if (y < stems[i].y+stems[i].dy / 2)
+ newhorhalf = BOTTOM;
+ else
+ newhorhalf = TOP;
+ }
+ }
+ }
+ }
+
+ if ( newvert != -1 ) {
+ /* mark the latest point in the point list to be v-hinted! */
+ if ( newverthalf == LEFT ) {
+ /* left hint */
+ ppoints[numppoints-1].ax += stems[newvert].lbhintval;
+ }
+ else {
+ /* right hint */
+ ppoints[numppoints-1].ax += stems[newvert].rthintval;
+ }
+ ppoints[numppoints-1].hinted |= 0x01;
+ }
+ if ( newhor != -1 ) {
+ /* mark the latest point in the point list to be h-hinted! */
+ if ( newhorhalf == BOTTOM ) {
+ /* bottom hint */
+ ppoints[numppoints-1].ay += stems[newhor].lbhintval;
+ }
+ else {
+ /* top hint */
+ ppoints[numppoints-1].ay += stems[newhor].rthintval;
+ }
+ ppoints[numppoints-1].hinted |= 0x02;
+ }
+
+ return;
+
+}
+
+
+/* Type 1 internal functions */
+static int ClearStack()
+{
+ Top = -1;
+ return(0);
+
+}
+
+static int Push(Num)
+ DOUBLE Num;
+{
+ if (++Top < MAXSTACK) Stack[Top] = Num;
+ else Error0i("Push: Stack full\n");
+ return(0);
+
+}
+
+static int ClearCallStack()
+{
+ CallTop = -1;
+ return(0);
+}
+
+static int PushCall(CurrStrP, CurrIndex, CurrKey)
+ psobj *CurrStrP;
+ int CurrIndex;
+ unsigned short CurrKey;
+{
+ if (++CallTop < MAXCALLSTACK) {
+ CallStack[CallTop].currstrP = CurrStrP; /* save CharString pointer */
+ CallStack[CallTop].currindex = CurrIndex; /* save CharString index */
+ CallStack[CallTop].currkey = CurrKey; /* save decryption key */
+ }
+ else Error0i("PushCall: Stack full\n");
+ return(0);
+}
+
+static int PopCall(CurrStrPP, CurrIndexP, CurrKeyP)
+ psobj **CurrStrPP;
+ int *CurrIndexP;
+ unsigned short *CurrKeyP;
+{
+ if (CallTop >= 0) {
+ *CurrStrPP = CallStack[CallTop].currstrP; /* restore CharString pointer */
+ *CurrIndexP = CallStack[CallTop].currindex; /* restore CharString index */
+ *CurrKeyP = CallStack[CallTop--].currkey; /* restore decryption key */
+ }
+ else Error0i("PopCall: Stack empty\n");
+ return(0);
+}
+
+
+static int ClearPSFakeStack()
+{
+ PSFakeTop = -1;
+ return(0);
+}
+
+/* PSFakePush: Pushes a number onto the fake PostScript stack */
+static int PSFakePush(Num)
+ DOUBLE Num;
+{
+ if (++PSFakeTop < MAXPSFAKESTACK) PSFakeStack[PSFakeTop] = Num;
+ else Error0i("PSFakePush: Stack full\n");
+ return(0);
+}
+
+/* PSFakePop: Removes a number from the top of the fake PostScript stack */
+static DOUBLE PSFakePop ()
+{
+ if (PSFakeTop >= 0) return(PSFakeStack[PSFakeTop--]);
+
+ else Error0d("PSFakePop : Stack empty\n");
+
+ /*NOTREACHED*/
+}
+
+/***********************************************************************/
+/* Center a stem on the pixel grid -- used by HStem3 and VStem3 */
+/***********************************************************************/
+static struct segment *CenterStem(edge1, edge2)
+ DOUBLE edge1;
+ DOUBLE edge2;
+{
+ int idealwidth, verticalondevice;
+ DOUBLE leftx, lefty, rightx, righty, center, width;
+ DOUBLE widthx, widthy;
+ DOUBLE shift, shiftx, shifty;
+ DOUBLE Xpixels, Ypixels;
+ struct segment *p;
+
+ p = Loc(CharSpace, edge1, 0.0);
+ QueryLoc(p, IDENTITY, &leftx, &lefty);
+
+ p = Join(p, Loc(CharSpace, edge2, 0.0));
+ QueryLoc(p, IDENTITY, &rightx, &righty);
+ Destroy(p);
+
+ widthx = FABS(rightx - leftx);
+ widthy = FABS(righty - lefty);
+
+ if (widthy <= EPS) { /* verticalondevice hint */
+ verticalondevice = TRUE;
+ center = (rightx + leftx) / 2.0;
+ width = widthx;
+ }
+ else if (widthx <= EPS) { /* horizontal hint */
+ verticalondevice = FALSE;
+ center = (righty + lefty) / 2.0;
+ width = widthy;
+ }
+ else { /* neither horizontal nor verticalondevice and not oblique */
+ return (NULL);
+ }
+
+ idealwidth = ROUND(width);
+ if (idealwidth == 0) idealwidth = 1;
+ if (ODD(idealwidth)) { /* is ideal width odd? */
+ /* center stem over pixel */
+ shift = FLOOR(center) + 0.5 - center;
+ }
+ else {
+ /* align stem on pixel boundary */
+ shift = ROUND(center) - center;
+ }
+
+ if (verticalondevice) {
+ shiftx = shift;
+ shifty = 0.0;
+ } else {
+ shifty = shift;
+ shiftx = 0.0;
+ }
+
+ p = Loc(IDENTITY, shiftx, shifty);
+ QueryLoc(p, CharSpace, &Xpixels, &Ypixels);
+ wsoffsetX = Xpixels; wsoffsetY = Ypixels;
+ currx += wsoffsetX; curry += wsoffsetY;
+
+ return (p);
+}
+
+/*-----------------------------------------------------------------------
+ Decrypt - From Adobe Type 1 book page 63, with some modifications
+-----------------------------------------------------------------------*/
+#define KEY 4330 /* Initial key (seed) for CharStrings decryption */
+#define C1 52845 /* Multiplier for pseudo-random number generator */
+#define C2 22719 /* Constant for pseudo-random number generator */
+
+static unsigned short r; /* Pseudo-random sequence of keys */
+
+static unsigned char Decrypt(cipher)
+unsigned char cipher;
+{
+ unsigned char plain;
+
+ plain = cipher ^ (r >> 8);
+ r = (cipher + r) * C1 + C2;
+ return plain;
+}
+
+/* Get the next byte from the codestring being interpreted */
+static int DoRead(CodeP)
+ int *CodeP;
+{
+ if (strindex >= CharStringP->len) return(FALSE); /* end of string */
+ /* We handle the non-documented Adobe convention to use lenIV=-1 to
+ suppress charstring encryption. */
+ if (blues->lenIV==-1) {
+ *CodeP = (unsigned char) CharStringP->data.stringP[strindex++];
+ }
+ else {
+ *CodeP = Decrypt((unsigned char) CharStringP->data.stringP[strindex++]);
+ }
+
+ return(TRUE);
+}
+
+/* Strip blues->lenIV bytes from CharString and update encryption key */
+/* (the lenIV entry in the Private dictionary specifies the number of */
+/* random bytes at the beginning of each CharString; default is 4) */
+static void StartDecrypt()
+{
+ int Code;
+
+ r = KEY; /* Initial key (seed) for CharStrings decryption */
+ for (strindex = 0; strindex < blues->lenIV;){
+ if (!DoRead(&Code)) /* Read a byte and update decryption key */
+ Error0v("StartDecrypt: Premature end of CharString\n");
+ }
+
+}
+
+#undef DecodeDebug
+
+static int Decode(Code)
+ int Code;
+{
+ int Code1, Code2, Code3, Code4;
+
+ if (Code <= 31){ /* Code is [0,31] */
+#ifdef DecodeDebug
+ fprintf(stderr, "Decode: Code=%d -> Command\n", Code);
+#endif
+ DoCommand(Code);
+ }
+ else if (Code <= 246){ /* Code is [32,246] */
+#ifdef DecodeDebug
+ fprintf(stderr, "Decode: Code=%d -> number=%f\n",
+ Code, (DOUBLE)(Code-139));
+#endif
+ Push((DOUBLE)(Code - 139));
+ }
+ else if (Code <= 250) { /* Code is [247,250] */
+ if (!DoRead(&Code2)) goto ended;
+#ifdef DecodeDebug
+ fprintf(stderr, "Decode: Code=%d next Code=%d -> number=%f\n",
+ Code, Code2, (DOUBLE)(((Code - 247) << 8) + Code2 + 108));
+#endif
+ Push((DOUBLE)(((Code - 247) << 8) + Code2 + 108));
+ }
+ else if (Code <= 254) { /* Code is [251,254] */
+ if (!DoRead(&Code2)) goto ended;
+#ifdef DecodeDebug
+ fprintf(stderr, "Decode: Code=%d, next Code=%d -> number=%f\n",
+ Code, Code2, (DOUBLE)( -((Code - 251) << 8) - Code2 - 108));
+#endif
+ Push((DOUBLE)( -((Code - 251) << 8) - Code2 - 108));
+ }
+ else { /* Code is 255 */
+ if (!DoRead(&Code1)) goto ended;
+ if (!DoRead(&Code2)) goto ended;
+ if (!DoRead(&Code3)) goto ended;
+ if (!DoRead(&Code4)) goto ended;
+#ifdef DecodeDebug
+ fprintf(stderr, "Decode: Code=255, Code1=%d, Code2=%d, Code3=%d, Code4=%d -> number=%f\n",
+ Code1, Code2, Code3, Code4,
+ (DOUBLE)((((((Code1<<8) + Code2)<<8) + Code3)<<8) + Code4));
+#endif
+ Push((DOUBLE)((((((Code1<<8) + Code2)<<8) + Code3)<<8) + Code4));
+ }
+ return(0);
+
+ended: Error0i("Decode: Premature end of Type 1 CharString");
+}
+
+#undef DoCommandDebug
+
+/* Interpret a command code */
+static int DoCommand(Code)
+ int Code;
+{
+ switch(Code) {
+ case HSTEM: /* |- y dy HSTEM |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: HStem\n");
+#endif
+ /* Vertical range of a horizontal stem zone */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ HStem(Stack[0], Stack[1]);
+ ClearStack();
+ break;
+ case VSTEM: /* |- x dx VSTEM |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: VStem\n");
+#endif
+ /* Horizontal range of a vertical stem zone */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ VStem(Stack[0], Stack[1]);
+ ClearStack();
+ break;
+ case VMOVETO: /* |- dy VMOVETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: VMoveto\n");
+#endif
+ /* Vertical MOVETO, equivalent to 0 dy RMOVETO */
+ if (Top < 0) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RMoveTo(0.0, Stack[0]);
+ ClearStack();
+ break;
+ case RLINETO: /* |- dx dy RLINETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: RLineto\n");
+#endif
+ /* Like RLINETO in PostScript */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RLineTo(Stack[0], Stack[1]);
+ ClearStack();
+ break;
+ case HLINETO: /* |- dx HLINETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: HLineto\n");
+#endif
+ /* Horizontal LINETO, equivalent to dx 0 RLINETO */
+ if (Top < 0) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RLineTo(Stack[0], 0.0);
+ ClearStack();
+ break;
+ case VLINETO: /* |- dy VLINETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: VLineto\n");
+#endif
+ /* Vertical LINETO, equivalent to 0 dy RLINETO */
+ if (Top < 0) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RLineTo(0.0, Stack[0]);
+ ClearStack();
+ break;
+ case RRCURVETO:
+#ifdef DoCommandDebug
+ printf("DoCommand: RRCurveto\n");
+#endif
+ /* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */
+ /* Relative RCURVETO, equivalent to dx1 dy1 */
+ /* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */
+ /* (dy1+dy2+dy3) RCURVETO in PostScript */
+ if (Top < 5) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RRCurveTo(Stack[0], Stack[1], Stack[2], Stack[3],
+ Stack[4], Stack[5]);
+ ClearStack();
+ break;
+ case CLOSEPATH: /* - CLOSEPATH |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: ClosePath\n");
+#endif
+ /* Closes a subpath without repositioning the */
+ /* current point */
+ DoClosePath();
+ ClearStack();
+ break;
+ case CALLSUBR: /* subr# CALLSUBR - */
+#ifdef DoCommandDebug
+ printf("DoCommand: CallSubr\n");
+#endif
+ /* Calls a CharString subroutine with index */
+ /* subr# from the Subrs array */
+ if (Top < 0) Error1i("DoCommand: Stack low\n (Code=%d)", Code);
+ CallSubr((int)Stack[Top--]);
+ break;
+ case RETURN: /* - RETURN - */
+#ifdef DoCommandDebug
+ printf("DoCommand: Return\n");
+#endif
+ /* Returns from a Subrs array CharString */
+ /* subroutine called with CALLSUBR */
+ Return();
+ break;
+ case ESCAPE: /* ESCAPE to two-byte command code */
+#ifdef DoCommandDebug
+ printf("DoCommand: Escape to 2 Byte Code (Code=%d)\n", Code);
+#endif
+ if (!DoRead(&Code)) Error0i("DoCommand: ESCAPE is last byte\n");
+ Escape(Code);
+ break;
+ case HSBW: /* |- sbx wx HSBW |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: HSBW\n");
+#endif
+ /* Set the left sidebearing point to (sbx,0), */
+ /* set the character width vector to (wx,0). */
+ /* Equivalent to sbx 0 wx 0 SBW. Space */
+ /* character should have sbx = 0 */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ Sbw(Stack[0], 0.0, Stack[1], 0.0);
+ ClearStack();
+ break;
+ case ENDCHAR: /* - ENDCHAR |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: EndChar\n");
+#endif
+ /* Finishes a CharString outline */
+ EndChar();
+ ClearStack();
+ break;
+ case RMOVETO: /* |- dx dy RMOVETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: RMoveto\n");
+#endif
+ /* Behaves like RMOVETO in PostScript */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RMoveTo(Stack[0], Stack[1]);
+ ClearStack();
+ break;
+ case HMOVETO: /* |- dx HMOVETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: HMovetoUnassigned\n");
+#endif
+ /* Horizontal MOVETO. Equivalent to dx 0 RMOVETO */
+ if (Top < 0) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RMoveTo(Stack[0], 0.0);
+ ClearStack();
+ break;
+ case VHCURVETO: /* |- dy1 dx2 dy2 dx3 VHCURVETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: VHCurveto\n");
+#endif
+ /* Vertical-Horizontal CURVETO, equivalent to */
+ /* 0 dy1 dx2 dy2 dx3 0 RRCURVETO */
+ if (Top < 3) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RRCurveTo(0.0, Stack[0], Stack[1], Stack[2],
+ Stack[3], 0.0);
+ ClearStack();
+ break;
+ case HVCURVETO: /* |- dx1 dx2 dy2 dy3 HVCURVETO |- */
+#ifdef DoCommandDebug
+ printf("DoCommand: HCurveto\n");
+#endif
+ /* Horizontal-Vertical CURVETO, equivalent to */
+ /* dx1 0 dx2 dy2 0 dy3 RRCURVETO */
+ if (Top < 3) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ RRCurveTo(Stack[0], 0.0, Stack[1], Stack[2], 0.0, Stack[3]);
+ ClearStack();
+ break;
+ case UNKNOWN_15:
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ ClearStack();
+ break;
+ default: /* Unassigned command code */
+#ifdef DoCommandDebug
+ printf("DoCommand: Unassigned\n");
+#endif
+ ClearStack();
+ Error1i("DoCommand: Unassigned code %d\n", Code);
+ }
+ return(0);
+
+}
+
+static int Escape(Code)
+ int Code;
+{
+ int i, Num;
+ struct segment *p;
+
+ switch(Code) {
+ case DOTSECTION: /* - DOTSECTION |- */
+ /* Brackets an outline section for the dots in */
+ /* letters such as "i", "j", and "!". */
+ DotSection();
+ ClearStack();
+ break;
+ case VSTEM3: /* |- x0 dx0 x1 dx1 x2 dx2 VSTEM3 |- */
+ /* Declares the horizontal ranges of three */
+ /* vertical stem zones between x0 and x0+dx0, */
+ /* x1 and x1+dx1, and x2 and x2+dx2. */
+ if (Top < 5) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ if (!wsset && ProcessHints) {
+ /* Shift the whole character so that the middle stem is centered. */
+ p = CenterStem(Stack[2] + sidebearingX, Stack[3]);
+ path = Join(path, p);
+ wsset = 1;
+ }
+
+ VStem(Stack[0], Stack[1]);
+ VStem(Stack[2], Stack[3]);
+ VStem(Stack[4], Stack[5]);
+ ClearStack();
+ break;
+ case HSTEM3: /* |- y0 dy0 y1 dy1 y2 dy2 HSTEM3 |- */
+ /* Declares the vertical ranges of three hori- */
+ /* zontal stem zones between y0 and y0+dy0, */
+ /* y1 and y1+dy1, and y2 and y2+dy2. */
+ if (Top < 5) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ HStem(Stack[0], Stack[1]);
+ HStem(Stack[2], Stack[3]);
+ HStem(Stack[4], Stack[5]);
+ ClearStack();
+ break;
+ case SEAC: /* |- asb adx ady bchar achar SEAC |- */
+ /* Standard Encoding Accented Character. */
+ if (Top < 4) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ Seac(Stack[0], Stack[1], Stack[2],
+ (unsigned char) Stack[3],
+ (unsigned char) Stack[4]);
+ ClearStack();
+ break;
+ case SBW: /* |- sbx sby wx wy SBW |- */
+ /* Set the left sidebearing point to (sbx,sby), */
+ /* set the character width vector to (wx,wy). */
+ if (Top < 3) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ Sbw(Stack[0], Stack[1], Stack[2], Stack[3]);
+ ClearStack();
+ break;
+ case DIV: /* num1 num2 DIV quotient */
+ /* Behaves like DIV in the PostScript language */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ Stack[Top-1] = Div(Stack[Top-1], Stack[Top]);
+ Top--;
+ break;
+ case CALLOTHERSUBR:
+ /* arg1 ... argn n othersubr# CALLOTHERSUBR - */
+ /* Make calls on the PostScript interpreter */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ Num = Stack[Top-1];
+ if (Top < Num+1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ for (i = 0; i < Num; i++) PSFakePush(Stack[Top - i - 2]);
+ Top -= Num + 2;
+ CallOtherSubr((int)Stack[Top + Num + 2]);
+ break;
+ case POP: /* - POP number */
+ /* Removes a number from the top of the */
+ /* PostScript interpreter stack and pushes it */
+ /* onto the Type 1 BuildChar operand stack */
+ Push(PSFakePop());
+ break;
+ case SETCURRENTPOINT: /* |- x y SETCURRENTPOINT |- */
+ /* Sets the current point to (x,y) in absolute */
+ /* character space coordinates without per- */
+ /* forming a CharString MOVETO command */
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ SetCurrentPoint(Stack[0], Stack[1]);
+ ClearStack();
+ break;
+ case UNKNOWN_15:
+ if (Top < 1) Error1i("DoCommand: Stack low (Code=%d)\n", Code);
+ ClearStack();
+ break;
+ default: /* Unassigned escape code command */
+ ClearStack();
+ Error1i("Escape: Unassigned code %d\n", Code);
+ }
+ return(0);
+
+}
+
+/* |- y dy HSTEM |- */
+/* Declares the vertical range of a horizontal stem zone */
+/* between coordinates y and y + dy */
+/* y is relative to the left sidebearing point */
+static int HStem(y, dy)
+ DOUBLE y, dy;
+{
+ IfTrace2((FontDebug), "Hstem %f %f\n", y, dy);
+ if (ProcessHints) {
+ if (numstems >= MAXSTEMS) Error0i("HStem: Too many hints\n");
+ if (dy < 0.0) {y += dy; dy = -dy;}
+ stems[numstems].vertical = FALSE;
+ stems[numstems].x = 0.0;
+ stems[numstems].y = sidebearingY + y + wsoffsetY;
+ stems[numstems].dx = 0.0;
+ stems[numstems].dy = dy;
+ ComputeStem(numstems);
+ numstems++;
+ }
+ return(0);
+}
+
+/* |- x dx VSTEM |- */
+/* Declares the horizontal range of a vertical stem zone */
+/* between coordinates x and x + dx */
+/* x is relative to the left sidebearing point */
+static int VStem(x, dx)
+ DOUBLE x, dx;
+{
+ IfTrace2((FontDebug), "Vstem %f %f\n", x, dx);
+ if (ProcessHints) {
+ if (numstems >= MAXSTEMS) Error0i("VStem: Too many hints\n");
+ if (dx < 0.0) {x += dx; dx = -dx;}
+ stems[numstems].vertical = TRUE;
+ stems[numstems].x = sidebearingX + x + wsoffsetX;
+ stems[numstems].y = 0.0;
+ stems[numstems].dx = dx;
+ stems[numstems].dy = 0.0;
+ ComputeStem(numstems);
+ numstems++;
+ }
+ return(0);
+}
+
+/* |- dx dy RLINETO |- */
+/* Behaves like RLINETO in PostScript */
+static int RLineTo(dx, dy)
+ DOUBLE dx, dy;
+{
+ long pindex = 0;
+
+ /* compute hinting for previous segment! */
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx, dy);
+
+ /* Allocate a new path point and pre-setup data */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx + dx;
+ ppoints[pindex].y = curry + dy;
+ ppoints[pindex].ax = ppoints[pindex].x;
+ ppoints[pindex].ay = ppoints[pindex].y;
+ ppoints[pindex].type = PPOINT_LINE;
+ ppoints[pindex].hinted = 0;
+
+ /* update ideal position */
+ currx += dx;
+ curry += dy;
+
+ return(0);
+}
+
+/* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */
+/* Relative RCURVETO, equivalent to dx1 dy1 */
+/* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */
+/* (dy1+dy2+dy3) RCURVETO in PostScript */
+static int RRCurveTo(dx1, dy1, dx2, dy2, dx3, dy3)
+ DOUBLE dx1, dy1, dx2, dy2, dx3, dy3;
+{
+ long pindex = 0;
+
+ /* compute hinting for previous point! */
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx1, dy1);
+
+ /* Allocate three new path points and pre-setup data */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx + dx1;
+ ppoints[pindex].y = curry + dy1;
+ ppoints[pindex].ax = ppoints[pindex].x;
+ ppoints[pindex].ay = ppoints[pindex].y;
+ ppoints[pindex].type = PPOINT_BEZIER_B;
+ ppoints[pindex].hinted = 0;
+
+ /* update ideal position */
+ currx += dx1;
+ curry += dy1;
+
+ /* compute hinting for previous point! */
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx2, dy2);
+
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx + dx2;
+ ppoints[pindex].y = curry + dy2;
+ ppoints[pindex].ax = ppoints[pindex].x;
+ ppoints[pindex].ay = ppoints[pindex].y;
+ ppoints[pindex].type = PPOINT_BEZIER_C;
+ ppoints[pindex].hinted = 0;
+
+ /* update ideal position */
+ currx += dx2;
+ curry += dy2;
+
+ /* compute hinting for previous point! */
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx3, dy3);
+
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx + dx3;
+ ppoints[pindex].y = curry + dy3;
+ ppoints[pindex].ax = ppoints[pindex].x;
+ ppoints[pindex].ay = ppoints[pindex].y;
+ ppoints[pindex].type = PPOINT_BEZIER_D;
+ ppoints[pindex].hinted = 0;
+
+ /* update ideal position */
+ currx += dx3;
+ curry += dy3;
+
+ return(0);
+}
+
+/* - CLOSEPATH |- */
+/* Closes a subpath WITHOUT repositioning the */
+/* current point */
+static int DoClosePath()
+{
+ long pindex = 0;
+ long i = 0;
+ long tmpind;
+ double deltax = 0.0;
+ double deltay = 0.0;
+
+ /* If this ClosePath command together with the starting point of this
+ path completes to a segment aligned to a stem, we would miss
+ hinting for this point. --> Check and explicitly care for this! */
+ /* 1. Step back in the point list to the last moveto-point */
+ i = numppoints - 1;
+ while ( (i > 0) && (ppoints[i].type != PPOINT_MOVE ) ) {
+ --i;
+ }
+
+ /* 2. Re-hint starting point and hint current point */
+ if ( ppoints[i].type == PPOINT_MOVE) {
+ deltax = ppoints[i].x - ppoints[numppoints-1].x;
+ deltay = ppoints[i].y - ppoints[numppoints-1].y;
+
+ /* save nummppoints and reset to move point */
+ tmpind = numppoints;
+ numppoints = i + 1;
+
+ /* re-hint starting point of current subpath (uses the value of numppoints!) */
+ FindStems( ppoints[i].x, ppoints[i].y, deltax, deltay,
+ ppoints[i+1].x-ppoints[i].x, ppoints[i+1].y-ppoints[i].y);
+
+ /* restore numppoints and setup hinting for current point */
+ numppoints = tmpind;
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y,
+ deltax, deltay);
+ }
+
+ /* Allocate a new path point and pre-setup data */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx;
+ ppoints[pindex].y = curry;
+ ppoints[pindex].ax = ppoints[pindex-1].x;
+ ppoints[pindex].ay = ppoints[pindex-1].y;
+ ppoints[pindex].type = PPOINT_CLOSEPATH;
+ ppoints[pindex].hinted = 0;
+
+ return(0);
+}
+
+/* subr# CALLSUBR - */
+/* Calls a CharString subroutine with index */
+/* subr# from the Subrs array */
+static int CallSubr(subrno)
+ int subrno;
+{
+ IfTrace2((FontDebug), "CallSubr %d (CallStackSize=%d)\n", subrno, CallTop);
+ if ((subrno < 0) || (subrno >= SubrsP->len))
+ Error0i("CallSubr: subrno out of range\n");
+ PushCall(CharStringP, strindex, r);
+ CharStringP = &SubrsP->data.arrayP[subrno];
+ StartDecrypt();
+ return(0);
+}
+
+/* - RETURN - */
+/* Returns from a Subrs array CharString */
+/* subroutine called with CALLSUBR */
+static int Return()
+{
+ IfTrace0((FontDebug), "Return\n");
+ PopCall(&CharStringP, &strindex, &r);
+ return(0);
+}
+
+/* - ENDCHAR |- */
+/* Finishes a CharString outline */
+/* Executes SETCHACHEDEVICE using a bounding box */
+/* it computes directly from the character outline */
+/* and using the width information acquired from a previous */
+/* HSBW or SBW. It then calls a special version of FILL */
+/* or STROKE depending on the value of PaintType in the */
+/* font dictionary */
+static int EndChar()
+{
+ long pindex = 0;
+
+ IfTrace0((FontDebug), "EndChar\n");
+
+ /* There is no need to compute and set bounding box for
+ the cache, since XIMAGER does that on the fly. */
+
+ /* Allocate a new path point and pre-setup data.
+ Note: For this special case, we use the variables that usually
+ store hinted coordinates for the escapement of the character.
+ It is required in handleCurrentSegment().
+ */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx;
+ ppoints[pindex].y = curry;
+ ppoints[pindex].ax = escapementX;
+ ppoints[pindex].ay = escapementY;
+ ppoints[pindex].type = PPOINT_ENDCHAR;
+ ppoints[pindex].hinted = -1;
+
+ return(0);
+
+}
+
+/* |- dx dy RMOVETO |- */
+/* Behaves like RMOVETO in PostScript */
+static int RMoveTo(dx,dy)
+ DOUBLE dx,dy;
+{
+ long pindex = 0;
+
+ /* Compute hinting for this path point! */
+ if ( numppoints == 1 ) {
+ /* Since RMoveTo for this case starts a new path segment
+ (flex-constructs have already been handled), the current
+ point is hinted here only taking the next point into account,
+ but not the previous. Later on, in DoClosePath(), we'll step
+ back to this point and the position might be rehinted. */
+ FindStems( currx, curry, 0, 0, dx, dy);
+ }
+ else {
+ FindStems( currx, curry, ppoints[numppoints-2].x, ppoints[numppoints-2].y, dx, dy);
+ }
+
+
+
+ /* Allocate a new path point and pre-setup data */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx + dx;
+ ppoints[pindex].y = curry + dy;
+ ppoints[pindex].ax = ppoints[pindex].x;
+ ppoints[pindex].ay = ppoints[pindex].y;
+ ppoints[pindex].type = PPOINT_MOVE;
+ ppoints[pindex].hinted = 0;
+
+ /* update ideal position */
+ currx += dx;
+ curry += dy;
+
+ return 0;
+}
+
+/* - DOTSECTION |- */
+/* Brackets an outline section for the dots in */
+/* letters such as "i", "j", and "!". */
+static int DotSection()
+{
+ IfTrace0((FontDebug), "DotSection\n");
+ InDotSection = !InDotSection;
+ return(0);
+}
+
+/* |- asb adx ady bchar achar SEAC |- */
+/* Standard Encoding Accented Character. */
+static int Seac(asb, adx, ady, bchar, achar)
+ DOUBLE asb, adx, ady;
+ unsigned char bchar, achar;
+{
+ int Code;
+ long pindex = 0;
+
+ isseac = 1;
+ seacaccent = achar;
+ seacbase = bchar;
+
+ IfTrace4((FontDebug), "SEAC %f %f %f %d ", asb, adx, ady, bchar);
+ IfTrace1((FontDebug), "%d\n", achar);
+
+ /* Move adx - asb, ady over and up from base char's sbpoint. */
+ /* (We use adx - asb to counteract the accents sb shift.) */
+ /* The variables accentoffsetX/Y modify sidebearingX/Y in Sbw(). */
+ /* Note that these incorporate the base character's sidebearing shift by */
+ /* using the current sidebearingX, Y values. */
+ accentoffsetX = adx - asb;
+ accentoffsetY = ady;
+
+ /* Set path = NULL to avoid complaints from Sbw(). */
+ path = NULL;
+
+ /* Go find the CharString for the accent's code via an upcall */
+ CharStringP = GetType1CharString(Environment, achar);
+ if (CharStringP == NULL) {
+ Error1i("Invalid accent ('%03o) in SEAC\n", achar);
+ }
+ StartDecrypt();
+
+ ClearStack();
+ ClearPSFakeStack();
+ ClearCallStack();
+
+ for (;;) {
+ if (!DoRead(&Code)) break;
+ Decode(Code);
+ if (errflag) return(0);
+ }
+
+ /* Allocate a new path point. Data in this case is not relevant
+ in handleSegment(), we merely insert a snap() in order to return
+ to origin of the accent char. */
+ pindex = nextPPoint();
+ ppoints[pindex].x = accentoffsetX;
+ ppoints[pindex].y = accentoffsetY;
+ ppoints[pindex].ax = accentoffsetX;
+ ppoints[pindex].ay = accentoffsetY;
+ ppoints[pindex].type = PPOINT_SEAC;
+ ppoints[pindex].hinted = 0;
+
+ /* We must reset these to null now. */
+ accentoffsetX = accentoffsetY = 0;
+
+ /* go find the CharString for the base char's code via an upcall */
+ CharStringP = GetType1CharString(Environment, bchar);
+ StartDecrypt();
+
+ ClearStack();
+ ClearPSFakeStack();
+ ClearCallStack();
+
+ InitStems();
+
+ for (;;) {
+ if (!DoRead(&Code)) break;
+ Decode(Code);
+ if (errflag) return(0);
+ }
+
+ return(0);
+}
+
+
+/* |- sbx sby wx wy SBW |- */
+/* Set the left sidebearing point to (sbx,sby), */
+/* set the character width vector to (wx,wy). */
+static int Sbw(sbx, sby, wx, wy)
+ DOUBLE sbx, sby, wx, wy;
+{
+ long pindex = 0;
+
+
+ IfTrace4((FontDebug), "SBW %f %f %f %f\n", sbx, sby, wx, wy);
+
+ escapementX = wx; /* Character width vector */
+ escapementY = wy;
+
+ /* Sidebearing values are sbx, sby args, plus accent offset from Seac(). */
+ sidebearingX = sbx + accentoffsetX;
+ sidebearingY = sby + accentoffsetY;
+
+ currx = sidebearingX;
+ curry = sidebearingY;
+ /*
+ path = Join(path, Loc(CharSpace, sidebearingX, sidebearingY));
+ if (ProcessHints) {
+ hcurrx = sidebearingX;
+ hcurry = sidebearingY;
+ }
+ */
+
+ /* Allocate a path point and setup.
+ Note: In this special case, we store the char escapement in the members
+ ax and ay. They are required in handleCurrentSegment(). Hinting
+ is not required for SBW, anyhow!
+ */
+ pindex = nextPPoint();
+ ppoints[pindex].x = currx;
+ ppoints[pindex].y = curry;
+ ppoints[pindex].ax = wx;
+ ppoints[pindex].ay = wy;
+ ppoints[pindex].type = PPOINT_SBW;
+ ppoints[pindex].hinted = -1; /* indicate that point is not to be hinted */
+
+ return(0);
+}
+
+ /* num1 num2 DIV quotient */
+/* Behaves like DIV in the PostScript language */
+static DOUBLE Div(num1, num2)
+ DOUBLE num1, num2;
+{
+ IfTrace2((FontDebug), "Div %f %f\n", num1, num2);
+ return(num1 / num2);
+}
+
+/*
+ The following four subroutines (FlxProc, FlxProc1, FlxProc2, and
+ HintReplace) are C versions of the OtherSubrs Programs, which were
+ were published in the Adobe Type 1 Font Format book.
+
+ The Flex outline fragment is described by
+ c1: (x0, y0) = c3: (x0, yshrink(y0)) or (xshrink(x0), y0)
+ " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1)
+ " (x2, y2) - reference point
+ c2: (x0, y0) = c4: (x0, yshrink(y0)) or (xshrink(x0), y0)
+ " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1)
+ " (x2, y2) = " (x2, y2), rightmost endpoint
+ c3: (x0, y0) - control point, 1st Bezier curve
+ " (x1, y1) - control point, -"-
+ " (x2, y2) - end point, -"-
+ c4: (x0, y0) - control point, 2nd Bezier curve
+ " (x1, y1) - control point, -"-
+ " (x2, y2) - end point, -"-
+ ep: (epY, epX) - final endpoint (should be same as c4: (x2, y2))
+ idmin - minimum Flex height (1/100 pixel) at which to render curves
+*/
+
+#define dtransform(dxusr,dyusr,dxdev,dydev) { \
+ register struct segment *point = Loc(CharSpace, dxusr, dyusr); \
+ QueryLoc(point, IDENTITY, dxdev, dydev); \
+ Destroy(point); \
+}
+
+#define itransform(xdev,ydev,xusr,yusr) { \
+ register struct segment *point = Loc(IDENTITY, xdev, ydev); \
+ QueryLoc(point, CharSpace, xusr, yusr); \
+ Destroy(point); \
+}
+
+#define transform(xusr,yusr,xdev,ydev) dtransform(xusr,yusr,xdev,ydev)
+
+#define PaintType (0)
+
+#define xshrink(x) ((x - c4x2) * shrink +c4x2)
+#define yshrink(y) ((y - c4y2) * shrink +c4y2)
+
+#define PickCoords(flag) \
+ if (flag) { /* Pick "shrunk" coordinates */ \
+ x0 = c1x0; y0 = c1y0; \
+ x1 = c1x1; y1 = c1y1; \
+ x2 = c1x2; y2 = c1y2; \
+ x3 = c2x0; y3 = c2y0; \
+ x4 = c2x1; y4 = c2y1; \
+ x5 = c2x2; y5 = c2y2; \
+ } else { /* Pick original coordinates */ \
+ x0 = c3x0; y0 = c3y0; \
+ x1 = c3x1; y1 = c3y1; \
+ x2 = c3x2; y2 = c3y2; \
+ x3 = c4x0; y3 = c4y0; \
+ x4 = c4x1; y4 = c4y1; \
+ x5 = c4x2; y5 = c4y2; \
+ }
+
+/* FlxProc() = OtherSubrs[0]; Main part of Flex */
+/* Calling sequence: 'idmin epX epY 3 0 callothersubr' */
+/* Computes Flex values, and renders the Flex path, */
+/* and returns (leaves) ending coordinates on stack */
+static void FlxProc(c1x2, c1y2, c3x0, c3y0, c3x1, c3y1, c3x2, c3y2,
+ c4x0, c4y0, c4x1, c4y1, c4x2, c4y2, epY, epX, idmin)
+ DOUBLE c1x2, c1y2;
+ DOUBLE c3x0, c3y0, c3x1, c3y1, c3x2, c3y2;
+ DOUBLE c4x0, c4y0, c4x1, c4y1, c4x2, c4y2;
+ DOUBLE epX, epY;
+ int idmin;
+{
+ DOUBLE dmin;
+ DOUBLE c1x0, c1y0, c1x1, c1y1;
+ DOUBLE c2x0, c2y0, c2x1, c2y1, c2x2, c2y2;
+ char yflag;
+ DOUBLE x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5;
+ DOUBLE cxx, cyx, cxy, cyy; /* Transformation matrix */
+ int flipXY;
+ DOUBLE x, y;
+ DOUBLE erosion = 1; /* Device parameter */
+ /* Erosion may have different value specified in 'internaldict' */
+ DOUBLE shrink;
+ DOUBLE dX, dY;
+ char erode;
+ DOUBLE eShift;
+ DOUBLE cx, cy;
+ DOUBLE ex, ey;
+
+
+ /* Our PPOINT list now contains 7 moveto commands which
+ are about to be consumed by the Flex mechanism. --> Remove these
+ seven elements (their values already reside on the PSFakeStack!)
+ and approriately restore the current accumulated position. */
+ numppoints -= 7;
+ currx = ppoints[numppoints-1].x;
+ curry = ppoints[numppoints-1].y;
+
+ if (ProcessHints) {
+ dmin = TYPE1_ABS(idmin) / 100.0; /* Minimum Flex height in pixels */
+
+ c2x2 = c4x2; c2y2 = c4y2; /* Point c2 = c4 */
+
+ yflag = FABS(c1y2 - c3y2) > FABS(c1x2 - c3x2); /* Flex horizontal? */
+
+ QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */
+
+ if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001)
+ flipXY = -1; /* Char on side */
+ else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001)
+ flipXY = 1; /* Char upright */
+ else
+ flipXY = 0; /* Char at angle */
+
+ if (yflag) { /* Flex horizontal */
+ if (flipXY == 0 || c3y2 == c4y2) { /* Char at angle or Flex height = 0 */
+ PickCoords(FALSE); /* Pick original control points */
+ } else {
+ shrink = FABS((c1y2 - c4y2) / (c3y2 - c4y2)); /* Slope */
+
+ c1x0 = c3x0; c1y0 = yshrink(c3y0);
+ c1x1 = c3x1; c1y1 = yshrink(c3y1);
+ c2x0 = c4x0; c2y0 = yshrink(c4y0);
+ c2x1 = c4x1; c2y1 = yshrink(c4y1);
+
+ dtransform(0.0, ROUND(c3y2-c1y2), &x, &y); /* Flex height in pixels */
+ dY = FABS((flipXY == 1) ? y : x);
+ PickCoords(dY < dmin); /* If Flex small, pick 'shrunk' control points */
+
+ if (FABS(y2 - c1y2) > 0.001) { /* Flex 'non-zero'? */
+ transform(c1x2, c1y2, &x, &y);
+
+ if (flipXY == 1) {
+ cx = x; cy = y;
+ } else {
+ cx = y; cy = x;
+ }
+
+ dtransform(0.0, ROUND(y2-c1y2), &x, &y);
+ dY = (flipXY == 1) ? y : x;
+ if (ROUND(dY) != 0)
+ dY = ROUND(dY);
+ else
+ dY = (dY < 0) ? -1 : 1;
+
+ erode = PaintType != 2 && erosion >= 0.5;
+ if (erode)
+ cy -= 0.5;
+ ey = cy + dY;
+ ey = CEIL(ey) - ey + FLOOR(ey);
+ if (erode)
+ ey += 0.5;
+
+ if (flipXY == 1) {
+ itransform(cx, ey, &x, &y);
+ } else {
+ itransform(ey, cx, &x, &y);
+ }
+
+ eShift = y - y2;
+ y1 += eShift;
+ y2 += eShift;
+ y3 += eShift;
+ }
+ }
+ } else { /* Flex vertical */
+ if (flipXY == 0 || c3x2 == c4x2) { /* Char at angle or Flex height = 0 */
+ PickCoords(FALSE); /* Pick original control points */
+ } else {
+ shrink = FABS((c1x2 - c4x2) / (c3x2 - c4x2)); /* Slope */
+
+ c1x0 = xshrink(c3x0); c1y0 = c3y0;
+ c1x1 = xshrink(c3x1); c1y1 = c3y1;
+ c2x0 = xshrink(c4x0); c2y0 = c4y0;
+ c2x1 = xshrink(c4x1); c2y1 = c4y1;
+
+ dtransform(ROUND(c3x2 - c1x2), 0.0, &x, &y); /* Flex height in pixels */
+ dX = FABS((flipXY == -1) ? y : x);
+ PickCoords(dX < dmin); /* If Flex small, pick 'shrunk' control points */
+
+ if (FABS(x2 - c1x2) > 0.001) {
+ transform(c1x2, c1y2, &x, &y);
+ if (flipXY == -1) {
+ cx = y; cy = x;
+ } else {
+ cx = x; cy = y;
+ }
+
+ dtransform(ROUND(x2-c1x2), 0.0, &x, &y);
+ dX = (flipXY == -1) ? y : x;
+ if (ROUND(dX) != 0)
+ dX = ROUND(dX);
+ else
+ dX = (dX < 0) ? -1 : 1;
+
+ erode = PaintType != 2 && erosion >= 0.5;
+ if (erode)
+ cx -= 0.5;
+ ex = cx + dX;
+ ex = CEIL(ex) - ex + FLOOR(ex);
+ if (erode)
+ ex += 0.5;
+
+ if (flipXY == -1) {
+ itransform(cy, ex, &x, &y);
+ } else {
+ itransform(ex, cy, &x, &y);
+ }
+
+ eShift = x - x2;
+ x1 += eShift;
+ x2 += eShift;
+ x3 += eShift;
+ }
+ }
+ }
+
+ if (x2 == x5 || y2 == y5) {
+ RLineTo( x5 - currx, y5 - curry); \
+ } else {
+ RRCurveTo( x0 - currx, y0 - curry,
+ x1 - x0, y1 - y0,
+ x2 - x1,
+ y2 - y1);
+ RRCurveTo( x3 - currx, y3 - curry,
+ x4 - x3, y4 - y3,
+ x5 - x4, y5 - y4);
+ }
+ } else { /* ProcessHints is off */
+ PickCoords(FALSE); /* Pick original control points */
+ RRCurveTo( x0 - currx, y0 - curry,
+ x1 - x0, y1 - y0,
+ x2 - x1,
+ y2 - y1);
+ RRCurveTo( x3 - currx, y3 - curry,
+ x4 - x3, y4 - y3,
+ x5 - x4, y5 - y4);
+ }
+
+ PSFakePush(epY);
+ PSFakePush(epX);
+}
+
+/* FlxProc1() = OtherSubrs[1]; Part of Flex */
+/* Calling sequence: '0 1 callothersubr' */
+/* Saves and clears path, then restores currentpoint */
+static void FlxProc1()
+{
+ /* Since we are now building the path point list,
+ there's nothing to do here! */
+ return;
+}
+
+/* FlxProc2() = OtherSubrs[2]; Part of Flex */
+/* Calling sequence: '0 2 callothersubr' */
+/* Returns currentpoint on stack */
+static void FlxProc2()
+{
+ /* Push CurrentPoint on fake PostScript stack */
+ PSFakePush( ppoints[numppoints-1].x);
+ PSFakePush( ppoints[numppoints-1].y);
+}
+
+/* HintReplace() = OtherSubrs[3]; Hint Replacement */
+/* Calling sequence: 'subr# 1 3 callothersubr pop callsubr' */
+/* Reinitializes stem hint structure */
+static void HintReplace()
+{
+ /* Effectively retire the current stems, but keep them around for */
+ /* revhint use in case we are in a stem when we replace hints. */
+ currstartstem = numstems;
+
+ /* 'subr#' is left on PostScript stack (for 'pop callsubr') */
+}
+
+/* arg1 ... argn n othersubr# CALLOTHERSUBR - */
+/* Make calls on the PostScript interpreter (or call equivalent C code) */
+/* NOTE: The n arguments have been pushed on the fake PostScript stack */
+static int CallOtherSubr(othersubrno)
+ int othersubrno;
+{
+ IfTrace1((FontDebug), "CallOtherSubr %d\n", othersubrno);
+
+ switch(othersubrno) {
+ case 0: /* OtherSubrs[0]; Main part of Flex */
+ if (PSFakeTop < 16) Error0i("CallOtherSubr: PSFakeStack low");
+ ClearPSFakeStack();
+ FlxProc(
+ PSFakeStack[0], PSFakeStack[1], PSFakeStack[2], PSFakeStack[3],
+ PSFakeStack[4], PSFakeStack[5], PSFakeStack[6], PSFakeStack[7],
+ PSFakeStack[8], PSFakeStack[9], PSFakeStack[10], PSFakeStack[11],
+ PSFakeStack[12], PSFakeStack[13], PSFakeStack[14], PSFakeStack[15],
+ (int) PSFakeStack[16]
+ );
+ break;
+ case 1: /* OtherSubrs[1]; Part of Flex */
+ FlxProc1();
+ break;
+ case 2: /* OtherSubrs[2]; Part of Flex */
+ FlxProc2();
+ break;
+ case 3: /* OtherSubrs[3]; Hint Replacement */
+ HintReplace();
+ break;
+ case 12: /* OtherSubrs[12]: Counter Control Hinting */
+ /* We do nothing, because later OtherSubrs[13] will
+ remove data from the PS-stack */
+ break;
+ case 13:
+ /* We pop all elements from PSFakeStack. They may either have been left
+ from previous calls to OtherSubr #12 or have been pushed for this
+ call */
+ ClearPSFakeStack();
+ break;
+ default: { /* call OtherSubrs[4] or higher if PostScript is present */
+
+ }
+ }
+ return(0);
+}
+
+/* |- x y SETCURRENTPOINT |- */
+/* Sets the current point to (x,y) in absolute */
+/* character space coordinates without per- */
+/* forming a CharString MOVETO command */
+static int SetCurrentPoint(x, y)
+ DOUBLE x, y;
+{
+ IfTrace2((FontDebug), "SetCurrentPoint %f %f\n", x, y);
+
+ currx = x;
+ curry = y;
+ return(0);
+}
+
+/* The Type1Char routine for use by PostScript. */
+/************************************************/
+struct xobject *Type1Char(psfont *env, struct XYspace *S,
+ psobj *charstrP, psobj *subrsP,
+ psobj *osubrsP,
+ struct blues_struct *bluesP,
+ int *modeP, char *charname,
+ float strokewidth,
+ int decodeonly)
+{
+ int Code;
+ long i = 0;
+
+ double xp, yp;
+#ifdef DUMPDEBUGPATH
+ char fnbuf[128];
+#endif
+ struct segment* p;
+
+ /* Reset SEAC querying variables */
+ isseac = 0;
+ seacbase = 0;
+ seacaccent = 0;
+
+ /* Reset point list */
+ ppoints = NULL;
+ numppoints = 0;
+ numppointchunks = 0;
+
+ /* disable hinting for stroking */
+ if ( strokewidth != 0.0f )
+ ProcessHints = 0;
+
+ if ( env->fontInfoP[PAINTTYPE].value.data.integer == 1 )
+ ProcessHints = 0;
+
+ path = NULL;
+ apath = NULL;
+ errflag = FALSE;
+
+ if ( S == NULL ) {
+ S=(struct XYspace *) IDENTITY;
+ }
+
+ /* Make parameters available to all Type1 routines */
+ currentchar=charname;
+ Environment = (char *)env;
+ CharSpace = S; /* used when creating path elements */
+ CharStringP = charstrP;
+ SubrsP = subrsP;
+ OtherSubrsP = osubrsP;
+ ModeP = modeP;
+
+ blues = bluesP;
+
+ if ( decodeonly == 0 ) {
+ QuerySpace( S, &scxx, &scyx, &scxy, &scyy); /* Transformation matrix */
+ p = ILoc( S, 1, 0);
+ QueryLoc(p, IDENTITY, &xp, &yp);
+ up = FABS(xp);
+
+ size = scxx * 1000.0;
+#ifdef DUMPDEBUGPATH
+ sprintf( fnbuf, "t1dump_%s_%f.eps", charname, size);
+ psfile = fopen( fnbuf, "wb");
+ if ( psfile != NULL ) {
+ PSDumpProlog( psfile);
+ fprintf( psfile, "T1LibDict begin\n\ngsave\n%f t1SetupSize\nt1PreparePage\n", size);
+ }
+#endif
+ }
+
+ /* compute the alignment zones */
+ SetRasterFlags();
+ ComputeAlignmentZones();
+ StartDecrypt();
+ ClearStack();
+ ClearPSFakeStack();
+ ClearCallStack();
+ InitStems();
+
+ /* reset variables */
+ currx = curry = 0.0;
+ hcurrx = hcurry = 0.0;
+ escapementX = escapementY = 0;
+ sidebearingX = sidebearingY = 0;
+ accentoffsetX = accentoffsetY = 0;
+ wsoffsetX = wsoffsetY = 0; /* No shift to preserve whitspace. */
+ wsset = 0; /* wsoffsetX,Y haven't been set yet. */
+
+ for (;;) {
+ if (!DoRead(&Code)) break;
+ Decode(Code);
+ if (errflag) break;
+ }
+
+ if ( decodeonly != 0 ) {
+ /* OK, character description is now on stack, finish ... */
+ return NULL;
+ }
+
+ /* We now have a point list in absolute charspace coordinates. Adjust
+ non-hinted points to suppress hinting artifacts and generate path. */
+ for ( i=0; i<numppoints; i++ ) {
+ if ( ppoints[i].type == PPOINT_BEZIER_D)
+ adjustBezier( i);
+ }
+ /* Create path elements */
+#if defined(DUMPDEBUGPATH) & defined(DUMPDEBUGPATHBOTH)
+ if ( env->fontInfoP[PAINTTYPE].value.data.integer == 0 ) {
+ /* For this special debug case, we generate both a filled and a stroked
+ path!. */
+ createStrokePath( strokewidth, SUBPATH_CLOSED);
+ createFillPath();
+ }
+ else if ( env->fontInfoP[PAINTTYPE].value.data.integer == 1 ) {
+ /* PaintType = 1 indicates stroked font. If strokewidth is 0.0f,
+ we stroke using the font's internal strokewidth. Otherwise, the
+ user supplied value is used. */
+ if ( strokewidth != 0.0f )
+ createStrokePath( strokewidth, SUBPATH_OPEN);
+ else
+ createStrokePath( env->fontInfoP[STROKEWIDTH].value.data.real, SUBPATH_OPEN);
+ }
+#else
+ if ( env->fontInfoP[PAINTTYPE].value.data.integer == 0 ) {
+ /* PaintType = 0 indicates filled font. Hence, a strokewidth value
+ other than 0.0 indicates the character is to be stroked instead
+ of to be filled. */
+ if ( strokewidth != 0.0f )
+ createStrokePath( strokewidth, SUBPATH_CLOSED);
+ else
+ createFillPath();
+ }
+ else if ( env->fontInfoP[PAINTTYPE].value.data.integer == 1 ) {
+ /* PaintType = 1 indicates stroked font. If strokewidth is 0.0f,
+ we stroke using the font's internal strokewidth. Otherwise, the
+ user supplied value is used. */
+ if ( strokewidth != 0.0f )
+ createStrokePath( strokewidth, SUBPATH_OPEN);
+ else
+ createStrokePath( env->fontInfoP[STROKEWIDTH].value.data.real, SUBPATH_OPEN);
+ }
+#endif
+
+ /* check and handle accented char */
+ if ( apath != NULL ) {
+ path = Join( apath, path);
+ }
+
+ /* Report a possible error: */
+ *modeP=errflag;
+
+ /* Clean up if an error has occurred */
+ if (errflag) {
+ if (path != NULL) {
+ Destroy(path); /* Reclaim storage */
+ path = NULL; /* Indicate that character could not be built */
+ }
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ PSDumpEpilog( psfile);
+ fclose( psfile);
+ psfile = 0;
+ }
+#endif
+
+ /* Cleanup ppoints */
+ if ( ppoints != NULL ) {
+ free( ppoints);
+ ppoints = NULL;
+ numppoints = 0;
+ }
+
+ return((struct xobject *) path);
+}
+
+
+/* We add a function to implement underlining in Type1-Routines. */
+struct xobject *Type1Line(psfont *env, struct XYspace *S,
+ float line_position,
+ float line_thickness,
+ float line_length,
+ float strokewidth)
+{
+
+ /* Reset point list */
+ ppoints = NULL;
+ numppoints = 0;
+ numppointchunks = 0;
+
+ path = NULL;
+ apath = NULL;
+ errflag = FALSE;
+
+
+ /* Make parameters available to all Type1 routines */
+ Environment = (char *)env;
+ CharSpace = S; /* used when creating path elements */
+
+ currx = curry = 0;
+ escapementX = escapementY = 0;
+ sidebearingX = sidebearingY = 0;
+ /* We have to initialize the stems-structures because
+ the lineto commands refer to them! */
+ SetRasterFlags();
+ InitStems();
+
+ /* Draw Character */
+ Sbw(-1.0*line_length, 0.0, 0.0, 0.0);
+ RMoveTo( 0.0, (double) (line_position+0.5*line_thickness));
+ RLineTo( 0.0, (double) -line_thickness);
+ RLineTo( (double) line_length, 0.0);
+ RLineTo( 0.0, (double) line_thickness);
+ DoClosePath();
+ EndChar();
+
+ /* Create path */
+ if ( strokewidth != 0.0f )
+ createStrokePath( strokewidth, SUBPATH_CLOSED);
+ else
+ createFillPath();
+
+ /* Cleanup ppoints */
+ if ( ppoints != NULL ) {
+ free( ppoints);
+ ppoints = NULL;
+ }
+
+ return((struct xobject *)path);
+
+}
+
+
+/* Adjust the points of a given cubic Bezier Spline so that the
+ geometric relation of points B and C to A and D remain
+ qualitatively the same. This reduces hinting artifacts
+ at low resolutions.
+*/
+static void adjustBezier( long pindex)
+{
+ double deltax = 0.0; /* x distance between point A and D */
+ double deltay = 0.0; /* y distance between point A and D */
+ double adeltax = 0.0; /* x distance between hinted point A and D */
+ double adeltay = 0.0; /* y distance between hinted point A and D */
+
+ deltax = ppoints[pindex].x - ppoints[pindex-3].x;
+ deltay = ppoints[pindex].y - ppoints[pindex-3].y;
+ adeltax = ppoints[pindex].ax - ppoints[pindex-3].ax;
+ adeltay = ppoints[pindex].ay - ppoints[pindex-3].ay;
+
+ if ( deltax == 0 || deltay == 0 )
+ return;
+
+ ppoints[pindex-1].ax = ppoints[pindex-3].ax +
+ (adeltax / deltax * (ppoints[pindex-1].x - ppoints[pindex-3].x));
+ ppoints[pindex-1].ay = ppoints[pindex-3].ay +
+ (adeltay / deltay * (ppoints[pindex-1].y - ppoints[pindex-3].y));
+ ppoints[pindex-2].ax = ppoints[pindex-3].ax +
+ (adeltax / deltax * (ppoints[pindex-2].x - ppoints[pindex-3].x));
+ ppoints[pindex-2].ay = ppoints[pindex-3].ay +
+ (adeltay / deltay * (ppoints[pindex-2].y - ppoints[pindex-3].y));
+
+ return;
+
+}
+
+
+
+/* This function actually generates path segments. It is called
+ after all hinting and adjustments have been performed.
+*/
+static void handleCurrentSegment( long pindex)
+{
+ struct segment* B;
+ struct segment* C;
+ struct segment* D;
+ struct segment* tmpseg;
+ double dx1;
+ double dy1;
+ double dx2;
+ double dy2;
+ double dx3;
+ double dy3;
+ double adx1;
+ double ady1;
+ double adx2;
+ double ady2;
+ double adx3;
+ double ady3;
+
+
+ /* handle the different segment types in a switch-statement */
+ switch ( ppoints[pindex].type ) {
+
+ case PPOINT_MOVE:
+ /* handle a move segment */
+ dx1 = ppoints[pindex].x - ppoints[pindex-1].x;
+ dy1 = ppoints[pindex].y - ppoints[pindex-1].y;
+ adx1 = ppoints[pindex].ax - ppoints[pindex-1].ax;
+ ady1 = ppoints[pindex].ay - ppoints[pindex-1].ay;
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1rmoveto %% pindex = %ld\n", dx1*up, dy1*up, pindex);
+#endif
+ if ( ProcessHints ) {
+ IfTrace2((FontDebug), "RMoveTo(h) %f %f\n", adx1, ady1);
+ B = Loc(CharSpace, adx1, ady1);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "%f %f t1hintedrmoveto %% pindex = %ld\n", adx1*up, ady1*up, pindex);
+ }
+#endif
+ }
+ else {
+ IfTrace2((FontDebug), "RMoveTo %f %f\n", dx1, dy1);
+ B = Loc(CharSpace, dx1, dy1);
+ }
+ path = Join(path, B);
+ break;
+
+
+ case PPOINT_LINE:
+ /* handle a line segment */
+ dx1 = ppoints[pindex].x - ppoints[pindex-1].x;
+ dy1 = ppoints[pindex].y - ppoints[pindex-1].y;
+ adx1 = ppoints[pindex].ax - ppoints[pindex-1].ax;
+ ady1 = ppoints[pindex].ay - ppoints[pindex-1].ay;
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1rlineto %% pindex = %ld\n", dx1*up, dy1*up, pindex);
+#endif
+ if ( ProcessHints ) {
+ IfTrace2((FontDebug), "RLineTo(h) %f %f\n", adx1, ady1);
+ B = Loc(CharSpace, adx1, ady1);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "%f %f t1hintedrlineto %% pindex = %ld\n", adx1*up, ady1*up, pindex);
+ }
+#endif
+ }
+ else {
+ IfTrace2((FontDebug), "RLineTo %f %f\n", dx1, dy1);
+ B = Loc(CharSpace, dx1, dy1);
+ }
+ path = Join(path, Line(B));
+ break;
+
+
+ case PPOINT_BEZIER_B:
+ /* handle a bezier segment (given by this and the following points) */
+ dx1 = ppoints[pindex].x - ppoints[pindex-1].x;
+ dy1 = ppoints[pindex].y - ppoints[pindex-1].y;
+ adx1 = ppoints[pindex].ax - ppoints[pindex-1].ax;
+ ady1 = ppoints[pindex].ay - ppoints[pindex-1].ay;
+ dx2 = ppoints[pindex+1].x - ppoints[pindex].x;
+ dy2 = ppoints[pindex+1].y - ppoints[pindex].y;
+ adx2 = ppoints[pindex+1].ax - ppoints[pindex].ax;
+ ady2 = ppoints[pindex+1].ay - ppoints[pindex].ay;
+ dx3 = ppoints[pindex+2].x - ppoints[pindex+1].x;
+ dy3 = ppoints[pindex+2].y - ppoints[pindex+1].y;
+ adx3 = ppoints[pindex+2].ax - ppoints[pindex+1].ax;
+ ady3 = ppoints[pindex+2].ay - ppoints[pindex+1].ay;
+
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f %f %f %f %f t1rrcurveto %% pindex = %ld\n",
+ dx1*up, dy1*up,
+ dx2*up, dy2*up,
+ dx3*up, dy3*up,
+ pindex);
+#endif
+ if (ProcessHints) {
+ IfTrace4((FontDebug), "RRCurveTo %f %f %f %f ",
+ adx1, ady1, adx2, ady2);
+ IfTrace2((FontDebug), "%f %f\n", adx3, ady3);
+ B = Loc(CharSpace, adx1, ady1);
+ C = Loc(CharSpace, adx2, ady2);
+ D = Loc(CharSpace, adx3, ady3);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "%f %f %f %f %f %f t1hintedrrcurveto %% pindex = %ld\n",
+ adx1*up, ady1*up,
+ adx2*up, ady2*up,
+ adx3*up, ady3*up,
+ pindex);
+ }
+#endif
+ }
+ else {
+ IfTrace4((FontDebug), "RRCurveTo %f %f %f %f ",
+ dx1, dy1, dx2, dy2);
+ IfTrace2((FontDebug), "%f %f\n", dx3, dy3);
+ B = Loc(CharSpace, dx1, dy1);
+ C = Loc(CharSpace, dx2, dy2);
+ D = Loc(CharSpace, dx3, dy3);
+ }
+
+ /* Since XIMAGER is not completely relative, */
+ /* we need to add up the delta values */
+ C = Join(C, (struct segment *)Dup(B));
+ D = Join(D, (struct segment *)Dup(C));
+ path = Join(path, (struct segment *)Bezier(B, C, D));
+ break;
+
+
+ case PPOINT_SBW:
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f %f %f t1sbw %% pindex = %ld\n",
+ ppoints[pindex].x*up, ppoints[pindex].y*up, /* sidebearings */
+ ppoints[pindex].ax*up, ppoints[pindex].ay*up, /* escapements */
+ pindex
+ );
+#endif
+ path = Join(path, Loc(CharSpace, ppoints[pindex].x, ppoints[pindex].y));
+ break;
+
+
+ case PPOINT_CLOSEPATH:
+ IfTrace0((FontDebug), "DoClosePath\n");
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "t1closepath %% pindex = %ld\n", pindex);
+ if ( ProcessHints )
+ fprintf( psfile, "t1hintedclosepath %% pindex = %ld\n", pindex);
+ }
+#endif
+
+ tmpseg = Phantom(path);
+ path = ClosePath(path);
+ path = Join(Snap(path), tmpseg);
+ break;
+
+
+ case PPOINT_ENDCHAR:
+ /* Perform a Closepath just in case the command was left out */
+ path = ClosePath(path);
+
+ /* Set character width / escapement. It is stored in the vars for
+ hinted coordinates. */
+ path = Join(Snap(path), Loc(CharSpace, ppoints[pindex].ax, ppoints[pindex].ay));
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "t1FinishPage\ngrestore %% pindex = %ld\n", pindex);
+#endif
+ break;
+
+
+ case PPOINT_SEAC:
+ /* return to origin of accent */
+ apath = Snap(path);
+ /* reset path to NULL */
+ path = NULL;
+ break;
+
+
+ default:
+ /* We must be at the beginning of the path, that is, there is
+ nothing to do! */
+ ;
+ }
+
+ return;
+
+}
+
+
+#ifdef DUMPDEBUGPATH
+static void PSDumpProlog( FILE* fp)
+{
+#include "t1chardump"
+}
+
+
+static void PSDumpEpilog( FILE* fp)
+{
+ fputs( "\nend\n", fp);
+}
+
+#endif /* #ifdef DUMPDEBUGPATH */
+
+
+
+/* Take the accumulated path point list and construct the path that is
+ to be filled. */
+static void createFillPath( void)
+{
+ long i;
+
+ for ( i=0; i<numppoints; i++ ) {
+ handleCurrentSegment( i);
+ }
+ return;
+}
+
+
+/* Take the accumulated path point list and construct a path so that the
+ character appears as a stroked outline, where the virtual pen has a diameter
+ of strokewidth (measured in big points [bp]). This function works analogously
+ to PostScripts charpath operator. */
+static void createStrokePath( double strokewidth, int subpathclosed)
+{
+ long pindex = 0;
+ long startind = 0;
+ long stopind = 0;
+
+
+ /* For each subpath in the path list (some sub path is closed!), we construct
+ one path interior and one path exterior to the path under consideration in
+ a way, that the resulting thick curve has a thickness of strokewidth. */
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "\ncreateStrokePath(strokewidth=%f, subpathclosed=%d): Searching partial paths ...\n\n",
+ strokewidth, subpathclosed);
+#endif
+ if ( subpathclosed == 0 ) {
+ /* We have a stroked font */
+ /* loop through all subpaths */
+ while ( pindex < numppoints ) {
+ /* First, handle any non-subpath commands. */
+ if ( handleNonSubPathSegments( pindex) != 0 ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ ++pindex;
+ continue;
+ }
+
+ if ( ppoints[pindex].type == PPOINT_LINE ||
+ ppoints[pindex].type == PPOINT_BEZIER_B ) {
+ if ( ppoints[pindex-1].type == PPOINT_MOVE ) {
+ /* A line or curve segment following a move segment indicates a
+ new subpath. */
+ startind = pindex - 1;
+ while ( (pindex < numppoints) &&
+ (ppoints[pindex].type != PPOINT_CLOSEPATH) &&
+ (ppoints[pindex].type != PPOINT_MOVE) &&
+ (ppoints[pindex].type != PPOINT_ENDCHAR)
+ ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ ++pindex;
+ }
+ if ( (ppoints[pindex].type == PPOINT_ENDCHAR) || /* for outline fonts */
+ (ppoints[pindex].type == PPOINT_MOVE) /* for stroked fonts */
+ ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ stopind = --pindex;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "Found subpath from index %ld to %ld inclusively\n", startind, stopind);
+#endif
+ /* We have found a subpath defined by the path points indexed by
+ the interval from startind to stopind. */
+ createClosedStrokeSubPath( startind, stopind, strokewidth, subpathclosed);
+ }
+ }
+ }
+ ++pindex;
+ }
+ }
+ else {
+ /* We have a filled font */
+ /* loop through all subpaths */
+ while ( pindex < numppoints ) {
+ /* First, handle any non-subpath commands. */
+ if ( handleNonSubPathSegments( pindex) != 0 ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ ++pindex;
+ continue;
+ }
+
+ if ( ppoints[pindex].type == PPOINT_LINE ||
+ ppoints[pindex].type == PPOINT_BEZIER_B ) {
+ if ( ppoints[pindex-1].type == PPOINT_MOVE ) {
+ /* A line or curve segment following a move segment indicates a
+ new subpath. */
+ startind = --pindex;
+ while ( (pindex < numppoints) &&
+ (ppoints[pindex].type != PPOINT_CLOSEPATH)
+ ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ ++pindex;
+ }
+ if ( ppoints[pindex].type == PPOINT_CLOSEPATH ) {
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "PPoint %ld: (%f,%f), Type=%s\n", pindex,
+ ppoints[pindex].x, ppoints[pindex].y, pptypes[ppoints[pindex].type]);
+#endif
+ stopind = pindex;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "Found subpath from index %ld to %ld inclusively\n", startind, stopind);
+#endif
+ /* We have found a subpath defined by the path points indexed by
+ the interval from startind to stopind. */
+ createClosedStrokeSubPath( startind, stopind, strokewidth, subpathclosed);
+ }
+ }
+ }
+ ++pindex;
+ }
+ }
+
+ return;
+
+}
+
+
+
+/* Create two closed paths that surround the the current subpath of the
+ charpath in a centered fashion. */
+static void createClosedStrokeSubPath( long startind, long stopind,
+ double strokewidth, int subpathclosed)
+{
+ long i;
+ long inext;
+ long iprev;
+ long ip = 0;
+ long in = 0;
+ long segstartind;
+ long segendind;
+
+ long lastind = 0; /* Index of last point whose location is different from first
+ point. After this point there may follow an explicit line-
+ or curveto to the starting point and also the ClosePath-point
+ may be and usually is identical to the starting point. */
+
+ double dx1;
+ double dy1;
+ double dx2;
+ double dy2;
+ double dx3;
+ double dy3;
+
+ struct segment* B;
+ struct segment* C;
+ struct segment* D;
+ struct segment* tmpseg;
+
+ int type;
+
+
+ /* The ClosePath operator is somewhat problematic, because it adds a point
+ to the defining points of a path, without actually having a distance to
+ the previous or the next point. This causes problems with the distance
+ handling. As a remedy, we check whether ClosePath is located at the first
+ point or the last point of the path. In the latter case, ClosePath causes
+ an additional line segment. */
+ if ( (ppoints[stopind].x == ppoints[startind].x) &&
+ (ppoints[stopind].y == ppoints[startind].y)
+ ) {
+ closepathatfirst = 1;
+ }
+ else {
+ closepathatfirst = 0;
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ if ( closepathatfirst == 1 ) {
+ fprintf( stderr, "createClosedStrokeSubPath(): Starting up, ClosePath is at first PPoint (does not cause a line segment) ...\n");
+ }
+ else {
+ fprintf( stderr, "createClosedStrokeSubPath(): Starting up, ClosePath is not at first PPoint (causes a closing line segment) ...\n");
+ }
+#endif
+
+
+ /* For each path point in the list, we have to define a set of points, to the
+ left and to the right of the current curve. The positions of these
+ new points depend on the coordinates of the previous path point, the current
+ path and the next path point. */
+
+ /* For the computations, the distance from the start and end points of curves
+ and lines to the neighbouring points is required. We start by calculating
+ these and by filling in the path point entries dist2prev and dist2next for
+ the respective points. */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "Computing geometric distances between path points ...\n");
+#endif
+ lastind = computeDistances( startind, stopind, subpathclosed);
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "startind=%ld, lastind=%ld, stopind=%ld\n", startind, lastind, stopind);
+#endif
+
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Path point transformation
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ /* Next we step through the path points of the current subpath and compute the
+ points' transformations. From these newly computed points,
+ the path is constructed. */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "Computing geometric transformation points and resulting intersection points for right path ...\n\n");
+#endif
+ for ( i=startind; i<=lastind; ) {
+ /* Be aware of cycling! */
+ if ( i == startind ) {
+ iprev = lastind;
+ inext = i + 1;
+ }
+ else if ( i == lastind ) {
+ iprev = i - 1;
+ inext = startind;
+ }
+ else {
+ iprev = i - 1;
+ inext = i + 1;
+ }
+
+
+ switch ( ppoints[i].type ) {
+ case PPOINT_MOVE:
+ /* The first segment always is of type PPOINT_MOVE. It is defined by the first,
+ the second and the last point. */
+ transformOnCurvePathPoint( strokewidth, iprev, i, inext);
+
+ /* Compute one point which results from prolongating the linked segment and
+ and computing the intersection. The result values are stored in dxres,
+ dyres. */
+ if ( subpathclosed == 0 ) {
+ /* open subpath --> stroked font */
+ if ( i == startind ) {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_NEXT);
+ }
+ else if ( i == lastind ) {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_PREVIOUS);
+ }
+ else {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+ }
+ else {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "\nCurrent PathPoint: PP %ld (%s): (%f,%f), shape=%s;\n", i, pptypes[ppoints[i].type],
+ ppoints[i].x, ppoints[i].y, ppshapes[ppoints[i].shape]);
+ fprintf( stderr, " RightPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n",
+ ppoints[i].x+ppoints[i].dxpr, ppoints[i].y+ppoints[i].dypr,
+ ppoints[i].x+ppoints[i].dxnr, ppoints[i].y+ppoints[i].dynr,
+ ppoints[i].x+ppoints[i].dxir, ppoints[i].y+ppoints[i].dyir);
+ fprintf( stderr, " LeftPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n\n",
+ ppoints[i].x-ppoints[i].dxpr, ppoints[i].y-ppoints[i].dypr,
+ ppoints[i].x-ppoints[i].dxnr, ppoints[i].y-ppoints[i].dynr,
+ ppoints[i].x-ppoints[i].dxir, ppoints[i].y-ppoints[i].dyir);
+#endif
+
+ break;
+
+
+ case PPOINT_LINE:
+ transformOnCurvePathPoint( strokewidth, iprev, i, inext);
+ if ( subpathclosed == 0 ) {
+ /* open subpath --> stroked font */
+ if ( i == startind )
+ intersectRight( i, 0.5*strokewidth, INTERSECT_NEXT);
+ else if ( i == lastind )
+ intersectRight( i, 0.5*strokewidth, INTERSECT_PREVIOUS);
+ else
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+ else {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "\nCurrent PathPoint: PP %ld (%s): (%f,%f), shape=%s;\n", i, pptypes[ppoints[i].type],
+ ppoints[i].x, ppoints[i].y, ppshapes[ppoints[i].shape]);
+ fprintf( stderr, " RightPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n",
+ ppoints[i].x+ppoints[i].dxpr, ppoints[i].y+ppoints[i].dypr,
+ ppoints[i].x+ppoints[i].dxnr, ppoints[i].y+ppoints[i].dynr,
+ ppoints[i].x+ppoints[i].dxir, ppoints[i].y+ppoints[i].dyir);
+ fprintf( stderr, " LeftPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n\n",
+ ppoints[i].x-ppoints[i].dxpr, ppoints[i].y-ppoints[i].dypr,
+ ppoints[i].x-ppoints[i].dxnr, ppoints[i].y-ppoints[i].dynr,
+ ppoints[i].x-ppoints[i].dxir, ppoints[i].y-ppoints[i].dyir);
+#endif
+
+ break;
+
+
+ case PPOINT_BEZIER_B:
+ break;
+
+ case PPOINT_BEZIER_C:
+ break;
+
+ case PPOINT_BEZIER_D:
+ transformOnCurvePathPoint( strokewidth, iprev, i, inext);
+ if ( subpathclosed == 0 ) {
+ /* open subpath --> stroked font */
+ if ( i == startind )
+ intersectRight( i, 0.5*strokewidth, INTERSECT_NEXT);
+ else if ( i == lastind )
+ intersectRight( i, 0.5*strokewidth, INTERSECT_PREVIOUS);
+ else
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+ else {
+ intersectRight( i, 0.5*strokewidth, INTERSECT_BOTH);
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "\nCurrent PathPoint: PP %ld (%s): (%f,%f), shape=%s;\n", i, pptypes[ppoints[i].type],
+ ppoints[i].x, ppoints[i].y, ppshapes[ppoints[i].shape]);
+ fprintf( stderr, " RightPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n",
+ ppoints[i].x+ppoints[i].dxpr, ppoints[i].y+ppoints[i].dypr,
+ ppoints[i].x+ppoints[i].dxnr, ppoints[i].y+ppoints[i].dynr,
+ ppoints[i].x+ppoints[i].dxir, ppoints[i].y+ppoints[i].dyir);
+ fprintf( stderr, " LeftPath: prev (%f,%f); next (%f,%f); res (%f,%f)\n\n",
+ ppoints[i].x-ppoints[i].dxpr, ppoints[i].y-ppoints[i].dypr,
+ ppoints[i].x-ppoints[i].dxnr, ppoints[i].y-ppoints[i].dynr,
+ ppoints[i].x-ppoints[i].dxir, ppoints[i].y-ppoints[i].dyir);
+#endif
+
+ /* transform the preceding two offCurve points */
+ transformOffCurvePathPoint( strokewidth, i-2);
+
+ break;
+
+ case PPOINT_CLOSEPATH:
+
+ break;
+
+ default:
+ break;
+ }
+ ++i;
+ }
+
+ /* copy the shift values from starting point to ending points that
+ have not yet been handled */
+ for ( ; i<=stopind; i++) {
+ ppoints[i].dxpr = ppoints[startind].dxpr;
+ ppoints[i].dypr = ppoints[startind].dypr;
+ ppoints[i].dxnr = ppoints[startind].dxnr;
+ ppoints[i].dynr = ppoints[startind].dynr;
+ ppoints[i].dxir = ppoints[startind].dxir;
+ ppoints[i].dyir = ppoints[startind].dyir;
+ ppoints[i].dist2prev = ppoints[startind].dist2prev;
+ ppoints[i].dist2next = ppoints[startind].dist2next;
+ if ( ppoints[i].type == PPOINT_BEZIER_D ) {
+ transformOffCurvePathPoint( strokewidth, i-2);
+ }
+ ppoints[i].shape = ppoints[startind].shape;
+ }
+
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "\nTransformation of PathPoints finished. Starting to construct paths ...\n\n");
+#endif
+
+ /* We now have computed the resulting shift values for each path point of the current
+ subpath's right path. The values for the left path follow by negation.
+ The path is still to be build!
+ */
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Construction of right path
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ /* The leading move segment is treated separately. First check from which
+ point the leading Moveto was called. This is safe even in cases where
+ multiple moveto appear in a series. */
+ i = startind;
+ while ( ppoints[i].type == PPOINT_MOVE )
+ --i;
+ dx1 = ppoints[startind].x - (ppoints[i].x);
+ dy1 = ppoints[startind].y - (ppoints[i].y);
+ /* If the first node in the subpath is not concave, we may directly jump
+ to the intersection right path point. Otherwise, we remain at the onCurve
+ point because later, prolongation will happen. */
+ if ( ppoints[startind].shape != CURVE_CONCAVE ) {
+ dx1 += ppoints[startind].dxir;
+ dy1 += ppoints[startind].dyir;
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srmoveto %% pindex = %ld\n", dx1*up, dy1*up, startind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, B);
+
+
+ /* Now, handle the remaining path in a loop */
+ for ( i=startind+1; i<=stopind; ) {
+ switch ( ppoints[i].type ) {
+ case PPOINT_LINE:
+ /* handle a line segment */
+
+ /* 1. Check and handle starting node */
+ linkNode( i-1, PATH_START, PATH_RIGHT);
+
+ /* 2. Draw ideal isolated line segment */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Line from point %ld to %ld\n", i-1, i);
+#endif
+ dx1 = ppoints[i].x + ppoints[i].dxpr - (ppoints[i-1].x + ppoints[i-1].dxnr);
+ dy1 = ppoints[i].y + ppoints[i].dypr - (ppoints[i-1].y + ppoints[i-1].dynr);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srlineto %% pindex = %ld\n", dx1*up, dy1*up, i);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, Line(B));
+
+ /* 3. Check and handle ending node */
+ linkNode( i, PATH_END, PATH_RIGHT);
+
+ break;
+
+ case PPOINT_BEZIER_B:
+ break;
+ case PPOINT_BEZIER_C:
+ break;
+ case PPOINT_BEZIER_D:
+ /* handle a bezier segment (given by this and the previous 3 path points)! */
+
+ /* 1. Check and handle starting node */
+ linkNode( i-3, PATH_START, PATH_RIGHT);
+
+ /* 2. Draw curve based on ideal point locations */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Curve from PP %ld to PP %ld to PP %ld to PP %ld\n",
+ i-3, i-2, i-1, i);
+#endif
+ dx1 = ppoints[i-2].x + ppoints[i-2].dxir - (ppoints[i-3].x + ppoints[i-3].dxnr);
+ dy1 = ppoints[i-2].y + ppoints[i-2].dyir - (ppoints[i-3].y + ppoints[i-3].dynr);
+ dx2 = ppoints[i-1].x + ppoints[i-1].dxir - (ppoints[i-2].x + ppoints[i-2].dxir);
+ dy2 = ppoints[i-1].y + ppoints[i-1].dyir - (ppoints[i-2].y + ppoints[i-2].dyir);
+ dx3 = ppoints[i].x + ppoints[i].dxpr - (ppoints[i-1].x + ppoints[i-1].dxir);
+ dy3 = ppoints[i].y + ppoints[i].dypr - (ppoints[i-1].y + ppoints[i-1].dyir);
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f %f %f %f %f t1srrcurveto %% pindex = %ld\n",
+ dx1*up, dy1*up,
+ dx2*up, dy2*up,
+ dx3*up, dy3*up,
+ i);
+#endif
+ IfTrace4((FontDebug), "RRCurveTo %f %f %f %f ",
+ dx1, dy1, dx2, dy2);
+ IfTrace2((FontDebug), "%f %f\n", dx3, dy3);
+ B = Loc(CharSpace, dx1, dy1);
+ C = Loc(CharSpace, dx2, dy2);
+ D = Loc(CharSpace, dx3, dy3);
+
+ C = Join(C, (struct segment *)Dup(B));
+ D = Join(D, (struct segment *)Dup(C));
+ path = Join(path, (struct segment *)Bezier(B, C, D));
+
+ /* 3. Check and handle starting node */
+ linkNode( i, PATH_END, PATH_RIGHT);
+
+ break;
+
+
+ case PPOINT_CLOSEPATH:
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: ClosePath command ignored\n");
+#endif
+
+ break;
+
+ default:
+ break;
+
+ }
+ ++i;
+ }
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Close right path
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ if ( subpathclosed != 0 ) {
+ /* We are stroking an outline font to be filled */
+ if ( closepathatfirst == 0 ) {
+ /* Because of the concavity issue, we may not simply use
+ the closepath operator here. Instead we have to manage a possible
+ prolongation manually if the closepath would cause a line segment. */
+
+ /* 1. Check and handle starting node */
+ linkNode( lastind, PATH_START, PATH_RIGHT);
+
+ /* 2. Draw ideal isolated line segment */
+ dx1 = ppoints[startind].x + ppoints[startind].dxpr - (ppoints[lastind].x + ppoints[lastind].dxnr);
+ dy1 = ppoints[startind].y + ppoints[startind].dypr - (ppoints[lastind].y + ppoints[lastind].dynr);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srlineto %% pindex = %ld\n", dx1*up, dy1*up, startind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, Line(B));
+
+ /* 3. Check and handle ending node */
+ linkNode( startind, PATH_END, PATH_RIGHT);
+
+ } /* if ( closepathatfirst == 0) */
+
+ /* Now close path formally. Anyhow, this won't cause a line segment! */
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "t1sclosepath %% Right Path finished, stepping to Left Path\n");
+ }
+#endif
+ tmpseg = Phantom(path);
+ path = ClosePath(path);
+ path = Join(Snap(path), tmpseg);
+
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Stepping to beginning of left path
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ /* If curve is concave at the subpath's starting point, the location is onCurve
+ and the left path is convex, there. Conversely, if the curve is convex, the
+ location is at the right intersection point and the left path will be concave
+ so that the initial location must be onCurve. Hence, for both cases, we have
+ to translate back once the intersection shift.
+
+ If the curve is straight at the starting point, we directly jump from the right
+ intersection point ot he left intersection point.
+ */
+ if ( (ppoints[startind].shape == CURVE_CONCAVE) ||
+ (ppoints[startind].shape == CURVE_CONVEX) ) {
+ dx1 = - ppoints[startind].dxir;
+ dy1 = - ppoints[startind].dyir;
+ }
+ else {
+ dx1 = - 2.0 * ppoints[startind].dxir;
+ dy1 = - 2.0 * ppoints[startind].dyir;
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srmoveto %% pindex = %ld\n", dx1*up, dy1*up, startind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, B);
+ } /* if ( subpathclose != 0 */
+ else {
+ /* We have a stroked font. In this case, a line segment has to be drawn */
+ if ( (ppoints[stopind].shape == CURVE_CONCAVE) ||
+ (ppoints[stopind].shape == CURVE_CONVEX) ) {
+ dx1 = - ppoints[stopind].dxir;
+ dy1 = - ppoints[stopind].dyir;
+ }
+ else {
+ dx1 = - 2.0 * ppoints[stopind].dxir;
+ dy1 = - 2.0 * ppoints[stopind].dyir;
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srlineto %% pindex = %ld\n", dx1*up, dy1*up, stopind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, Line(B));
+
+ }
+
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Construction of left path
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ /* Create left path. This is somewhat more complicated, because the
+ order/direction has to be exchanged. */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "Constructing LeftPath: stopind=%ld, lastind=%ld, closepathatfirst=%d\n",
+ stopind, lastind, closepathatfirst);
+#endif
+ for ( i=stopind; i>=startind; ) {
+ if ( subpathclosed != 0 ) {
+ /* closed subpath --> filled font */
+ if ( i == stopind ) {
+ ip = startind;
+ if ( (closepathatfirst != 0) )
+ type = ppoints[ip].type;
+ else
+ type = PPOINT_NONE;
+ }
+ else if ( i == startind ) {
+ ip = startind + 1;
+ type = ppoints[ip].type;
+ }
+ else {
+ ip = i + 1;
+ type = ppoints[ip].type;
+ }
+ }
+ else {
+ /* open subpath --> stroked font */
+ type = ppoints[i].type;
+ in = i - 1;
+ }
+
+ /* Step through path in inverted direction.
+ Note: - ip is the index of the starting point, i the index of the
+ ending point of the current segment.
+ - If the path point is flagged "concave", then this reverts into
+ "convex" in the left path and vice versa!
+ - there is an index shift of 1 between closed and open subpaths.
+ */
+ switch ( type ) {
+ case PPOINT_MOVE:
+
+ break;
+
+ case PPOINT_LINE:
+
+ /* handle a line segment */
+ if ( subpathclosed != 0 ) {
+ segendind = i;
+ segstartind = ip;
+ }
+ else {
+ segstartind = i;
+ segendind = in;
+ }
+
+ /* 1. Check and handle starting node */
+ linkNode( segstartind, PATH_START, PATH_LEFT);
+
+ /* 2. Draw ideal isolated line segment */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Line from point %ld to %ld\n", segstartind, segendind);
+#endif
+ dx1 = ppoints[segendind].x - ppoints[segendind].dxnr -
+ (ppoints[segstartind].x - ppoints[segstartind].dxpr);
+ dy1 = ppoints[segendind].y - ppoints[segendind].dynr -
+ (ppoints[segstartind].y - ppoints[segstartind].dypr);
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srlineto %% pindex = %ld\n", dx1*up, dy1*up, segendind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, Line(B));
+
+ /* 3. Check and handle ending node */
+ linkNode( segendind, PATH_END, PATH_LEFT);
+
+ break;
+
+
+ case PPOINT_BEZIER_B:
+ break;
+
+ case PPOINT_BEZIER_C:
+ break;
+
+ case PPOINT_BEZIER_D:
+ /* handle a bezier segment (given by this and the previous 3 path points)!
+ For bezier segments, we may not simply apply the intersection of previous
+ and next candidate because that would damage the curve's layout. Instead,
+ in cases where the candidate produced by intersection is not identical to
+ the ideal point, we prolongate and link the distance with a line segment.
+ */
+
+ /* 1. Check and handle starting node */
+ linkNode( ip, PATH_START, PATH_LEFT);
+
+ /* 2. Draw ideal curve segment */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Curve from PP %ld to PP %ld to PP %ld to PP %ld\n",
+ ip, ip-1, ip-2, ip-3);
+#endif
+ /* Use ideal point locations for curve at starting and ending point: */
+ dx1 = ppoints[ip-1].x - ppoints[ip-1].dxir - (ppoints[ip].x - ppoints[ip].dxpr);
+ dy1 = ppoints[ip-1].y - ppoints[ip-1].dyir - (ppoints[ip].y - ppoints[ip].dypr);
+ dx2 = ppoints[ip-2].x - ppoints[ip-2].dxir - (ppoints[ip-1].x - ppoints[ip-1].dxir);
+ dy2 = ppoints[ip-2].y - ppoints[ip-2].dyir - (ppoints[ip-1].y - ppoints[ip-1].dyir);
+ dx3 = ppoints[ip-3].x - ppoints[ip-3].dxnr - (ppoints[ip-2].x - ppoints[ip-2].dxir);
+ dy3 = ppoints[ip-3].y - ppoints[ip-3].dynr - (ppoints[ip-2].y - ppoints[ip-2].dyir);
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f %f %f %f %f t1srrcurveto %% pindex = %ld\n",
+ dx1*up, dy1*up,
+ dx2*up, dy2*up,
+ dx3*up, dy3*up,
+ i);
+#endif
+ IfTrace4((FontDebug), "RRCurveTo %f %f %f %f ",
+ dx1, dy1, dx2, dy2);
+ IfTrace2((FontDebug), "%f %f\n", dx3, dy3);
+ B = Loc(CharSpace, dx1, dy1);
+ C = Loc(CharSpace, dx2, dy2);
+ D = Loc(CharSpace, dx3, dy3);
+
+ C = Join(C, (struct segment *)Dup(B));
+ D = Join(D, (struct segment *)Dup(C));
+ path = Join(path, (struct segment *)Bezier(B, C, D));
+
+ /* 3. Check and handle ending node */
+ linkNode( ip-3, PATH_END, PATH_LEFT);
+
+ break;
+
+
+ case PPOINT_CLOSEPATH:
+
+ /* Handle a ClosePath segment, if it had
+ caused a line segment. Hence, actually, we handle
+ a line segment here. */
+ if ( closepathatfirst == 1 ) {
+ /* ignore this command */
+ break;
+ }
+
+ /* 1. Check and handle starting node */
+ linkNode( startind, PATH_START, PATH_LEFT);
+
+ /* 2. Draw ideal isolated line segment */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Inverted ClosePath from point %ld to %ld\n", startind, lastind);
+#endif
+ if ( subpathclosed != 0 ) {
+ dx1 = ppoints[lastind].x - ppoints[lastind].dxnr - (ppoints[startind].x - ppoints[startind].dxpr);
+ dy1 = ppoints[lastind].y - ppoints[lastind].dynr - (ppoints[startind].y - ppoints[startind].dypr);
+ }
+ else {
+ dx1 = -(ppoints[i].x - ppoints[i].dxnr - (ppoints[ip].x - ppoints[ip].dxpr));
+ dy1 = -(ppoints[i].y - ppoints[i].dynr - (ppoints[ip].y - ppoints[ip].dypr));
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ if ( subpathclosed != 0 ) {
+ fprintf( psfile, "%f %f t1srlineto %% (Inverted ClosePath, subpathclosed=1) pindex = %ld\n",
+ dx1*up, dy1*up, lastind);
+ }
+ else {
+ fprintf( psfile, "%f %f t1srlineto %% (Inverted ClosePath, subpathclosed=0) pindex = %ld\n",
+ dx1*up, dy1*up, i);
+ }
+ }
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, Line(B));
+
+ /* 3. Check and handle ending node */
+ linkNode( lastind, PATH_END, PATH_LEFT);
+
+ break;
+
+ default:
+ break;
+
+ }
+ --i;
+ }
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL ) {
+ fprintf( psfile, "t1sclosepath\n");
+ }
+#endif
+ tmpseg = Phantom(path);
+ path = ClosePath(path);
+ path = Join(Snap(path), tmpseg);
+
+
+ /********************************************************************************
+ ********************************************************************************
+ *****
+ ***** Move to final position
+ *****
+ ********************************************************************************
+ ********************************************************************************/
+
+ /* Step to back to starting point of this subpath. If closepathatfirst==0, the
+ final closepath caused a line segment. In this case, we first have to step
+ back that segment and proceed from this point. */
+ if ( ppoints[startind].shape == CURVE_CONVEX ) {
+ /* In this case, left path is concave and the current location is at
+ the onCurve point */
+ dx1 = 0.0;
+ dy1 = 0.0;
+ }
+ else {
+ /* OK, it seems to be the intersection point */
+ dx1 = ppoints[startind].dxir;
+ dy1 = ppoints[startind].dyir;
+ }
+ /* We are now onCurve. If necessary step to the point where the closepath
+ appeared. */
+ if ( closepathatfirst == 0 ) {
+ dx1 += ppoints[lastind].x - ppoints[startind].x;
+ dy1 += ppoints[lastind].y - ppoints[startind].y;
+ }
+
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1srmoveto %% pindex = %ld\n", dx1*up, dy1*up, lastind);
+#endif
+ B = Loc(CharSpace, dx1, dy1);
+ path = Join(path, B);
+
+ return;
+
+}
+
+
+
+/* Compute distance from OnCurve-points to their neighbouring points, fill in
+ the respective entries dist2prev and dist2next in the ppoints[] structures
+ and return the index of the last point in the current subpath which has
+ a location different from the starting point of the subpath. */
+static long computeDistances( long startind, long stopind, int subpathclosed)
+{
+ long lastind = 0;
+ double dx = 0.0;
+ double dy = 0.0;
+ long i = 0;
+ int neighboured = 0;
+
+
+ /* Handle first point as a special case */
+ /* distance to previous point. First, get index of previous point. */
+ lastind = stopind;
+
+ if ( subpathclosed != 0 ) {
+ if ( (ppoints[startind].x == ppoints[stopind].x) &&
+ (ppoints[startind].y == ppoints[stopind].y) ) {
+ while ( (ppoints[lastind].x == ppoints[stopind].x) &&
+ (ppoints[lastind].y == ppoints[stopind].y))
+ --lastind;
+ }
+ else {
+ lastind = stopind - 1;
+ }
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr,
+ "computeDistance(): startind=%ld stopind=%ld, lastind=%ld, start.x=%f, start.y=%f, last.x=%f, last.y=%f\n",
+ startind, stopind, lastind, ppoints[startind].x, ppoints[startind].y,
+ ppoints[lastind].x, ppoints[lastind].y);
+#endif
+
+ dx = ppoints[startind].x - ppoints[lastind].x;
+ dy = ppoints[startind].y - ppoints[lastind].y;
+ ppoints[startind].dist2prev = sqrt( dx*dx + dy*dy );
+
+ /* distance to next point */
+ dx = ppoints[startind+1].x - ppoints[startind].x;
+ dy = ppoints[startind+1].y - ppoints[startind].y;
+ ppoints[startind].dist2next = sqrt( dx*dx + dy*dy );
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr,
+ "Pre: Distance at point %ld: Prev=%f Next=%f\n",
+ startind, ppoints[startind].dist2prev, ppoints[startind].dist2next);
+#endif
+
+ for ( i = startind+1; i < lastind; i++ ) {
+ if ( (ppoints[i].type == PPOINT_MOVE) ||
+ (ppoints[i].type == PPOINT_LINE) ||
+ (ppoints[i].type == PPOINT_BEZIER_D) ) {
+ if ( neighboured ) {
+ ppoints[i].dist2prev = ppoints[i-1].dist2next;
+ }
+ else {
+ /* distance to previous point */
+ dx = ppoints[i].x - ppoints[i-1].x;
+ dy = ppoints[i].y - ppoints[i-1].y;
+ /* Take care of degenerated curves */
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[i].x - ppoints[i-2].x;
+ dy = ppoints[i].y - ppoints[i-2].y;
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[i].x - ppoints[i-3].x;
+ dy = ppoints[i].y - ppoints[i-3].y;
+ }
+ }
+ ppoints[i].dist2prev = sqrt( dx*dx + dy*dy );
+ }
+ /* distance to next point */
+ dx = ppoints[i+1].x - ppoints[i].x;
+ dy = ppoints[i+1].y - ppoints[i].y;
+ /* Take care of degenerated curves */
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[i+2].x - ppoints[i].x;
+ dy = ppoints[i+2].y - ppoints[i].y;
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[i+3].x - ppoints[i].x;
+ dy = ppoints[i+3].y - ppoints[i].y;
+ }
+ }
+ ppoints[i].dist2next = sqrt( dx*dx + dy*dy );
+ neighboured = 1;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Distance at point %ld: Prev=%f Next=%f\n",
+ i, ppoints[i].dist2prev, ppoints[i].dist2next);
+#endif
+ }
+ else {
+ neighboured = 0;
+ }
+
+ }
+ /* We still have to handle the last point */
+ /* distance to previous point */
+ dx = ppoints[lastind].x - ppoints[lastind-1].x;
+ dy = ppoints[lastind].y - ppoints[lastind-1].y;
+ /* Take care of degenerated curves */
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[lastind].x - ppoints[lastind-2].x;
+ dy = ppoints[lastind].y - ppoints[lastind-2].y;
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ dx = ppoints[lastind].x - ppoints[lastind-3].x;
+ dy = ppoints[lastind].y - ppoints[lastind-3].y;
+ }
+ }
+ ppoints[lastind].dist2prev = sqrt( dx*dx + dy*dy );
+ /* distance to next point */
+ ppoints[lastind].dist2next = ppoints[startind].dist2prev;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "End: Distance at point %ld: Prev=%f Next=%f\n",
+ lastind, ppoints[lastind].dist2prev, ppoints[lastind].dist2next);
+#endif
+
+ return lastind;
+
+}
+
+
+
+/*
+
+ */
+static long handleNonSubPathSegments( long pindex)
+{
+
+ /* handle the different segment types in a switch-statement */
+ switch ( ppoints[pindex].type ) {
+
+ case PPOINT_SBW:
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f %f %f t1sbw %% pindex = %ld\n",
+ ppoints[pindex].x*up, ppoints[pindex].y*up, /* sidebearings */
+ ppoints[pindex].ax*up, ppoints[pindex].ay*up, /* escapements */
+ pindex
+ );
+#endif
+ path = Join(path, Loc(CharSpace, ppoints[pindex].x, ppoints[pindex].y));
+ return 1;
+ break;
+
+
+ case PPOINT_ENDCHAR:
+ /* Perform a Closepath just in case the command was left out */
+ path = ClosePath(path);
+
+ /* Set character width / escapement. It is stored in the vars for
+ hinted coordinates. */
+ path = Join(Snap(path), Loc(CharSpace, ppoints[pindex].ax, ppoints[pindex].ay));
+
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fputs( "t1FinishPage\n", psfile);
+#endif
+ return 1;
+ break;
+
+
+ case PPOINT_SEAC:
+ /* return to origin of accent */
+ apath = Snap(path);
+ /* reset path to NULL */
+ path = NULL;
+ return 1;
+ break;
+
+
+ default:
+ /* not handled, return 0! */
+ ;
+ }
+
+ return 0;
+
+}
+
+
+
+/* Transform a path point according to the path's incoming angle, the path's
+ outgoing angle and the parameter strokewidth. The computation is based on
+ simple geometric considerations and makes use of the distance from the
+ current point to the previous point and the next point respectively.
+
+ Generally, each link to a path point induces its own candidate by simply
+ widening the respective link orthogonally to strokewidth/2. This yields
+ two displacement vectors (dx,dy) for the link from the previous point to the
+ point under consideration (dxp, dyp) and and for the link from the current
+ point to the next point (dxn, dyn).
+
+ Later on, the two candidates are used to compute the resulting displacement
+ as the intersection of the prolongated lines from before and behind the
+ current point.
+
+ Additionally, check whether the curve is concave or convex at this point.
+ This is required for prolongation in the context of stroking.
+*/
+static void transformOnCurvePathPoint( double strokewidth,
+ long prevind, long currind, long nextind)
+{
+ double distxp;
+ double distyp;
+ double distxn;
+ double distyn;
+ double det;
+
+ /*
+ distxp = (ppoints[currind].y - ppoints[prevind].y);
+ distyp = -(ppoints[currind].x - ppoints[prevind].x);
+ distxn = (ppoints[nextind].y - ppoints[currind].y);
+ distyn = -(ppoints[nextind].x - ppoints[currind].x);
+
+ ppoints[currind].dxpr = distxp * strokewidth * 0.5 / ppoints[currind].dist2prev;
+ ppoints[currind].dypr = distyp * strokewidth * 0.5 / ppoints[currind].dist2prev;
+
+ ppoints[currind].dxnr = distxn * strokewidth * 0.5 / ppoints[currind].dist2next;
+ ppoints[currind].dynr = distyn * strokewidth * 0.5 / ppoints[currind].dist2next;
+ */
+ /* Note: When computing transformations of OnCurve points, we consider two
+ special cases:
+
+ 1) The OnCurve beginning or end point is equal to the neighboring
+ control point of a Bezier-Segment.
+
+ 2) This holds for beginning *and* end point. In this case the curve
+ degenerates to a straight lines.
+
+ Although this is deprecated by Adobe, fonts that use such constructions
+ exist (e.g.m lower case 'n' of Univers 55). However, we do not care
+ for segments that do not any escapement at all!
+ */
+
+ distxp = (ppoints[currind].y - ppoints[prevind].y);
+ distyp = -(ppoints[currind].x - ppoints[prevind].x);
+ if ( (distxp == 0.0) && (distyp == 0.0) ) {
+ distxp = (ppoints[currind].y - ppoints[prevind-1].y);
+ distyp = -(ppoints[currind].x - ppoints[prevind-1].x);
+ if ( (distxp == 0.0) && (distyp == 0.0) ) {
+ distxp = (ppoints[currind].y - ppoints[prevind-2].y);
+ distyp = -(ppoints[currind].x - ppoints[prevind-2].x);
+ }
+ }
+ ppoints[currind].dxpr = distxp * strokewidth * 0.5 / ppoints[currind].dist2prev;
+ ppoints[currind].dypr = distyp * strokewidth * 0.5 / ppoints[currind].dist2prev;
+
+ distxn = (ppoints[nextind].y - ppoints[currind].y);
+ distyn = -(ppoints[nextind].x - ppoints[currind].x);
+ if ( (distxn == 0.0) && (distyn == 0.0) ) {
+ distxn = (ppoints[nextind+1].y - ppoints[currind].y);
+ distyn = -(ppoints[nextind+1].x - ppoints[currind].x);
+ if ( (distxn == 0.0) && (distyn == 0.0) ) {
+ distxn = (ppoints[nextind+2].y - ppoints[currind].y);
+ distyn = -(ppoints[nextind+2].x - ppoints[currind].x);
+ }
+ }
+ ppoints[currind].dxnr = distxn * strokewidth * 0.5 / ppoints[currind].dist2next;
+ ppoints[currind].dynr = distyn * strokewidth * 0.5 / ppoints[currind].dist2next;
+
+ /* Consider determinant of the two tangent vectors at this node in order to
+ decide whether the curve is convex or cancave at this point. */
+ if ( (det = ((distxp * distyn) - (distxn * distyp))) < 0.0 ) {
+ /* curve turns to the right */
+ ppoints[currind].shape = CURVE_CONCAVE;
+ }
+ else if ( det > 0.0 ) {
+ /* curve turns to the left */
+ ppoints[currind].shape = CURVE_CONVEX;
+ }
+ else {
+ /* curve is straight */
+ ppoints[currind].shape = CURVE_STRAIGHT;
+ }
+
+ return;
+}
+
+
+/* Compute a displacement for offCurve points, that is, for Bezier B and C points.
+
+ This computation is not as simple as it might appear at a first glance and,
+ depending on the actual curve parameters and the parameter strokewidth, it might
+ be necessary to subdivide the curve. My mathematical background is not actually
+ reliable in this context but it seems that in particular the angle that the curve
+ runs through is important in this context. Since the Adobe Type 1 recommendations
+ on font design include a rule which states that curves' end points should be located
+ at extreme values, and consequently, that the angle of a curve segment should not
+ be larger than 90 degrees, I have decided not to implement curve subdivision. This
+ might lead to some deviations if fonts do not adhere to the Adobe recommendations.
+ Anyways, I have never seen such fonts.
+
+ This function is called for Bezier_B points and computes displacements for the B
+ and C points at once. Fortunately, index cycling cannot happen here. When
+ computing the B' C' off-curve points, special care against numerical instability
+ is required. We assume that at least one of the two points can be computed
+ in a stable way.
+
+ The new Bezier B' and C' points can be considered as four degrees of freedom and we have
+ to find 4 equations to be able to compute them.
+
+ 1) We require the tangents slope at point A' to be identical to the slope at the
+ point A of the ideally thin mathematical curve.
+
+ 2) The same holds for the tangents slope at point D' with respect to point D.
+
+ 3) We compute the following points
+
+ P1: Equally subdivides the line A - B
+ P2: Equally subdivides the line B - C
+ P3: Equally subdivides the line C - D
+
+ P4: Equally subdivides the line P1 - P2
+ P5: Equally subdivides the line P1 - P3
+
+ P6: Equally subdivides the line P4 - P5
+
+ This latter point is part of the curve and, moreover, the line P4 - P5 is
+ tangent to the curve at that point.
+ From this point, we compute a displacement for P6, orthogonally to the curve
+ at that point and with length strokewidth/2. The resulting point is part of
+ the delimiting path that makes up the thick curve.
+
+ 4) We require that the tangent's slope at P6' equals the tangents slope at P6.
+
+ Then, under certain further constraints as mentioned above, we compute the points
+ B' and C' making use of the points A' and D' which have been transformed as onCurve
+ points. By definition, for offCurve points, there is only one candidate.
+
+ */
+static void transformOffCurvePathPoint( double strokewidth, long currind)
+{
+ double dtmp;
+ double diameter;
+ double dx;
+ double dy;
+
+ /* points defining the curve */
+ double pax;
+ double pay;
+ double pbx;
+ double pby;
+ double pcx;
+ double pcy;
+ double pdx;
+ double pdy;
+
+ /* auxiliary points from iterative Bezier construction */
+ double p1x;
+ double p1y;
+ double p2x;
+ double p2y;
+ double p3x;
+ double p3y;
+ double p4x;
+ double p4y;
+ double p5x;
+ double p5y;
+ double p6x;
+ double p6y;
+
+ /* already displaced / shifted onCurve points and the ones we are going
+ to compute. */
+ double paxs;
+ double pays;
+ double pbxs;
+ double pbys;
+ double pcxs;
+ double pcys;
+ double pdxs;
+ double pdys;
+
+ /* The normal vector on the curve at t=1/2 */
+ double nabs;
+ double nx;
+ double ny;
+
+ /* some variables for computations at point B' */
+ double bloc1x;
+ double bloc1y;
+ double bdir1x;
+ double bdir1y;
+ double bloc2x;
+ double bloc2y;
+ double bdir2x;
+ double bdir2y;
+ double bdet;
+ double binvdet;
+ double binvdir1x;
+ double binvdir1y; /**/
+ double binvdir2x;
+ double binvdir2y; /**/
+ double bmu;
+ double bnu; /**/
+
+ /* some variables for computations at point C' */
+ double cloc1x;
+ double cloc1y;
+ double cdir1x;
+ double cdir1y;
+ double cloc2x;
+ double cloc2y;
+ double cdir2x;
+ double cdir2y;
+ double cdet;
+ double cinvdet;
+ double cinvdir1x;
+ double cinvdir1y; /**/
+ double cinvdir2x;
+ double cinvdir2y; /**/
+ double cmu;
+ double cnu; /**/
+
+ diameter = strokewidth * 0.5;
+
+ pax = ppoints[currind-1].x;
+ pay = ppoints[currind-1].y;
+ pbx = ppoints[currind].x;
+ pby = ppoints[currind].y;
+ pcx = ppoints[currind+1].x;
+ pcy = ppoints[currind+1].y;
+ pdx = ppoints[currind+2].x;
+ pdy = ppoints[currind+2].y;
+
+ p1x = (pax + pbx) * 0.5;
+ p1y = (pay + pby) * 0.5;
+ p2x = (pbx + pcx) * 0.5;
+ p2y = (pby + pcy) * 0.5;
+ p3x = (pcx + pdx) * 0.5;
+ p3y = (pcy + pdy) * 0.5;
+ p4x = (p1x + p2x) * 0.5;
+ p4y = (p1y + p2y) * 0.5;
+ p5x = (p2x + p3x) * 0.5;
+ p5y = (p2y + p3y) * 0.5;
+ p6x = (p4x + p5x) * 0.5;
+ p6y = (p4y + p5y) * 0.5;
+
+
+ /* We start by computing the shift of the onCurve points. It is not possible
+ to use dxr / dyr of the ppoints-stucture entries. These values have been
+ computed by intersection of both links to a path point. Here we need the
+ ideal points of the thick isolated curve segment. We are aware that for
+ Bezier splines, control point and OnCurve point might be identical! */
+ dx = (ppoints[currind].y - ppoints[currind-1].y) * strokewidth * 0.5 / ppoints[currind-1].dist2next;
+ dy = - (ppoints[currind].x - ppoints[currind-1].x) * strokewidth * 0.5 / ppoints[currind-1].dist2next;
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ /* Bezier_A and Bezier_B are identical */
+ dx = (ppoints[currind+1].y - ppoints[currind-1].y) * strokewidth * 0.5 / ppoints[currind-1].dist2next;
+ dy = - (ppoints[currind+1].x - ppoints[currind-1].x) * strokewidth * 0.5 / ppoints[currind-1].dist2next;
+ }
+ paxs = ppoints[currind-1].x + dx;
+ pays = ppoints[currind-1].y + dy;
+ dx = (ppoints[currind+2].y - ppoints[currind+1].y) * strokewidth * 0.5 / ppoints[currind+2].dist2prev;
+ dy = - (ppoints[currind+2].x - ppoints[currind+1].x) * strokewidth * 0.5 / ppoints[currind+2].dist2prev;
+ if ( (dx == 0.0) && (dy == 0.0) ) {
+ /* Bezier_C and Bezier_D are identical */
+ dx = (ppoints[currind+2].y - ppoints[currind].y) * strokewidth * 0.5 / ppoints[currind+2].dist2prev;
+ dy = - (ppoints[currind+2].x - ppoints[currind].x) * strokewidth * 0.5 / ppoints[currind+2].dist2prev;
+ }
+ pdxs = ppoints[currind+2].x + dx;
+ pdys = ppoints[currind+2].y + dy;
+
+ /* Next, we compute the right side normal vector at the curve point t=1/2,
+ that is, at P6. */
+ nabs = diameter / sqrt(((p5x - p4x) * (p5x - p4x)) + ((p5y - p4y) * (p5y - p4y)));
+ nx = (p5y - p4y) * nabs;
+ ny = (p4x - p5x) * nabs;
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "transformOffCurvePathPoint():\n");
+ fprintf( stderr, " A=(%f,%f), B=(%f,%f), C=(%f,%f), D=(%f,%f)\n",
+ pax, pay, pbx, pby, pcx, pcy, pdx, pdy);
+ fprintf( stderr, " PathInfo: Curve from PP %ld ... PP %ld ... PP %ld ... PP %ld. StrokeWidth=%f.\n",
+ currind-1, currind, currind+1, currind+2, strokewidth);
+ /*
+ fprintf( stderr, "/xa %f def\n/ya %f def\n/xb %f def\n/yb %f def\n/xc %f def\n/yc %f def\n/xd %f def\n/yd %f def\n",
+ pax, pay, pbx, pby, pcx, pcy, pdx, pdy);
+ */
+ fprintf( stderr, " As=(%f,%f), Ds=(%f,%f)\n",
+ paxs, pays, pdxs, pdys);
+ fprintf( stderr, " p6=(%f,%f)\n", p6x, p6y);
+ fprintf( stderr, " nx=%f, ny=%f, nabs=%f\n", nx, ny, nabs);
+ fprintf( stderr, " p6s=(%f,%f)\n", p6x+nx, p6y+ny);
+#endif
+
+ /* Compute two lines whose intersection will define point B' */
+ bloc1x = (4.0 * (nx + p6x) - (2 * paxs) + pdxs) / 3.0;
+ bloc1y = (4.0 * (ny + p6y) - (2 * pays) + pdys) / 3.0;
+ bdir1x = pcx + pdx - pax - pbx;
+ bdir1y = pcy + pdy - pay - pby;
+ bloc2x = paxs;
+ bloc2y = pays;
+ bdir2x = pbx - pax;
+ bdir2y = pby - pay;
+ bdet = (bdir2x * bdir1y) - (bdir2y * bdir1x);
+
+#define DET_QUOTIENT_UPPER_THRESHOLD (1.05)
+#define DET_QUOTIENT_LOWER_THRESHOLD (1.0/DET_QUOTIENT_UPPER_THRESHOLD)
+
+ /* Life has shown, that the "reliability" of the determinant has to be
+ ensured. Otherwise, serious distortions might be introduced.
+ In order to ensure numerical stability, we do not only check whether
+ the detrminant is about zero, but we also check whether the two partial
+ expressions that are subtracted when computing the determinant are of
+ about the same size. If this is the case, we explicitly reset the
+ determinant and eventually compute this off-curve point based on the
+ other off-curve point later. */
+ if ( (bdir2x != 0.0) && (bdir1y != 0.0) ) {
+ dtmp = (bdir2y*bdir1x)/(bdir2x*bdir1y);
+ if ( (DET_QUOTIENT_LOWER_THRESHOLD < dtmp) &&
+ (DET_QUOTIENT_UPPER_THRESHOLD > dtmp)
+ ) {
+ /* Determinant appears to be unreliable, reset it exactly to zero. */
+ bdet = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant quotient check for bdet failed: dtmp=%16.16f, lower limit=%f, upper limit=%f.\n --> Determinant does not seem to be stable, resetting to zero.\n",
+ dtmp, DET_QUOTIENT_LOWER_THRESHOLD, DET_QUOTIENT_UPPER_THRESHOLD);
+#endif
+ }
+ }
+ else if ( (bdir2y != 0.0) && (bdir1x != 0.0) ) {
+ dtmp = (bdir2x*bdir1y)/(bdir2y*bdir1x);
+ if ( (DET_QUOTIENT_LOWER_THRESHOLD < dtmp) &&
+ (DET_QUOTIENT_UPPER_THRESHOLD > dtmp)
+ ) {
+ /* Determinant appears to be unreliable, reset it exactly to zero. */
+ bdet = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant quotient check for bdet failed: dtmp=%16.16f, lower limit=%f, upper limit=%f.\n --> Determinant does not seem to be stable, resetting to zero.\n",
+ dtmp, DET_QUOTIENT_LOWER_THRESHOLD, DET_QUOTIENT_UPPER_THRESHOLD);
+#endif
+ }
+ }
+
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " bloc1x=%f, bloc1y=%f, bloc2x,=%f bloc2y=%f\n",
+ bloc1x, bloc1y, bloc2x, bloc2y);
+ fprintf( stderr, " bdir1x=%f, bdir1y=%f, bdir2x,=%f bdir2y=%f\n",
+ bdir1x, bdir1y, bdir2x, bdir2y);
+#endif
+
+ /* Switch if determinant is zero; we then actually have a straight line */
+ if ( fabs(bdet) < 0.001 ) {
+ pbxs = pbx + nx;
+ pbys = pby + ny;
+ bmu = 0.0;
+ bnu = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant check for bdet failed: bdet=%16.16f. Computing Bs based on normal vector, resetting bmu, bnu.\n",
+ bdet);
+#endif
+ }
+ else {
+ /* Calculate required part of inverse matrix */
+ binvdet = 1.0 / bdet;
+ binvdir2x = bdir1y * binvdet;
+ binvdir2y = - bdir2y * binvdet; /**/
+ binvdir1x = - bdir1x * binvdet;
+ binvdir1y = bdir2x * binvdet; /**/
+
+ /* Calculate coefficient that describes intersection */
+ bmu = (binvdir2x * (bloc1x - bloc2x)) + (binvdir1x * (bloc1y - bloc2y));
+ bnu = (binvdir2y * (bloc1x - bloc2x)) + (binvdir1y * (bloc1y - bloc2y)); /**/
+
+ /* Calculate B' */
+ pbxs = bloc2x + (bmu * bdir2x);
+ pbys = bloc2y + (bmu * bdir2y);
+ }
+
+ /* Compute two lines whose intersection will define point C' */
+ cloc1x = (4.0 * (nx + p6x) - (2 * pdxs) + paxs) / 3.0;
+ cloc1y = (4.0 * (ny + p6y) - (2 * pdys) + pays) / 3.0;
+ cdir1x = bdir1x;
+ cdir1y = bdir1y;
+ cloc2x = pdxs;
+ cloc2y = pdys;
+ cdir2x = pcx - pdx;
+ cdir2y = pcy - pdy;
+ cdet = (cdir2x * cdir1y) - (cdir2y * cdir1x);
+
+ /* Life has shown, that the "reliability" of the determinant has to be
+ ensured. Otherwise, serious distortions might be introduced.
+ In order to ensure numerical stability, we do not only check whether
+ the detrminant is about zero, but we also check whether the two partial
+ expressions that are subtracted when computing the determinant are of
+ about the same size. If this is the case, we explicitly reset the
+ determinant and eventually compute this off-curve point based on the
+ other off-curve point later. */
+ if ( (cdir2x != 0.0) && (cdir1y != 0.0) ) {
+ dtmp = (cdir2y*cdir1x)/(cdir2x*cdir1y);
+ if ( (DET_QUOTIENT_LOWER_THRESHOLD < dtmp) &&
+ (DET_QUOTIENT_UPPER_THRESHOLD > dtmp)
+ ) {
+ /* Determinant appears to be unreliable, reset it exactly to zero. */
+ cdet = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant quotient check for cdet failed: dtmp=%16.16f, lower limit=%f, upper limit=%f.\n --> Determinant does not seem to be stable, resetting to zero.\n",
+ dtmp, DET_QUOTIENT_LOWER_THRESHOLD, DET_QUOTIENT_UPPER_THRESHOLD);
+#endif
+ }
+ }
+ else if ( (cdir2y != 0.0) && (cdir1x != 0.0) ) {
+ dtmp = (cdir2x*cdir1y)/(cdir2y*cdir1x);
+ if ( (DET_QUOTIENT_LOWER_THRESHOLD < dtmp) &&
+ (DET_QUOTIENT_UPPER_THRESHOLD > dtmp)
+ ) {
+ /* Determinant appears to be unreliable, reset it exactly to zero. */
+ cdet = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant quotient check for cdet failed: dtmp=%16.16f, lower limit=%f, upper limit=%f.\n --> Determinant does not seem to be stable, resetting to zero.\n",
+ dtmp, DET_QUOTIENT_LOWER_THRESHOLD, DET_QUOTIENT_UPPER_THRESHOLD);
+#endif
+ }
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " cloc1x=%f, cloc1y=%f, cloc2x,=%f cloc2y=%f\n",
+ cloc1x, cloc1y, cloc2x, cloc2y);
+ fprintf( stderr, " cdir1x=%f, cdir1y=%f, cdir2x,=%f cdir2y=%f\n",
+ cdir1x, cdir1y, cdir2x, cdir2y);
+#endif
+
+ /* Switch if determinant is zero; we then actually have a straight line */
+ if ( fabs( cdet) < 0.001 ) {
+ pcxs = pcx + nx;
+ pcys = pcy + ny;
+ cmu = 0.0;
+ cnu = 0.0;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Determinant check for cdet failed: cdet=%16.16f. Computing Cs based on normal vector, resetting cmu, cnu.\n",
+ cdet);
+#endif
+ }
+ else {
+ /* Calculate required part of inverse matrix */
+ cinvdet = 1.0 / cdet;
+ cinvdir2x = cdir1y * cinvdet;
+ cinvdir2y = - cdir2y * cinvdet; /**/
+ cinvdir1x = - cdir1x * cinvdet;
+ cinvdir1y = cdir2x * cinvdet; /**/
+
+ /* Calculate coefficient that describes intersection */
+ cmu = (cinvdir2x * (cloc1x - cloc2x)) + (cinvdir1x * (cloc1y - cloc2y));
+ cnu = (cinvdir2y * (cloc1x - cloc2x)) + (cinvdir1y * (cloc1y - cloc2y)); /**/
+
+ /* Calculate C' */
+ pcxs = cloc2x + (cmu * cdir2x);
+ pcys = cloc2y + (cmu * cdir2y);
+ }
+
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " bdet=%f, cdet=%f, bmu=%f, bnu=%f, cmu=%f, cnu=%f\n",
+ bdet, cdet, bmu, bnu, cmu, cnu);
+#endif
+
+ /* Analyse coefficients and decide on numerical stability. If suggesting,
+ overwrite, using another relation. Here, we assume that at least the
+ solution at *one* end of the curve is stable. */
+ if ( fabs(bmu) < 0.1 ) {
+ pbxs = ((8 * (nx + p6x) - paxs - pdxs) / 3.0) - pcxs;
+ pbys = ((8 * (ny + p6y) - pays - pdys) / 3.0) - pcys;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Coefficient check for bmu failed: bmu=%16.16f. Computing Bs based on Cs.\n",
+ bmu);
+#endif
+ }
+ if ( fabs(cmu) < 0.1 ) {
+ pcxs = ((8 * (nx + p6x) - paxs - pdxs) / 3.0) - pbxs;
+ pcys = ((8 * (ny + p6y) - pays - pdys) / 3.0) - pbys;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " Warning: Coefficient check for cmu failed: cmu=%16.16f. Computing Cs based on Bs.\n",
+ cmu);
+#endif
+ }
+
+
+ /* Store the resulting displacement values in the ppoints-struct so
+ they can be used for path construction. We use the "intersect" member
+ because in this case nothing is related to "previous" or "next".*/
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, " pbx=%f, pbxs=%f, bxshift=%f, pby=%f, pbys=%f, byshift=%f\n",
+ pbx, pbxs, pbxs-pbx, pby, pbys, pbys-pby);
+ fprintf( stderr, " pcx=%f, pcxs=%f, cxshift=%f, pcy=%f, pcys=%f, cyshift=%f\n",
+ pcx, pcxs, pcxs-pcx, pcy, pcys, pcys-pcy);
+ fprintf( stderr, " Summary: A =(%f,%f), B =(%f,%f), C =(%f,%f), D =(%f,%f)\n",
+ pax, pay, pbx, pby, pcx, pcy, pdx, pdy);
+ fprintf( stderr, " As=(%f,%f), Bs=(%f,%f), Cs=(%f,%f), Ds=(%f,%f)\n\n",
+ paxs, pays, pbxs, pbys, pcxs, pcys, pdxs, pdys);
+#endif
+ ppoints[currind].dxir = pbxs - pbx;
+ ppoints[currind].dyir = pbys - pby;
+ ppoints[currind+1].dxir = pcxs - pcx;
+ ppoints[currind+1].dyir = pcys - pcy;
+
+ return;
+
+}
+
+
+static void intersectRight( long index, double halfwidth, long flag)
+{
+ double r2 = 0.0;
+ double det = 0.0;
+ double dxprev;
+ double dyprev;
+ double dxnext;
+ double dynext;
+
+
+ /* In order to determine the intersection between the two
+ prolongations at the path point under consideration, we use
+ the Hesse Normal Form, multiplied with r.
+
+ dx * x + dy * y + r^2 = 0
+
+ Here, r is the distance from the origin, that is, from the path point
+ under consideration. */
+
+ /* Check for start and ending of non-closed paths */
+ if ( flag == INTERSECT_PREVIOUS ) {
+ ppoints[index].dxir = ppoints[index].dxpr;
+ ppoints[index].dyir = ppoints[index].dypr;
+ /* Correct shape to be "straight" at ending point! */
+ ppoints[index].shape = CURVE_STRAIGHT;
+ return;
+ }
+ if ( flag == INTERSECT_NEXT ) {
+ ppoints[index].dxir = ppoints[index].dxnr;
+ ppoints[index].dyir = ppoints[index].dynr;
+ /* Correct shape to be "straight" at starting point! */
+ ppoints[index].shape = CURVE_STRAIGHT;
+ return;
+ }
+
+ /* OK, we actually compute an intersection */
+ dxprev = ppoints[index].dxpr;
+ dyprev = ppoints[index].dypr;
+ dxnext = ppoints[index].dxnr;
+ dynext = ppoints[index].dynr;
+
+ /* Compute distance square */
+ r2 = halfwidth * halfwidth;
+
+ /* Check the determinant. If it is zero, the two lines are parallel
+ and also must touch at atleast one location,
+ so that there are an infinite number of solutions. In this case,
+ we compute the average position and are done. */
+ if ( fabs( (det = ((dyprev * dxnext) - (dynext * dxprev))) ) < 0.00001 ) {
+ ppoints[index].dxir = 0.5 * (dxprev + dxnext);
+ ppoints[index].dyir = 0.5 * (dyprev + dynext);
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "intersectRight(0):\n dxprev=%f, dxnext=%f, dxres=%f,\n dyprev=%f, dynext=%f, dyres=%f,\n det=%16.16f\n",
+ dxprev, dxnext, ppoints[index].dxir, dyprev, dynext, ppoints[index].dyir, det);
+ fprintf( stderr, " --> Computation based on averaging [dxprev,dyprev] and [dxnext,dynext]\n");
+ fprintf( stderr, " Right intersection point shift: (%f,%f), absolute shift length: %f.\n\n",
+ ppoints[index].dxir, ppoints[index].dyir,
+ sqrt(ppoints[index].dxir*ppoints[index].dxir + ppoints[index].dyir*ppoints[index].dyir));
+#endif
+ return;
+ }
+ /* OK, there seems to be a unique solution, compute it */
+ if ( dxprev != 0.0 ) {
+ ppoints[index].dyir = r2 * (dxnext - dxprev) / det;
+ ppoints[index].dxir = (r2 - (dyprev * ppoints[index].dyir)) / dxprev; /* - ? */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "intersectRight(1):\n dxprev=%f, dxnext=%f, dxres=%f,\n dyprev=%f, dynext=%f, dyres=%f,\n det=%16.16f\n",
+ dxprev, dxnext, ppoints[index].dxir, dyprev, dynext, ppoints[index].dyir, det);
+ fprintf( stderr, " --> Computation based on previous path point.\n");
+ fprintf( stderr, " Right intersection point shift: (%f,%f), absolute shift length: %f.\n\n",
+ ppoints[index].dxir, ppoints[index].dyir,
+ sqrt(ppoints[index].dxir*ppoints[index].dxir + ppoints[index].dyir*ppoints[index].dyir));
+#endif
+ }
+ else {
+ ppoints[index].dyir = -r2 * (dxprev - dxnext) / det;
+ ppoints[index].dxir = (r2 - (dynext * ppoints[index].dyir)) / dxnext; /* - ? */
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "intersectRight(2):\n dxprev=%f, dxnext=%f, dxres=%f,\n dyprev=%f, dynext=%f, dyres=%f,\n det=%16.16f\n",
+ dxprev, dxnext, ppoints[index].dxir, dyprev, dynext, ppoints[index].dyir, det);
+ fprintf( stderr, " --> Computation based on next path point.\n");
+ fprintf( stderr, " Right intersection point shift: (%f,%f), absolute shift length: %f.\n\n",
+ ppoints[index].dxir, ppoints[index].dyir,
+ sqrt(ppoints[index].dxir*ppoints[index].dxir + ppoints[index].dyir*ppoints[index].dyir));
+#endif
+ }
+
+ return;
+
+}
+
+
+
+/* linkNode(): Insert prolongation lines at nodes. */
+static void linkNode( long index, int position, int orientation)
+{
+ struct segment* B;
+ double dx = 0.0;
+ double dy = 0.0;
+
+ if ( orientation == PATH_RIGHT ) {
+ /* We are constructing the right hand side path */
+ if ( position == PATH_START ) {
+ /* We are starting a new segment. Link from current point to ideally
+ next-shifted point of segment. */
+ if ( ppoints[index].shape == CURVE_CONCAVE ) {
+ /* prolongate from original curve point to ideally next-shifted point */
+ dx = ppoints[index].dxnr;
+ dy = ppoints[index].dynr;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Concave at PP %ld. Prolongation from onCurve to ideal: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ else if ( ppoints[index].shape == CURVE_CONVEX ) {
+ /* prolongate from intersecion point to ideally next-shifted point */
+ dx = ppoints[index].dxnr - ppoints[index].dxir;
+ dy = ppoints[index].dynr - ppoints[index].dyir;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Convex at PP %ld. Prolongation from intersection to ideal: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ }
+ else if ( position == PATH_END ) {
+ /* We are ending the current segment. Link from ideally prev-shifted point
+ to the appropriate ending point. */
+ if ( ppoints[index].shape == CURVE_CONCAVE ) {
+ /* prolongate from ideally prev-shifted point to original curve point. */
+ dx = - ppoints[index].dxpr;
+ dy = - ppoints[index].dypr;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Concave at PP %ld. Prolongation from ideal to onCurve: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ else if ( ppoints[index].shape == CURVE_CONVEX ) {
+ /* prolongate from ideally prev-shifted point to intersection point. */
+ dx = ppoints[index].dxir - ppoints[index].dxpr;
+ dy = ppoints[index].dyir - ppoints[index].dypr;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "RP: Convex at PP %ld. Prolongation from ideal to intersection: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ } /* if ( PATH_END ) */
+ } /* if ( PATH_RIGHT ) */
+ else if ( orientation == PATH_LEFT ) {
+
+ /* We are constructing the left hand side path. Some notions have to be
+ reverted (e.g. concavity vs. convexity and next vs. previous)! */
+ if ( position == PATH_START ) {
+ /* We are starting a new segment. Link from current point to ideally
+ next-shifted point of segment. */
+ if ( ppoints[index].shape == CURVE_CONVEX ) {
+ /* prolongate from original curve point to ideally next-shifted point.
+ Remember: next --> prev! */
+ dx = - (ppoints[index].dxpr);
+ dy = - (ppoints[index].dypr);
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Concave at PP %ld. Prolongation from onCurve to ideal: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ else if ( ppoints[index].shape == CURVE_CONCAVE ) {
+ /* prolongate from intersecion point to ideally next-shifted point */
+ dx = - (ppoints[index].dxpr - ppoints[index].dxir);
+ dy = - (ppoints[index].dypr - ppoints[index].dyir);
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Convex at PP %ld. Prolongation from intersection to ideal: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ }/* if ( PATH_START ) */
+ else if ( position == PATH_END ) {
+ /* We are ending the current segment. Link from ideally prev-shifted point
+ to the appropriate ending point. */
+ if ( ppoints[index].shape == CURVE_CONVEX ) {
+ /* prolongate from ideally prev-shifted point to original curve point. */
+ dx = ppoints[index].dxnr;
+ dy = ppoints[index].dynr;
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Concave at PP %ld. Prolongation from ideal to onCurve: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ else if ( ppoints[index].shape == CURVE_CONCAVE ) {
+ /* prolongate from ideally prev-shifted point to intersection point. */
+ dx = - (ppoints[index].dxir - ppoints[index].dxnr);
+ dy = - (ppoints[index].dyir - ppoints[index].dynr);
+#ifdef DEBUG_OUTLINE_SURROUNDING
+ fprintf( stderr, "LP: Convex at PP %ld. Prolongation from ideal to intersection: (%f,%f)\n",
+ index, dx, dy);
+#endif
+ }
+ } /* if ( PATH_END ) */
+ } /* if ( PATH_LEFT ) */
+
+ if ( (dx != 0.0) || (dy != 0.0) ) {
+#ifdef DUMPDEBUGPATH
+ if ( psfile != NULL )
+ fprintf( psfile, "%f %f t1sprolongate %% pindex = %ld\n", dx*up, dy*up, index);
+#endif
+ B = Loc( CharSpace, dx, dy);
+ path = Join(path, Line(B));
+ }
+
+ return;
+
+}
+
+
+int T1int_Type1QuerySEAC( unsigned char* base,
+ unsigned char* accent)
+{
+ if ( isseac == 0 ) {
+ return 0;
+ }
+
+ *base = seacbase;
+ *accent = seacaccent;
+
+ return isseac;
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/types.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/types.h
new file mode 100644
index 00000000000..aa13d94ee61
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/types.h
@@ -0,0 +1,32 @@
+/*
+ * File: types.h
+ * Purpose: define basic types so that program is portable to non 32 bits
+ * platforms
+ * Version: 1.0 (Dec. 1993)
+ * Author: Piet Tutelaers
+ */
+
+#ifndef __TYPES__
+#define __TYPES__
+
+#if defined(WORD16)
+typedef unsigned short USHORT; /* 16 bits */
+typedef short SHORT; /* 16 bits */
+typedef long LONG; /* 32 bits */
+typedef unsigned long ULONG; /* 32 bits */
+typedef double DOUBLE; /* 64 bits */
+#elif defined(WORD64)
+typedef unsigned short USHORT; /* 16 bits */
+typedef short SHORT; /* 16 bits */
+typedef int LONG; /* 32 bits */
+typedef unsigned long ULONG; /* 32 bits */
+typedef double DOUBLE; /* 64 bits */
+#else /* default: WORD32 */
+typedef unsigned short USHORT; /* 16 bits */
+typedef short SHORT; /* 16 bits */
+typedef int LONG; /* 32 bits */
+typedef unsigned int ULONG; /* 32 bits */
+typedef double DOUBLE; /* 64 bits */
+#endif
+
+#endif /* __TYPES__ */
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.c b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.c
new file mode 100644
index 00000000000..e02a8d5c2bb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.c
@@ -0,0 +1,204 @@
+/* $XConsortium: util.c,v 1.6 92/03/26 16:42:26 eswu Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
+
+#include "types.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "util.h"
+#include "fontmisc.h"
+
+static char *vm_base = NULL; /* Start of virtual memory area */
+ char *vm_next = NULL; /* Pointer to first free byte */
+ LONG vm_free = 0; /* Count of free bytes */
+ LONG vm_size = 0; /* Total size of memory */
+
+/* The following global variable is for detecting a trial to
+ allocate a second chunk---not to be done with the t1lib, since
+ a later reallocation would lead to segmentation faults!
+ */
+int vm_init_count;
+/* This is the amount of VM, the font is tried to be loaded in. */
+int vm_init_amount;
+
+
+/*
+ * Initialize memory.
+ */
+
+extern char *tokenMaxP; /* Pointer to end of VM we may use + 1 */
+
+boolean vm_init()
+{
+ /* Check whether it is the first piece of memory for the
+ current font or not. If so, simulate lacking memory to
+ indicate that the font should be tried to load with a
+ vitual memory twice as large!
+ */
+ if (vm_init_count>0){
+ vm_init_count++;
+ return(FALSE);
+ }
+ vm_init_count++;
+
+ vm_next = vm_base = (char *) calloc( vm_init_amount, sizeof(char));
+
+ if (vm_base != NULL) {
+ vm_free = vm_init_amount;
+ vm_size = vm_init_amount;
+ tokenMaxP = vm_next_byte() + vm_init_amount;
+ return(TRUE);
+ }
+ else
+ return(FALSE);
+}
+
+char *vm_alloc(bytes)
+ unsigned int bytes;
+{
+ char *answer;
+
+ /* Align returned bytes to 64-bit boundary */
+ bytes = (bytes + 7) & ~7;
+
+
+ /* take space from what is left otherwise allocate another CHUNK */
+ if (bytes > vm_free){
+ if (!vm_init()) return NULL;
+ }
+ else{
+ answer = vm_next;
+ vm_free -= bytes;
+ vm_next += bytes;
+ return answer;
+ }
+
+ /* Never reached, but compiler is happy: */
+ return NULL;
+
+}
+
+/*
+ * Format an Integer object
+ */
+void objFormatInteger( psobj *objP, int value)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_INTEGER;
+ objP->len = 0;
+ objP->data.integer = value;
+ }
+}
+
+/*
+ * Format a Real object
+ */
+void objFormatReal(psobj *objP, float value)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_REAL;
+ objP->len = 0;
+ objP->data.real = value;
+ }
+}
+
+/*
+ * Format a Boolean object
+ */
+void objFormatBoolean(psobj *objP, boolean value)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_BOOLEAN;
+ objP->len = 0;
+ objP->data.boolean = value;
+ }
+}
+
+/*
+ * Format an Encoding object
+ */
+void objFormatEncoding(psobj *objP, int length, psobj *valueP)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_ENCODING;
+ objP->len = length;
+ objP->data.arrayP = valueP;
+ }
+}
+
+/*
+ * Format an Array object
+ */
+void objFormatArray(psobj *objP, int length, psobj *valueP)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_ARRAY;
+ objP->len = length;
+ objP->data.arrayP = valueP;
+ }
+}
+
+
+/*
+ * Format a String object
+ */
+void objFormatString(psobj *objP, int length, char *valueP)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_STRING;
+ objP->len = length;
+ objP->data.valueP = valueP;
+ }
+}
+
+/*
+ * Format a Name object
+ */
+void objFormatName( psobj *objP, int length, char *valueP)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_NAME;
+ objP->len = length;
+ objP->data.nameP = valueP;
+ }
+}
+
+/*
+ * Format a File object
+ */
+void objFormatFile(psobj *objP, FILE *valueP)
+{
+ if (objP != NULL) {
+ objP->type = OBJ_FILE;
+ objP->len = 0;
+ objP->data.fileP = valueP;
+ }
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.h b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.h
new file mode 100644
index 00000000000..76a8affc03a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/lib/type1/util.h
@@ -0,0 +1,182 @@
+/* $XConsortium: util.h,v 1.3 92/03/26 16:42:29 eswu Exp $ */
+/* Copyright International Business Machines,Corp. 1991
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software
+ * and its documentation for any purpose and without fee is
+ * hereby granted, provided that the above copyright notice
+ * appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation,
+ * and that the name of IBM not be used in advertising or
+ * publicity pertaining to distribution of the software without
+ * specific, written prior permission.
+ *
+ * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
+ * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
+ * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
+ * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
+ * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
+ * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
+ * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+#ifndef UTIL_H
+#define UTIL_H
+#include "types.h"
+
+#ifndef boolean
+typedef int boolean;
+#endif
+
+#ifndef TRUE
+#define TRUE (1)
+#endif
+
+#ifndef FALSE
+#define FALSE (0)
+#endif
+
+/***================================================================***/
+/* Portable definitions for 2's complement machines.
+ * NOTE: These really should be based on PostScript types,
+ * for example, sizeof(ps_integer), or sizeof(ps_unsigned)
+ */
+#define MAX_ULONG (~(ULONG)(0))
+/* This code is portable, assuming K&R C and 2's complement arithmetic */
+#define MAX_INTEGER \
+ ((LONG)((((ULONG) 1)<<(sizeof(ULONG)*8-1))-1))
+#define MIN_INTEGER ((-MAX_INTEGER)-1)
+
+#define MAX_ARRAY_CNT (65535)
+#define MAX_DICT_CNT (65535)
+#define MAX_STRING_LEN (65535)
+#define MAX_NAME_LEN (128)
+
+/* this is the size of memory allocated for reading fonts */
+
+#define VM_SIZE (50*1024)
+/***================================================================***/
+
+#ifndef TYPE1_MIN
+#define TYPE1_MIN(a,b) (((a)<(b)) ? a : b )
+#endif
+
+/***================================================================***/
+/* Routines for managing virtual memory */
+/***================================================================***/
+extern boolean vm_init();
+extern LONG vm_free;
+extern LONG vm_size;
+extern char *vm_next;
+extern char *vm_alloc();
+/***================================================================***/
+/* Macros for managing virtual memory */
+/***================================================================***/
+#define vm_next_byte() (vm_next)
+#define vm_free_bytes() (vm_free)
+#define vm_avail(B) (B <= vm_free)
+
+
+
+/***================================================================***/
+/* Types of PostScript objects */
+/***================================================================***/
+#define OBJ_INTEGER (0)
+#define OBJ_REAL (1)
+#define OBJ_BOOLEAN (2)
+#define OBJ_ARRAY (3)
+#define OBJ_STRING (4)
+#define OBJ_NAME (5)
+#define OBJ_FILE (6)
+#define OBJ_ENCODING (7)
+
+/***================================================================***/
+/* Value of PostScript objects */
+/***================================================================***/
+typedef union ps_value {
+ char *valueP; /* value pointer for unspecified type */
+ int value; /* value for unspecified type */
+ int integer; /* when type is OBJ_INTEGER */
+ float real; /* when type is OBJ_REAL */
+ int boolean; /* when type is OBJ_BOOLEAN */
+ struct ps_obj *arrayP; /* when type is OBJ_ARRAY */
+ unsigned char *stringP; /* when type is OBJ_STRING */
+ char *nameP; /* when type is OBJ_NAME */
+ FILE *fileP; /* when type is OBJ_FILE */
+} psvalue;
+
+/***================================================================***/
+/* Definition of a PostScript object */
+/***================================================================***/
+typedef struct ps_obj {
+ char type;
+ char unused;
+ unsigned short len;
+ union ps_value data;
+} psobj;
+
+/***================================================================***/
+/* Definition of a PostScript Dictionary Entry */
+/***================================================================***/
+typedef struct ps_dict {
+ psobj key;
+ psobj value;
+} psdict;
+
+/***================================================================***/
+/* Macros for testing type of PostScript objects */
+/***================================================================***/
+#define objIsInteger(o) ((o).type == OBJ_INTEGER)
+#define objIsReal(o) ((o).type == OBJ_REAL)
+#define objIsBoolean(o) ((o).type == OBJ_BOOLEAN)
+#define objIsArray(o) ((o).type == OBJ_ARRAY)
+#define objIsString(o) ((o).type == OBJ_STRING)
+#define objIsName(o) ((o).type == OBJ_NAME)
+#define objIsFile(o) ((o).type == OBJ_FILE)
+
+/***================================================================***/
+/* Macros for setting type of PostScript objects */
+/***================================================================***/
+#define objSetInteger(o) ((o).type = OBJ_INTEGER)
+#define objSetReal(o) ((o).type = OBJ_REAL)
+#define objSetBoolean(o) ((o).type = OBJ_BOOLEAN)
+#define objSetArray(o) ((o).type = OBJ_ARRAY)
+#define objSetString(o) ((o).type = OBJ_STRING)
+#define objSetName(o) ((o).type = OBJ_NAME)
+#define objSetFile(o) ((o).type = OBJ_FILE)
+
+/***================================================================***/
+/* Macros for testing type of PostScript objects (pointer access) */
+/***================================================================***/
+#define objPIsInteger(o) ((o)->type == OBJ_INTEGER)
+#define objPIsReal(o) ((o)->type == OBJ_REAL)
+#define objPIsBoolean(o) ((o)->type == OBJ_BOOLEAN)
+#define objPIsArray(o) ((o)->type == OBJ_ARRAY)
+#define objPIsString(o) ((o)->type == OBJ_STRING)
+#define objPIsName(o) ((o)->type == OBJ_NAME)
+#define objPIsFile(o) ((o)->type == OBJ_FILE)
+
+/***================================================================***/
+/* Macros for setting type of PostScript objects (pointer access) */
+/***================================================================***/
+#define objPSetInteger(o) ((o)->type = OBJ_INTEGER)
+#define objPSetReal(o) ((o)->type = OBJ_REAL)
+#define objPSetBoolean(o) ((o)->type = OBJ_BOOLEAN)
+#define objPSetArray(o) ((o)->type = OBJ_ARRAY)
+#define objPSetString(o) ((o)->type = OBJ_STRING)
+#define objPSetName(o) ((o)->type = OBJ_NAME)
+#define objPSetFile(o) ((o)->type = OBJ_FILE)
+
+/***================================================================***/
+/* Entry point for Type1Char to get entry from CharStrings */
+/***================================================================***/
+extern psobj *GetType1CharString();
+
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/README.RMz b/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/README.RMz
new file mode 100644
index 00000000000..ae7ece16740
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/README.RMz
@@ -0,0 +1,9 @@
+Dear Folks,
+
+this directory contains the shell-archive with the parseAFM-package by
+Adobe Systems Inc. The shell archive is only located here for
+completeness. The files used by the t1-library (parseAFM.c,
+parseAFM.h) have been extracted and copied to the t1lib-subdirectory.
+Thus, no make is done in this directory.
+
+ (08/11/1996, RMz)
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/parseAFM.shar b/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/parseAFM.shar
new file mode 100644
index 00000000000..6eb3f7155a8
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/parse_afm/parseAFM.shar
@@ -0,0 +1,2059 @@
+#!/bin/sh
+# This is a shell archive (produced by GNU sharutils 4.1.6).
+# To extract the files from this archive, save it to some FILE, remove
+# everything before the `!/bin/sh' line above, then type `sh FILE'.
+#
+# Made on 1996-10-25 16:19 EDT by <rainer@mman>.
+# Source directory was `/usr/home/rainer/src/T1/parse_afm'.
+#
+# Existing files will *not* be overwritten unless `-c' is specified.
+#
+# This shar contains:
+# length mode name
+# ------ ---------- ------------------------------------------
+# 280 -rw-r--r-- makefile
+# 43280 -rw-r--r-- parseAFM.c
+# 11502 -rw-r--r-- parseAFM.h
+# 12210 -rw-r--r-- parseAFMclient.c
+#
+save_IFS=${IFS}
+IFS="${IFS}:"
+gettext_dir=FAILED
+locale_dir=FAILED
+for dir in $PATH
+do
+ if test "$gettext_dir" = "FAILED" && test -f $dir/gettext \
+ && ($dir/gettext --version >/dev/null 2>&1)
+ then
+ set `$dir/gettext --version 2>&1`
+ if test "$3" = "GNU"
+ then
+ gettext_dir=$dir
+ fi
+ fi
+ if test "$locale_dir" = "FAILED" && test -f $dir/shar \
+ && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
+ then
+ locale_dir=`$dir/shar --print-text-domain-dir`
+ fi
+done
+IFS=$save_IFS
+if test "$locale_dir" = "FAILED" || test "$gettext_dir" = "FAILED"
+then
+ echo=echo
+else
+ TEXTDOMAINDIR=$locale_dir
+ export TEXTDOMAINDIR
+ TEXTDOMAIN=sharutils
+ export TEXTDOMAIN
+ echo="$gettext_dir/gettext --shell-script"
+fi
+touch -am 1231235999 $$.touch >/dev/null 2>&1
+if test ! -f 1231235999 && test -f $$.touch; then
+ shar_touch=touch
+else
+ shar_touch=:
+ echo
+ $echo 'WARNING: not restoring timestamps. Consider getting and'
+ $echo "installing GNU \`touch', distributed in GNU File Utilities..."
+ echo
+fi
+rm -f 1231235999 $$.touch
+#
+if mkdir _sh00599; then
+ $echo 'x -' 'creating lock directory'
+else
+ $echo 'failed to create lock directory'
+ exit 1
+fi
+# ============= makefile ==============
+if test -f 'makefile' && test X"$1" != X"-c"; then
+ $echo 'x -' SKIPPING 'makefile' '(file already exists)'
+else
+ $echo 'x -' extracting 'makefile' '(text)'
+ sed 's/^X//' << 'SHAR_EOF' > 'makefile' &&
+X
+parseAFM: parseAFM.o parseAFMclient.o makefile
+X cc -g -o parseAFM parseAFM.o parseAFMclient.o -lm;\
+X shar makefile parseAFM.c parseAFM.h parseAFMclient.c > parseAFM.shar
+X
+parseAFMclient.o: parseAFMclient.c
+X cc -g -c parseAFMclient.c
+X
+parseAFM.o: parseAFM.c
+X cc -g -c parseAFM.c
+X
+SHAR_EOF
+ $shar_touch -am 1018085596 'makefile' &&
+ chmod 0644 'makefile' ||
+ $echo 'restore of' 'makefile' 'failed'
+ shar_count="`wc -c < 'makefile'`"
+ test 280 -eq "$shar_count" ||
+ $echo 'makefile:' 'original size' '280,' 'current size' "$shar_count"
+fi
+# ============= parseAFM.c ==============
+if test -f 'parseAFM.c' && test X"$1" != X"-c"; then
+ $echo 'x -' SKIPPING 'parseAFM.c' '(file already exists)'
+else
+ $echo 'x -' extracting 'parseAFM.c' '(text)'
+ sed 's/^X//' << 'SHAR_EOF' > 'parseAFM.c' &&
+/*
+X * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved.
+X *
+X * This file may be freely copied and redistributed as long as:
+X * 1) This entire notice continues to be included in the file,
+X * 2) If the file has been modified in any way, a notice of such
+X * modification is conspicuously indicated.
+X *
+X * PostScript, Display PostScript, and Adobe are registered trademarks of
+X * Adobe Systems Incorporated.
+X *
+X * ************************************************************************
+X * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+X * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+X * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
+X * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
+X * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
+X * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
+X * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+X * ************************************************************************
+X */
+X
+/* parseAFM.c
+X *
+X * This file is used in conjuction with the parseAFM.h header file.
+X * This file contains several procedures that are used to parse AFM
+X * files. It is intended to work with an application program that needs
+X * font metric information. The program can be used as is by making a
+X * procedure call to "parseFile" (passing in the expected parameters)
+X * and having it fill in a data structure with the data from the
+X * AFM file, or an application developer may wish to customize this
+X * code.
+X *
+X * There is also a file, parseAFMclient.c, that is a sample application
+X * showing how to call the "parseFile" procedure and how to use the data
+X * after "parseFile" has returned.
+X *
+X * Please read the comments in parseAFM.h and parseAFMclient.c.
+X *
+X * History:
+X * original: DSM Thu Oct 20 17:39:59 PDT 1988
+X * modified: DSM Mon Jul 3 14:17:50 PDT 1989
+X * - added 'storageProblem' return code
+X * - fixed bug of not allocating extra byte for string duplication
+X * - fixed typos
+X * modified: DSM Tue Apr 3 11:18:34 PDT 1990
+X * - added free(ident) at end of parseFile routine
+X * modified: DSM Tue Jun 19 10:16:29 PDT 1990
+X * - changed (width == 250) to (width = 250) in initializeArray
+X */
+X
+#include <stdio.h>
+#include <errno.h>
+#include <sys/file.h>
+#include <math.h>
+#include "parseAFM.h"
+X
+#define lineterm EOL /* line terminating character */
+#define normalEOF 1 /* return code from parsing routines used only */
+X /* in this module */
+#define Space "space" /* used in string comparison to look for the width */
+X /* of the space character to init the widths array */
+#define False "false" /* used in string comparison to check the value of */
+X /* boolean keys (e.g. IsFixedPitch) */
+X
+#define MATCH(A,B) (strncmp((A),(B), MAX_NAME) == 0)
+X
+X
+X
+/*************************** GLOBALS ***********************/
+X
+static char *ident = NULL; /* storage buffer for keywords */
+X
+X
+/* "shorts" for fast case statement
+X * The values of each of these enumerated items correspond to an entry in the
+X * table of strings defined below. Therefore, if you add a new string as
+X * new keyword into the keyStrings table, you must also add a corresponding
+X * parseKey AND it MUST be in the same position!
+X *
+X * IMPORTANT: since the sorting algorithm is a binary search, the strings of
+X * keywords must be placed in lexicographical order, below. [Therefore, the
+X * enumerated items are not necessarily in lexicographical order, depending
+X * on the name chosen. BUT, they must be placed in the same position as the
+X * corresponding key string.] The NOPE shall remain in the last position,
+X * since it does not correspond to any key string, and it is used in the
+X * "recognize" procedure to calculate how many possible keys there are.
+X */
+X
+static enum parseKey {
+X ASCENDER, CHARBBOX, CODE, COMPCHAR, CAPHEIGHT, COMMENT,
+X DESCENDER, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES,
+X ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN,
+X FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISFIXEDPITCH,
+X ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, CHARNAME,
+X NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES,
+X STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS,
+X STARTTRACKKERN, TRACKKERN, UNDERLINEPOSITION,
+X UNDERLINETHICKNESS, VERSION, XYWIDTH, XWIDTH, WEIGHT, XHEIGHT,
+X NOPE };
+X
+/* keywords for the system:
+X * This a table of all of the current strings that are vaild AFM keys.
+X * Each entry can be referenced by the appropriate parseKey value (an
+X * enumerated data type defined above). If you add a new keyword here,
+X * a corresponding parseKey MUST be added to the enumerated data type
+X * defined above, AND it MUST be added in the same position as the
+X * string is in this table.
+X *
+X * IMPORTANT: since the sorting algorithm is a binary search, the keywords
+X * must be placed in lexicographical order. And, NULL should remain at the
+X * end.
+X */
+X
+static char *keyStrings[] = {
+X "Ascender", "B", "C", "CC", "CapHeight", "Comment",
+X "Descender", "EncodingScheme", "EndCharMetrics", "EndComposites",
+X "EndFontMetrics", "EndKernData", "EndKernPairs", "EndTrackKern",
+X "FamilyName", "FontBBox", "FontName", "FullName", "IsFixedPitch",
+X "ItalicAngle", "KP", "KPX", "L", "N",
+X "Notice", "PCC", "StartCharMetrics", "StartComposites",
+X "StartFontMetrics", "StartKernData", "StartKernPairs",
+X "StartTrackKern", "TrackKern", "UnderlinePosition",
+X "UnderlineThickness", "Version", "W", "WX", "Weight", "XHeight",
+X NULL };
+X
+/*************************** PARSING ROUTINES **************/
+X
+/*************************** token *************************/
+X
+/* A "AFM File Conventions" tokenizer. That means that it will
+X * return the next token delimited by white space. See also
+X * the `linetoken' routine, which does a similar thing but
+X * reads all tokens until the next end-of-line.
+X */
+X
+static char *token(stream)
+X FILE *stream;
+{
+X int ch, idx;
+X
+X /* skip over white space */
+X while ((ch = fgetc(stream)) == ' ' || ch == lineterm ||
+X ch == ',' || ch == '\t' || ch == ';');
+X
+X idx = 0;
+X while (ch != EOF && ch != ' ' && ch != lineterm
+X && ch != '\t' && ch != ':' && ch != ';')
+X {
+X ident[idx++] = ch;
+X ch = fgetc(stream);
+X } /* while */
+X
+X if (ch == EOF && idx < 1) return ((char *)NULL);
+X if (idx >= 1 && ch != ':' ) ungetc(ch, stream);
+X if (idx < 1 ) ident[idx++] = ch; /* single-character token */
+X ident[idx] = 0;
+X
+X return(ident); /* returns pointer to the token */
+X
+} /* token */
+X
+X
+/*************************** linetoken *************************/
+X
+/* "linetoken" will get read all tokens until the EOL character from
+X * the given stream. This is used to get any arguments that can be
+X * more than one word (like Comment lines and FullName).
+X */
+X
+static char *linetoken(stream)
+X FILE *stream;
+{
+X int ch, idx;
+X
+X while ((ch = fgetc(stream)) == ' ' || ch == '\t' );
+X
+X idx = 0;
+X while (ch != EOF && ch != lineterm)
+X {
+X ident[idx++] = ch;
+X ch = fgetc(stream);
+X } /* while */
+X
+X ungetc(ch, stream);
+X ident[idx] = 0;
+X
+X return(ident); /* returns pointer to the token */
+X
+} /* linetoken */
+X
+X
+/*************************** recognize *************************/
+X
+/* This function tries to match a string to a known list of
+X * valid AFM entries (check the keyStrings array above).
+X * "ident" contains everything from white space through the
+X * next space, tab, or ":" character.
+X *
+X * The algorithm is a standard Knuth binary search.
+X */
+X
+static enum parseKey recognize(ident)
+X register char *ident;
+{
+X int lower = 0, upper = (int) NOPE, midpoint, cmpvalue;
+X BOOL found = FALSE;
+X
+X while ((upper >= lower) && !found)
+X {
+X midpoint = (lower + upper)/2;
+X if (keyStrings[midpoint] == NULL) break;
+X cmpvalue = strncmp(ident, keyStrings[midpoint], MAX_NAME);
+X if (cmpvalue == 0) found = TRUE;
+X else if (cmpvalue < 0) upper = midpoint - 1;
+X else lower = midpoint + 1;
+X } /* while */
+X
+X if (found) return (enum parseKey) midpoint;
+X else return NOPE;
+X
+} /* recognize */
+X
+X
+/************************* parseGlobals *****************************/
+X
+/* This function is called by "parseFile". It will parse the AFM File
+X * up to the "StartCharMetrics" keyword, which essentially marks the
+X * end of the Global Font Information and the beginning of the character
+X * metrics information.
+X *
+X * If the caller of "parseFile" specified that it wanted the Global
+X * Font Information (as defined by the "AFM File Specification"
+X * document), then that information will be stored in the returned
+X * data structure.
+X *
+X * Any Global Font Information entries that are not found in a
+X * given file, will have the usual default initialization value
+X * for its type (i.e. entries of type int will be 0, etc).
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static BOOL parseGlobals(fp, gfi)
+X FILE *fp;
+X register GlobalFontInfo *gfi;
+{
+X BOOL cont = TRUE, save = (gfi != NULL);
+X int error = ok;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X
+X if (keyword == NULL)
+X /* Have reached an early and unexpected EOF. */
+X /* Set flag and stop parsing */
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X if (!save)
+X /* get tokens until the end of the Global Font info section */
+X /* without saving any of the data */
+X switch (recognize(keyword))
+X {
+X case STARTCHARMETRICS:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X default:
+X break;
+X } /* switch */
+X else
+X /* otherwise parse entire global font info section, */
+X /* saving the data */
+X switch(recognize(keyword))
+X {
+X case STARTFONTMETRICS:
+X keyword = token(fp);
+X gfi->afmVersion = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->afmVersion, keyword);
+X break;
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case FONTNAME:
+X keyword = token(fp);
+X gfi->fontName = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->fontName, keyword);
+X break;
+X case ENCODINGSCHEME:
+X keyword = token(fp);
+X gfi->encodingScheme = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(gfi->encodingScheme, keyword);
+X break;
+X case FULLNAME:
+X keyword = linetoken(fp);
+X gfi->fullName = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->fullName, keyword);
+X break;
+X case FAMILYNAME:
+X keyword = linetoken(fp);
+X gfi->familyName = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->familyName, keyword);
+X break;
+X case WEIGHT:
+X keyword = token(fp);
+X gfi->weight = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->weight, keyword);
+X break;
+X case ITALICANGLE:
+X keyword = token(fp);
+X gfi->italicAngle = atof(keyword);
+X if (errno == ERANGE) error = parseError;
+X break;
+X case ISFIXEDPITCH:
+X keyword = token(fp);
+X if (MATCH(keyword, False))
+X gfi->isFixedPitch = 0;
+X else
+X gfi->isFixedPitch = 1;
+X break;
+X case UNDERLINEPOSITION:
+X keyword = token(fp);
+X gfi->underlinePosition = atoi(keyword);
+X break;
+X case UNDERLINETHICKNESS:
+X keyword = token(fp);
+X gfi->underlineThickness = atoi(keyword);
+X break;
+X case VERSION:
+X keyword = token(fp);
+X gfi->version = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->version, keyword);
+X break;
+X case NOTICE:
+X keyword = linetoken(fp);
+X gfi->notice = (char *) malloc(strlen(keyword) + 1);
+X strcpy(gfi->notice, keyword);
+X break;
+X case FONTBBOX:
+X keyword = token(fp);
+X gfi->fontBBox.llx = atoi(keyword);
+X keyword = token(fp);
+X gfi->fontBBox.lly = atoi(keyword);
+X keyword = token(fp);
+X gfi->fontBBox.urx = atoi(keyword);
+X keyword = token(fp);
+X gfi->fontBBox.ury = atoi(keyword);
+X break;
+X case CAPHEIGHT:
+X keyword = token(fp);
+X gfi->capHeight = atoi(keyword);
+X break;
+X case XHEIGHT:
+X keyword = token(fp);
+X gfi->xHeight = atoi(keyword);
+X break;
+X case DESCENDER:
+X keyword = token(fp);
+X gfi->descender = atoi(keyword);
+X break;
+X case ASCENDER:
+X keyword = token(fp);
+X gfi->ascender = atoi(keyword);
+X break;
+X case STARTCHARMETRICS:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X return(error);
+X
+} /* parseGlobals */
+X
+X
+X
+/************************* initializeArray ************************/
+X
+/* Unmapped character codes are (at Adobe Systems) assigned the
+X * width of the space character (if one exists) else they get the
+X * value of 250 ems. This function initializes all entries in the
+X * char widths array to have this value. Then any mapped character
+X * codes will be replaced with the width of the appropriate character
+X * when parsing the character metric section.
+X
+X * This function parses the Character Metrics Section looking
+X * for a space character (by comparing character names). If found,
+X * the width of the space character will be used to initialize the
+X * values in the array of character widths.
+X *
+X * Before returning, the position of the read/write pointer of the
+X * file is reset to be where it was upon entering this function.
+X */
+X
+static int initializeArray(fp, cwi)
+X FILE *fp;
+X register int *cwi;
+{
+X BOOL cont = TRUE, found = FALSE;
+X long opos = ftell(fp);
+X int code = 0, width = 0, i = 0, error = 0;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X if (keyword == NULL)
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case CODE:
+X code = atoi(token(fp));
+X break;
+X case XWIDTH:
+X width = atoi(token(fp));
+X break;
+X case CHARNAME:
+X keyword = token(fp);
+X if (MATCH(keyword, Space))
+X {
+X cont = FALSE;
+X found = TRUE;
+X }
+X break;
+X case ENDCHARMETRICS:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X if (!found)
+X width = 250;
+X
+X for (i = 0; i < 256; ++i)
+X cwi[i] = width;
+X
+X fseek(fp, opos, 0);
+X
+X return(error);
+X
+} /* initializeArray */
+X
+X
+/************************* parseCharWidths **************************/
+X
+/* This function is called by "parseFile". It will parse the AFM File
+X * up to the "EndCharMetrics" keyword. It will save the character
+X * width info (as opposed to all of the character metric information)
+X * if requested by the caller of parseFile. Otherwise, it will just
+X * parse through the section without saving any information.
+X *
+X * If data is to be saved, parseCharWidths is passed in a pointer
+X * to an array of widths that has already been initialized by the
+X * standard value for unmapped character codes. This function parses
+X * the Character Metrics section only storing the width information
+X * for the encoded characters into the array using the character code
+X * as the index into that array.
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static parseCharWidths(fp, cwi)
+X FILE *fp;
+X register int *cwi;
+{
+X BOOL cont = TRUE, save = (cwi != NULL);
+X int pos = 0, error = ok;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X /* Have reached an early and unexpected EOF. */
+X /* Set flag and stop parsing */
+X if (keyword == NULL)
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X if (!save)
+X /* get tokens until the end of the Char Metrics section without */
+X /* saving any of the data*/
+X switch (recognize(keyword))
+X {
+X case ENDCHARMETRICS:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X default:
+X break;
+X } /* switch */
+X else
+X /* otherwise parse entire char metrics section, saving */
+X /* only the char x-width info */
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case CODE:
+X keyword = token(fp);
+X pos = atoi(keyword);
+X break;
+X case XYWIDTH:
+X /* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */
+X keyword = token(fp); keyword = token(fp); /* eat values */
+X error = parseError;
+X break;
+X case XWIDTH:
+X keyword = token(fp);
+X if (pos >= 0) /* ignore unmapped chars */
+X cwi[pos] = atoi(keyword);
+X break;
+X case ENDCHARMETRICS:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case CHARNAME: /* eat values (so doesn't cause parseError) */
+X keyword = token(fp);
+X break;
+X case CHARBBOX:
+X keyword = token(fp); keyword = token(fp);
+X keyword = token(fp); keyword = token(fp);
+X break;
+X case LIGATURE:
+X keyword = token(fp); keyword = token(fp);
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X return(error);
+X
+} /* parseCharWidths */
+X
+X
+/************************* parseCharMetrics ************************/
+X
+/* This function is called by parseFile if the caller of parseFile
+X * requested that all character metric information be saved
+X * (as opposed to only the character width information).
+X *
+X * parseCharMetrics is passed in a pointer to an array of records
+X * to hold information on a per character basis. This function
+X * parses the Character Metrics section storing all character
+X * metric information for the ALL characters (mapped and unmapped)
+X * into the array.
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static parseCharMetrics(fp, fi)
+X FILE *fp;
+X register FontInfo *fi;
+{
+X BOOL cont = TRUE, firstTime = TRUE;
+X int error = ok, count = 0;
+X register CharMetricInfo *temp = fi->cmi;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X if (keyword == NULL)
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case CODE:
+X if (count < fi->numOfChars)
+X {
+X if (firstTime) firstTime = FALSE;
+X else temp++;
+X temp->code = atoi(token(fp));
+X count++;
+X }
+X else
+X {
+X error = parseError;
+X cont = FALSE;
+X }
+X break;
+X case XYWIDTH:
+X temp->wx = atoi(token(fp));
+X temp->wy = atoi(token(fp));
+X break;
+X case XWIDTH:
+X temp->wx = atoi(token(fp));
+X break;
+X case CHARNAME:
+X keyword = token(fp);
+X temp->name = (char *) malloc(strlen(keyword) + 1);
+X strcpy(temp->name, keyword);
+X break;
+X case CHARBBOX:
+X temp->charBBox.llx = atoi(token(fp));
+X temp->charBBox.lly = atoi(token(fp));
+X temp->charBBox.urx = atoi(token(fp));
+X temp->charBBox.ury = atoi(token(fp));
+X break;
+X case LIGATURE: {
+X Ligature **tail = &(temp->ligs);
+X Ligature *node = *tail;
+X
+X if (*tail != NULL)
+X {
+X while (node->next != NULL)
+X node = node->next;
+X tail = &(node->next);
+X }
+X
+X *tail = (Ligature *) calloc(1, sizeof(Ligature));
+X keyword = token(fp);
+X (*tail)->succ = (char *) malloc(strlen(keyword) + 1);
+X strcpy((*tail)->succ, keyword);
+X keyword = token(fp);
+X (*tail)->lig = (char *) malloc(strlen(keyword) + 1);
+X strcpy((*tail)->lig, keyword);
+X break; }
+X case ENDCHARMETRICS:
+X cont = FALSE;;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X if ((error == ok) && (count != fi->numOfChars))
+X error = parseError;
+X
+X return(error);
+X
+} /* parseCharMetrics */
+X
+X
+X
+/************************* parseTrackKernData ***********************/
+X
+/* This function is called by "parseFile". It will parse the AFM File
+X * up to the "EndTrackKern" or "EndKernData" keywords. It will save the
+X * track kerning data if requested by the caller of parseFile.
+X *
+X * parseTrackKernData is passed in a pointer to the FontInfo record.
+X * If data is to be saved, the FontInfo record will already contain
+X * a valid pointer to storage for the track kerning data.
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static parseTrackKernData(fp, fi)
+X FILE *fp;
+X register FontInfo *fi;
+{
+X BOOL cont = TRUE, save = (fi->tkd != NULL);
+X int pos = 0, error = ok, tcount = 0;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X
+X if (keyword == NULL)
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X if (!save)
+X /* get tokens until the end of the Track Kerning Data */
+X /* section without saving any of the data */
+X switch(recognize(keyword))
+X {
+X case ENDTRACKKERN:
+X case ENDKERNDATA:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X default:
+X break;
+X } /* switch */
+X else
+X /* otherwise parse entire Track Kerning Data section, */
+X /* saving the data */
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case TRACKKERN:
+X if (tcount < fi->numOfTracks)
+X {
+X keyword = token(fp);
+X fi->tkd[pos].degree = atoi(keyword);
+X keyword = token(fp);
+X fi->tkd[pos].minPtSize = atof(keyword);
+X if (errno == ERANGE) error = parseError;
+X keyword = token(fp);
+X fi->tkd[pos].minKernAmt = atof(keyword);
+X if (errno == ERANGE) error = parseError;
+X keyword = token(fp);
+X fi->tkd[pos].maxPtSize = atof(keyword);
+X if (errno == ERANGE) error = parseError;
+X keyword = token(fp);
+X fi->tkd[pos++].maxKernAmt = atof(keyword);
+X if (errno == ERANGE) error = parseError;
+X tcount++;
+X }
+X else
+X {
+X error = parseError;
+X cont = FALSE;
+X }
+X break;
+X case ENDTRACKKERN:
+X case ENDKERNDATA:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X if (error == ok && tcount != fi->numOfTracks)
+X error = parseError;
+X
+X return(error);
+X
+} /* parseTrackKernData */
+X
+X
+/************************* parsePairKernData ************************/
+X
+/* This function is called by "parseFile". It will parse the AFM File
+X * up to the "EndKernPairs" or "EndKernData" keywords. It will save
+X * the pair kerning data if requested by the caller of parseFile.
+X *
+X * parsePairKernData is passed in a pointer to the FontInfo record.
+X * If data is to be saved, the FontInfo record will already contain
+X * a valid pointer to storage for the pair kerning data.
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static parsePairKernData(fp, fi)
+X FILE *fp;
+X register FontInfo *fi;
+{
+X BOOL cont = TRUE, save = (fi->pkd != NULL);
+X int pos = 0, error = ok, pcount = 0;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X
+X if (keyword == NULL)
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X if (!save)
+X /* get tokens until the end of the Pair Kerning Data */
+X /* section without saving any of the data */
+X switch(recognize(keyword))
+X {
+X case ENDKERNPAIRS:
+X case ENDKERNDATA:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X default:
+X break;
+X } /* switch */
+X else
+X /* otherwise parse entire Pair Kerning Data section, */
+X /* saving the data */
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case KERNPAIR:
+X if (pcount < fi->numOfPairs)
+X {
+X keyword = token(fp);
+X fi->pkd[pos].name1 = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->pkd[pos].name1, keyword);
+X keyword = token(fp);
+X fi->pkd[pos].name2 = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->pkd[pos].name2, keyword);
+X keyword = token(fp);
+X fi->pkd[pos].xamt = atoi(keyword);
+X keyword = token(fp);
+X fi->pkd[pos++].yamt = atoi(keyword);
+X pcount++;
+X }
+X else
+X {
+X error = parseError;
+X cont = FALSE;
+X }
+X break;
+X case KERNPAIRXAMT:
+X if (pcount < fi->numOfPairs)
+X {
+X keyword = token(fp);
+X fi->pkd[pos].name1 = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->pkd[pos].name1, keyword);
+X keyword = token(fp);
+X fi->pkd[pos].name2 = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->pkd[pos].name2, keyword);
+X keyword = token(fp);
+X fi->pkd[pos++].xamt = atoi(keyword);
+X pcount++;
+X }
+X else
+X {
+X error = parseError;
+X cont = FALSE;
+X }
+X break;
+X case ENDKERNPAIRS:
+X case ENDKERNDATA:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X if (error == ok && pcount != fi->numOfPairs)
+X error = parseError;
+X
+X return(error);
+X
+} /* parsePairKernData */
+X
+X
+/************************* parseCompCharData **************************/
+X
+/* This function is called by "parseFile". It will parse the AFM File
+X * up to the "EndComposites" keyword. It will save the composite
+X * character data if requested by the caller of parseFile.
+X *
+X * parseCompCharData is passed in a pointer to the FontInfo record, and
+X * a boolean representing if the data should be saved.
+X *
+X * This function will create the appropriate amount of storage for
+X * the composite character data and store a pointer to the storage
+X * in the FontInfo record.
+X *
+X * This function returns an error code specifying whether there was
+X * a premature EOF or a parsing error. This return value is used by
+X * parseFile to determine if there is more file to parse.
+X */
+X
+static parseCompCharData(fp, fi)
+X FILE *fp;
+X register FontInfo *fi;
+{
+X BOOL cont = TRUE, firstTime = TRUE, save = (fi->ccd != NULL);
+X int pos = 0, j = 0, error = ok, ccount = 0, pcount = 0;
+X register char *keyword;
+X
+X while (cont)
+X {
+X keyword = token(fp);
+X if (keyword == NULL)
+X /* Have reached an early and unexpected EOF. */
+X /* Set flag and stop parsing */
+X {
+X error = earlyEOF;
+X break; /* get out of loop */
+X }
+X if (ccount > fi->numOfComps)
+X {
+X error = parseError;
+X break; /* get out of loop */
+X }
+X if (!save)
+X /* get tokens until the end of the Composite Character info */
+X /* section without saving any of the data */
+X switch(recognize(keyword))
+X {
+X case ENDCOMPOSITES:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X default:
+X break;
+X } /* switch */
+X else
+X /* otherwise parse entire Composite Character info section, */
+X /* saving the data */
+X switch(recognize(keyword))
+X {
+X case COMMENT:
+X keyword = linetoken(fp);
+X break;
+X case COMPCHAR:
+X if (ccount < fi->numOfComps)
+X {
+X keyword = token(fp);
+X if (pcount != fi->ccd[pos].numOfPieces)
+X error = parseError;
+X pcount = 0;
+X if (firstTime) firstTime = FALSE;
+X else pos++;
+X fi->ccd[pos].ccName = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->ccd[pos].ccName, keyword);
+X keyword = token(fp);
+X fi->ccd[pos].numOfPieces = atoi(keyword);
+X fi->ccd[pos].pieces = (Pcc *)
+X calloc(fi->ccd[pos].numOfPieces, sizeof(Pcc));
+X j = 0;
+X ccount++;
+X }
+X else
+X {
+X error = parseError;
+X cont = FALSE;
+X }
+X break;
+X case COMPCHARPIECE:
+X if (pcount < fi->ccd[pos].numOfPieces)
+X {
+X keyword = token(fp);
+X fi->ccd[pos].pieces[j].pccName = (char *)
+X malloc(strlen(keyword) + 1);
+X strcpy(fi->ccd[pos].pieces[j].pccName, keyword);
+X keyword = token(fp);
+X fi->ccd[pos].pieces[j].deltax = atoi(keyword);
+X keyword = token(fp);
+X fi->ccd[pos].pieces[j++].deltay = atoi(keyword);
+X pcount++;
+X }
+X else
+X error = parseError;
+X break;
+X case ENDCOMPOSITES:
+X cont = FALSE;
+X break;
+X case ENDFONTMETRICS:
+X cont = FALSE;
+X error = normalEOF;
+X break;
+X case NOPE:
+X default:
+X error = parseError;
+X break;
+X } /* switch */
+X } /* while */
+X
+X if (error == ok && ccount != fi->numOfComps)
+X error = parseError;
+X
+X return(error);
+X
+} /* parseCompCharData */
+X
+X
+X
+X
+/*************************** 'PUBLIC' FUNCTION ********************/
+X
+X
+/*************************** parseFile *****************************/
+X
+/* parseFile is the only 'public' procedure available. It is called
+X * from an application wishing to get information from an AFM file.
+X * The caller of this function is responsible for locating and opening
+X * an AFM file and handling all errors associated with that task.
+X *
+X * parseFile expects 3 parameters: a vaild file pointer, a pointer
+X * to a (FontInfo *) variable (for which storage will be allocated and
+X * the data requested filled in), and a mask specifying which
+X * data from the AFM File should be saved in the FontInfo structure.
+X *
+X * The file will be parsed and the requested data will be stored in
+X * a record of type FontInfo (refer to ParseAFM.h).
+X *
+X * parseFile returns an error code as defined in parseAFM.h.
+X *
+X * The position of the read/write pointer associated with the file
+X * pointer upon return of this function is undefined.
+X */
+X
+extern int parseFile (fp, fi, flags)
+X FILE *fp;
+X FontInfo **fi;
+X FLAGS flags;
+{
+X
+X int code = ok; /* return code from each of the parsing routines */
+X int error = ok; /* used as the return code from this function */
+X
+X register char *keyword; /* used to store a token */
+X
+X
+X /* storage data for the global variable ident */
+X ident = (char *) calloc(MAX_NAME, sizeof(char));
+X if (ident == NULL) {error = storageProblem; return(error);}
+X
+X (*fi) = (FontInfo *) calloc(1, sizeof(FontInfo));
+X if ((*fi) == NULL) {error = storageProblem; return(error);}
+X
+X if (flags & P_G)
+X {
+X (*fi)->gfi = (GlobalFontInfo *) calloc(1, sizeof(GlobalFontInfo));
+X if ((*fi)->gfi == NULL) {error = storageProblem; return(error);}
+X }
+X
+X /* The AFM File begins with Global Font Information. This section */
+X /* will be parsed whether or not information should be saved. */
+X code = parseGlobals(fp, (*fi)->gfi);
+X
+X if (code < 0) error = code;
+X
+X /* The Global Font Information is followed by the Character Metrics */
+X /* section. Which procedure is used to parse this section depends on */
+X /* how much information should be saved. If all of the metrics info */
+X /* is wanted, parseCharMetrics is called. If only the character widths */
+X /* is wanted, parseCharWidths is called. parseCharWidths will also */
+X /* be called in the case that no character data is to be saved, just */
+X /* to parse through the section. */
+X
+X if ((code != normalEOF) && (code != earlyEOF))
+X {
+X (*fi)->numOfChars = atoi(token(fp));
+X if (flags & (P_M ^ P_W))
+X {
+X (*fi)->cmi = (CharMetricInfo *)
+X calloc((*fi)->numOfChars, sizeof(CharMetricInfo));
+X if ((*fi)->cmi == NULL) {error = storageProblem; return(error);}
+X code = parseCharMetrics(fp, *fi);
+X }
+X else
+X {
+X if (flags & P_W)
+X {
+X (*fi)->cwi = (int *) calloc(256, sizeof(int));
+X if ((*fi)->cwi == NULL)
+X {
+X error = storageProblem;
+X return(error);
+X }
+X }
+X /* parse section regardless */
+X code = parseCharWidths(fp, (*fi)->cwi);
+X } /* else */
+X } /* if */
+X
+X if ((error != earlyEOF) && (code < 0)) error = code;
+X
+X /* The remaining sections of the AFM are optional. This code will */
+X /* look at the next keyword in the file to determine what section */
+X /* is next, and then allocate the appropriate amount of storage */
+X /* for the data (if the data is to be saved) and call the */
+X /* appropriate parsing routine to parse the section. */
+X
+X while ((code != normalEOF) && (code != earlyEOF))
+X {
+X keyword = token(fp);
+X if (keyword == NULL)
+X /* Have reached an early and unexpected EOF. */
+X /* Set flag and stop parsing */
+X {
+X code = earlyEOF;
+X break; /* get out of loop */
+X }
+X switch(recognize(keyword))
+X {
+X case STARTKERNDATA:
+X break;
+X case ENDKERNDATA:
+X break;
+X case STARTTRACKKERN:
+X keyword = token(fp);
+X if (flags & P_T)
+X {
+X (*fi)->numOfTracks = atoi(keyword);
+X (*fi)->tkd = (TrackKernData *)
+X calloc((*fi)->numOfTracks, sizeof(TrackKernData));
+X if ((*fi)->tkd == NULL)
+X {
+X error = storageProblem;
+X return(error);
+X }
+X } /* if */
+X code = parseTrackKernData(fp, *fi);
+X break;
+X case STARTKERNPAIRS:
+X keyword = token(fp);
+X if (flags & P_P)
+X {
+X (*fi)->numOfPairs = atoi(keyword);
+X (*fi)->pkd = (PairKernData *)
+X calloc((*fi)->numOfPairs, sizeof(PairKernData));
+X if ((*fi)->pkd == NULL)
+X {
+X error = storageProblem;
+X return(error);
+X }
+X } /* if */
+X code = parsePairKernData(fp, *fi);
+X break;
+X case STARTCOMPOSITES:
+X keyword = token(fp);
+X if (flags & P_C)
+X {
+X (*fi)->numOfComps = atoi(keyword);
+X (*fi)->ccd = (CompCharData *)
+X calloc((*fi)->numOfComps, sizeof(CompCharData));
+X if ((*fi)->ccd == NULL)
+X {
+X error = storageProblem;
+X return(error);
+X }
+X } /* if */
+X code = parseCompCharData(fp, *fi);
+X break;
+X case ENDFONTMETRICS:
+X code = normalEOF;
+X break;
+X case NOPE:
+X default:
+X code = parseError;
+X break;
+X } /* switch */
+X
+X if ((error != earlyEOF) && (code < 0)) error = code;
+X
+X } /* while */
+X
+X if ((error != earlyEOF) && (code < 0)) error = code;
+X
+X if (ident != NULL) { free(ident); ident = NULL; }
+X
+X return(error);
+X
+} /* parseFile */
+SHAR_EOF
+ $shar_touch -am 1018085596 'parseAFM.c' &&
+ chmod 0644 'parseAFM.c' ||
+ $echo 'restore of' 'parseAFM.c' 'failed'
+ shar_count="`wc -c < 'parseAFM.c'`"
+ test 43280 -eq "$shar_count" ||
+ $echo 'parseAFM.c:' 'original size' '43280,' 'current size' "$shar_count"
+fi
+# ============= parseAFM.h ==============
+if test -f 'parseAFM.h' && test X"$1" != X"-c"; then
+ $echo 'x -' SKIPPING 'parseAFM.h' '(file already exists)'
+else
+ $echo 'x -' extracting 'parseAFM.h' '(text)'
+ sed 's/^X//' << 'SHAR_EOF' > 'parseAFM.h' &&
+/*
+X * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
+X *
+X * This file may be freely copied and redistributed as long as:
+X * 1) This entire notice continues to be included in the file,
+X * 2) If the file has been modified in any way, a notice of such
+X * modification is conspicuously indicated.
+X *
+X * PostScript, Display PostScript, and Adobe are registered trademarks of
+X * Adobe Systems Incorporated.
+X *
+X * ************************************************************************
+X * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+X * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+X * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
+X * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
+X * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
+X * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
+X * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+X * ************************************************************************
+X */
+X
+/* ParseAFM.h
+X *
+X * This header file is used in conjuction with the parseAFM.c file.
+X * Together these files provide the functionality to parse Adobe Font
+X * Metrics files and store the information in predefined data structures.
+X * It is intended to work with an application program that needs font metric
+X * information. The program can be used as is by making a procedure call to
+X * parse an AFM file and have the data stored, or an application developer
+X * may wish to customize the code.
+X *
+X * This header file defines the data structures used as well as the key
+X * strings that are currently recognized by this version of the AFM parser.
+X * This program is based on the document "Adobe Font Metrics Files,
+X * Specification Version 2.0".
+X *
+X * AFM files are separated into distinct sections of different data. Because
+X * of this, the parseAFM program can parse a specified file to only save
+X * certain sections of information based on the application's needs. A record
+X * containing the requested information will be returned to the application.
+X *
+X * AFM files are divided into five sections of data:
+X * 1) The Global Font Information
+X * 2) The Character Metrics Information
+X * 3) The Track Kerning Data
+X * 4) The Pair-Wise Kerning Data
+X * 5) The Composite Character Data
+X *
+X * Basically, the application can request any of these sections independent
+X * of what other sections are requested. In addition, in recognizing that
+X * many applications will want ONLY the x-width of characters and not all
+X * of the other character metrics information, there is a way to receive
+X * only the width information so as not to pay the storage cost for the
+X * unwanted data. An application should never request both the
+X * "quick and dirty" char metrics (widths only) and the Character Metrics
+X * Information since the Character Metrics Information will contain all
+X * of the character widths as well.
+X *
+X * There is a procedure in parseAFM.c, called parseFile, that can be
+X * called from any application wishing to get information from the AFM File.
+X * This procedure expects 3 parameters: a vaild file descriptor, a pointer
+X * to a (FontInfo *) variable (for which space will be allocated and then
+X * will be filled in with the data requested), and a mask specifying
+X * which data from the AFM File should be saved in the FontInfo structure.
+X *
+X * The flags that can be used to set the appropriate mask are defined below.
+X * In addition, several commonly used masks have already been defined.
+X *
+X * History:
+X * original: DSM Thu Oct 20 17:39:59 PDT 1988
+X * modified: DSM Mon Jul 3 14:17:50 PDT 1989
+X * - added 'storageProblem' return code
+X * - fixed typos
+X */
+X
+#include <stdio.h>
+X
+X
+X
+/* your basic constants */
+#define TRUE 1
+#define FALSE 0
+#define EOL '\n' /* end-of-line indicator */
+#define MAX_NAME 4096 /* max length for identifiers */
+#define BOOL int
+#define FLAGS int
+X
+X
+X
+/* Flags that can be AND'ed together to specify exactly what
+X * information from the AFM file should be saved.
+X */
+#define P_G 0x01 /* 0000 0001 */ /* Global Font Info */
+#define P_W 0x02 /* 0000 0010 */ /* Character Widths ONLY */
+#define P_M 0x06 /* 0000 0110 */ /* All Char Metric Info */
+#define P_P 0x08 /* 0000 1000 */ /* Pair Kerning Info */
+#define P_T 0x10 /* 0001 0000 */ /* Track Kerning Info */
+#define P_C 0x20 /* 0010 0000 */ /* Composite Char Info */
+X
+X
+/* Commonly used flags
+X */
+#define P_GW (P_G | P_W)
+#define P_GM (P_G | P_M)
+#define P_GMP (P_G | P_M | P_P)
+#define P_GMK (P_G | P_M | P_P | P_T)
+#define P_ALL (P_G | P_M | P_P | P_T | P_C)
+X
+X
+X
+/* Possible return codes from the parseFile procedure.
+X *
+X * ok means there were no problems parsing the file.
+X *
+X * parseError means that there was some kind of parsing error, but the
+X * parser went on. This could include problems like the count for any given
+X * section does not add up to how many entries there actually were, or
+X * there was a key that was not recognized. The return record may contain
+X * vaild data or it may not.
+X *
+X * earlyEOF means that an End of File was encountered before expected. This
+X * may mean that the AFM file had been truncated, or improperly formed.
+X *
+X * storageProblem means that there were problems allocating storage for
+X * the data structures that would have contained the AFM data.
+X */
+#define ok 0
+#define parseError -1
+#define earlyEOF -2
+#define storageProblem -3
+X
+X
+X
+/************************* TYPES *********************************/
+/* Below are all of the data structure definitions. These structures
+X * try to map as closely as possible to grouping and naming of data
+X * in the AFM Files.
+X */
+X
+X
+/* Bounding box definition. Used for the Font BBox as well as the
+X * Character BBox.
+X */
+typedef struct
+{
+X int llx; /* lower left x-position */
+X int lly; /* lower left y-position */
+X int urx; /* upper right x-position */
+X int ury; /* upper right y-position */
+} BBox;
+X
+X
+/* Global Font information.
+X * The key that each field is associated with is in comments. For an
+X * explanation about each key and its value please refer to the AFM
+X * documentation (full title & version given above).
+X */
+typedef struct
+{
+X char *afmVersion; /* key: StartFontMetrics */
+X char *fontName; /* key: FontName */
+X char *fullName; /* key: FullName */
+X char *familyName; /* key: FamilyName */
+X char *weight; /* key: Weight */
+X float italicAngle; /* key: ItalicAngle */
+X BOOL isFixedPitch; /* key: IsFixedPitch */
+X BBox fontBBox; /* key: FontBBox */
+X int underlinePosition; /* key: UnderlinePosition */
+X int underlineThickness; /* key: UnderlineThickness */
+X char *version; /* key: Version */
+X char *notice; /* key: Notice */
+X char *encodingScheme; /* key: EncodingScheme */
+X int capHeight; /* key: CapHeight */
+X int xHeight; /* key: XHeight */
+X int ascender; /* key: Ascender */
+X int descender; /* key: Descender */
+} GlobalFontInfo;
+X
+X
+/* Ligature definition is a linked list since any character can have
+X * any number of ligatures.
+X */
+typedef struct _t_ligature
+{
+X char *succ, *lig;
+X struct _t_ligature *next;
+} Ligature;
+X
+X
+/* Character Metric Information. This structure is used only if ALL
+X * character metric information is requested. If only the character
+X * widths is requested, then only an array of the character x-widths
+X * is returned.
+X *
+X * The key that each field is associated with is in comments. For an
+X * explanation about each key and its value please refer to the
+X * Character Metrics section of the AFM documentation (full title
+X * & version given above).
+X */
+typedef struct
+{
+X int code, /* key: C */
+X wx, /* key: WX */
+X wy; /* together wx and wy are associated with key: W */
+X char *name; /* key: N */
+X BBox charBBox; /* key: B */
+X Ligature *ligs; /* key: L (linked list; not a fixed number of Ls */
+} CharMetricInfo;
+X
+X
+/* Track kerning data structure.
+X * The fields of this record are the five values associated with every
+X * TrackKern entry.
+X *
+X * For an explanation about each value please refer to the
+X * Track Kerning section of the AFM documentation (full title
+X * & version given above).
+X */
+typedef struct
+{
+X int degree;
+X float minPtSize,
+X minKernAmt,
+X maxPtSize,
+X maxKernAmt;
+} TrackKernData;
+X
+X
+/* Pair Kerning data structure.
+X * The fields of this record are the four values associated with every
+X * KP entry. For KPX entries, the yamt will be zero.
+X *
+X * For an explanation about each value please refer to the
+X * Pair Kerning section of the AFM documentation (full title
+X * & version given above).
+X */
+typedef struct
+{
+X char *name1;
+X char *name2;
+X int xamt,
+X yamt;
+} PairKernData;
+X
+X
+/* PCC is a piece of a composite character. This is a sub structure of a
+X * compCharData described below.
+X * These fields will be filled in with the values from the key PCC.
+X *
+X * For an explanation about each key and its value please refer to the
+X * Composite Character section of the AFM documentation (full title
+X * & version given above).
+X */
+typedef struct
+{
+X char *pccName;
+X int deltax,
+X deltay;
+} Pcc;
+X
+X
+/* Composite Character Information data structure.
+X * The fields ccName and numOfPieces are filled with the values associated
+X * with the key CC. The field pieces points to an array (size = numOfPieces)
+X * of information about each of the parts of the composite character. That
+X * array is filled in with the values from the key PCC.
+X *
+X * For an explanation about each key and its value please refer to the
+X * Composite Character section of the AFM documentation (full title
+X * & version given above).
+X */
+typedef struct
+{
+X char *ccName;
+X int numOfPieces;
+X Pcc *pieces;
+} CompCharData;
+X
+X
+/* FontInfo
+X * Record type containing pointers to all of the other data
+X * structures containing information about a font.
+X * A a record of this type is filled with data by the
+X * parseFile function.
+X */
+typedef struct
+{
+X GlobalFontInfo *gfi; /* ptr to a GlobalFontInfo record */
+X int *cwi; /* ptr to 256 element array of just char widths */
+X int numOfChars; /* number of entries in char metrics array */
+X CharMetricInfo *cmi; /* ptr to char metrics array */
+X int numOfTracks; /* number to entries in track kerning array */
+X TrackKernData *tkd; /* ptr to track kerning array */
+X int numOfPairs; /* number to entries in pair kerning array */
+X PairKernData *pkd; /* ptr to pair kerning array */
+X int numOfComps; /* number to entries in comp char array */
+X CompCharData *ccd; /* ptr to comp char array */
+} FontInfo;
+X
+X
+X
+/************************* PROCEDURES ****************************/
+X
+/* Call this procedure to do the grunt work of parsing an AFM file.
+X *
+X * "fp" should be a valid file pointer to an AFM file.
+X *
+X * "fi" is a pointer to a pointer to a FontInfo record sturcture
+X * (defined above). Storage for the FontInfo structure will be
+X * allocated in parseFile and the structure will be filled in
+X * with the requested data from the AFM File.
+X *
+X * "flags" is a mask with bits set representing what data should
+X * be saved. Defined above are valid flags that can be used to set
+X * the mask, as well as a few commonly used masks.
+X *
+X * The possible return codes from parseFile are defined above.
+X */
+X
+extern int parseFile ( /* FILE *fp; FontInfo **fi; FLAGS flags; */ );
+SHAR_EOF
+ $shar_touch -am 1018085596 'parseAFM.h' &&
+ chmod 0644 'parseAFM.h' ||
+ $echo 'restore of' 'parseAFM.h' 'failed'
+ shar_count="`wc -c < 'parseAFM.h'`"
+ test 11502 -eq "$shar_count" ||
+ $echo 'parseAFM.h:' 'original size' '11502,' 'current size' "$shar_count"
+fi
+# ============= parseAFMclient.c ==============
+if test -f 'parseAFMclient.c' && test X"$1" != X"-c"; then
+ $echo 'x -' SKIPPING 'parseAFMclient.c' '(file already exists)'
+else
+ $echo 'x -' extracting 'parseAFMclient.c' '(text)'
+ sed 's/^X//' << 'SHAR_EOF' > 'parseAFMclient.c' &&
+/*
+X * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
+X *
+X * This file may be freely copied and redistributed as long as:
+X * 1) This entire notice continues to be included in the file,
+X * 2) If the file has been modified in any way, a notice of such
+X * modification is conspicuously indicated.
+X *
+X * PostScript, Display PostScript, and Adobe are registered trademarks of
+X * Adobe Systems Incorporated.
+X *
+X * ************************************************************************
+X * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+X * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+X * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
+X * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
+X * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
+X * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
+X * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+X * ************************************************************************
+X */
+X
+/* parseAFMclient.c
+X *
+X * This file is an example of how an application might use the provided
+X * AFM Parser (parseAFM.c).
+X *
+X * In a nutshell, the client of the parser (like this file) chooses
+X * the AFM File that it wishes to have parsed, opens the file for
+X * reading (and does any/all error handling associated with that task),
+X * and passes the resulting file pointer to the procedure "parseFile"
+X * (in parseAFM.c). In addition to the file pointer, the client also
+X * needs to pass a pointer to a FontInfo record type (for which storage
+X * will be allocated and data filled in), and a mask representing which
+X * sections of the AFM should be saved in the FontInfo record.
+X *
+X * In the procedure "main", the mask is built from command line switches,
+X * but your application, of course, can set that mask any way you prefer.
+X * "main" then calls the "parseFile" procedure (of parseAFM.c) to do the
+X * grunt work, and checks the error codes upon "parseFile"'s return.
+X *
+X * The rest of this sample application is a collection of print routines
+X * that show how to reference each of the sections of data and a
+X * "freeStorage" routine (that many unix programmers may feel they
+X * don't need but is included for portability to other systems that do
+X * need to manage storage). The print procedures are there just to
+X * give meaning to this application, and hopefully your application
+X * will use the data collected from the AFM file in a more useful way.
+X *
+X * History:
+X * original: DSM Thu Oct 20 17:39:59 PDT 1988
+X * modified: DSM Mon Jul 3 14:17:50 PDT 1989
+X * - added 'storageProblem' check in main
+X */
+X
+#include <stdio.h>
+#include "parseAFM.h"
+X
+X
+/*************************** GLOBALS ***************************/
+FontInfo *fi;
+FLAGS myflags = 0;
+X
+X
+/*************************** printGlobals **********************/
+X
+printGlobals()
+{
+X printf("\nThis AFM is of Version %s\n", fi->gfi->afmVersion);
+X printf("The font name is %s\n", fi->gfi->fontName);
+X printf("The full name is %s\n", fi->gfi->fullName);
+X printf("The family name is %s\n", fi->gfi->familyName);
+X printf("The weight is %s\n", fi->gfi->weight);
+X printf("Italic Angle is %3.1f\n", fi->gfi->italicAngle);
+X if (fi->gfi->isFixedPitch)
+X printf("This font IS fixed-pitch\n");
+X else
+X printf("This font is NOT fixed-pitch\n");
+X printf("Underline position is %d\n", fi->gfi->underlinePosition);
+X printf("Underline thickness is %d\n", fi->gfi->underlineThickness);
+X printf("Version is %s\n", fi->gfi->version);
+X printf("FontBBox is [%d, %d, %d, %d]\n",
+X fi->gfi->fontBBox.llx, fi->gfi->fontBBox.lly,
+X fi->gfi->fontBBox.urx, fi->gfi->fontBBox.ury);
+X printf("%s\n", fi->gfi->notice);
+X printf("Encoding Scheme is %s\n", fi->gfi->encodingScheme);
+X printf("CapHeight is %d\n", fi->gfi->capHeight);
+X printf("XHeight is %d\n", fi->gfi->xHeight);
+X printf("Descender is %d\n", fi->gfi->descender);
+X printf("Ascender is %d\n\n", fi->gfi->ascender);
+X
+} /* printGlobals */
+X
+X
+/*************************** printCharWidths *********************/
+printCharWidths()
+{
+X int i = 0;
+X printf("Here come some character widths ...\n");
+X for (i = 0; i < 256; ++i)
+X printf(" code: %3d width: %4d\n", i, fi->cwi[i]);
+X printf("\n");
+X
+} /* printCharWidths */
+X
+X
+/*************************** printAllCharMetrics *****************/
+printAllCharMetrics()
+{
+X int i = 0;
+X CharMetricInfo *temp = fi->cmi;
+X Ligature *node = temp->ligs;
+X
+X printf("Here come some character metrics ...\n");
+X for (i = 0; i < fi->numOfChars; ++i)
+X {
+X printf(
+X " code: %3d x-width: %4d y-width: %4d name: %-12s bbox: [%d, %d, %d, %d]\n",
+X temp->code, temp->wx, temp->wy, temp->name, temp->charBBox.llx,
+X temp->charBBox.lly, temp->charBBox.urx, temp->charBBox.ury);
+X for (node = temp->ligs; node != NULL; node = node->next)
+X {
+X printf(" Ligatures: successor: %s ligature: %s\n",
+X node->succ, node->lig);
+X }
+X temp++;
+X } /* for */
+X printf("\n");
+X
+} /* printAllCharMetrics */
+X
+X
+/*************************** printKernPairData ******************/
+printKernPairData()
+{
+X int i = 0;
+X PairKernData *pkd = fi->pkd;
+X
+X if (fi->numOfPairs != 0)
+X {
+X printf("Here comes the pair kerning data ...\n");
+X for (i = 0; i < fi->numOfPairs; ++i)
+X printf(
+X " char 1: %-12s char 2: %-12s x-amount: %d y-amount: %d\n",
+X pkd[i].name1, pkd[i].name2, pkd[i].xamt, pkd[i].yamt);
+X }
+X else printf("There isn't any pair kerning data.\n");
+X printf("\n");
+X
+} /* printKernPairData */
+X
+X
+/*************************** printKernTrackData *******************/
+printKernTrackData()
+{
+X int i = 0;
+X TrackKernData *tkd = fi->tkd;
+X
+X if (fi->numOfTracks != 0)
+X {
+X printf("Here comes the track kerning data ...\n");
+X for (i = 0; i < fi->numOfTracks; ++i)
+X printf(
+X " degree: %d min-pt: %5.2f min-kern: %5.2f max-pt: %5.2f max-kern: %5.2f\n",
+X tkd[i].degree, tkd[i].minPtSize, tkd[i].minKernAmt,
+X tkd[i].maxPtSize, tkd[i].maxKernAmt);
+X }
+X else printf("There isn't any track kerning data.\n");
+X printf("\n");
+X
+} /* printKernTrackData */
+X
+X
+/*************************** printCompCharData ********************/
+printCompCharData()
+{
+X int i = 0, j = 0;
+X CompCharData *ccd = fi->ccd;
+X
+X if (fi->numOfComps != 0)
+X {
+X printf("Here comes the composite character data ...\n");
+X for (i = 0; i < fi->numOfComps; ++i)
+X {
+X printf(" comp char: %-12s pieces: %d\n",
+X ccd[i].ccName, ccd[i].numOfPieces);
+X for (j = 0; j < ccd[i].numOfPieces; ++j)
+X printf(
+X " Part # %d Name: %-12s Delta X: %d Delta Y: %d\n",
+X (j + 1), ccd[i].pieces[j].pccName,
+X ccd[i].pieces[j].deltax, ccd[i].pieces[j].deltay);
+X }
+X }
+X else printf("There aren't any composites characters. \n");
+X printf("\n");
+X
+} /* printCompCharData */
+X
+X
+X
+/*************************** freeStorage ***********************/
+X
+freeStorage()
+{
+X if (fi != NULL)
+X {
+X if (fi->gfi != NULL)
+X {
+X free(fi->gfi->afmVersion); fi->gfi->afmVersion = NULL;
+X free(fi->gfi->fontName); fi->gfi->fontName = NULL;
+X free(fi->gfi->fullName); fi->gfi->fullName = NULL;
+X free(fi->gfi->familyName); fi->gfi->familyName = NULL;
+X free(fi->gfi->weight); fi->gfi->weight = NULL;
+X free(fi->gfi->version); fi->gfi->version = NULL;
+X free(fi->gfi->notice); fi->gfi->notice = NULL;
+X free(fi->gfi->encodingScheme); fi->gfi->encodingScheme = NULL;
+X free(fi->gfi); fi->gfi = NULL;
+X }
+X
+X if (fi->cwi != NULL)
+X { free(fi->cwi); fi->cwi = NULL; }
+X
+X if (fi->cmi != NULL)
+X {
+X int i = 0;
+X CharMetricInfo *temp = fi->cmi;
+X Ligature *node = temp->ligs;
+X
+X for (i = 0; i < fi->numOfChars; ++i)
+X {
+X for (node = temp->ligs; node != NULL; node = node->next)
+X {
+X free(node->succ); node->succ = NULL;
+X free(node->lig); node->lig = NULL;
+X }
+X
+X free(temp->name); temp->name = NULL;
+X temp++;
+X }
+X
+X free(fi->cmi); fi->cmi = NULL;
+X }
+X
+X if (fi->tkd != NULL)
+X { free(fi->tkd); fi->tkd = NULL; }
+X
+X if (fi->pkd != NULL)
+X {
+X free(fi->pkd->name1); fi->pkd->name1 = NULL;
+X free(fi->pkd->name2); fi->pkd->name2 = NULL;
+X free(fi->pkd); fi->pkd = NULL;
+X }
+X
+X if (fi->ccd != NULL)
+X {
+X int i = 0, j = 0;
+X CompCharData *ccd = fi->ccd;
+X
+X for (i = 0; i < fi->numOfComps; ++i)
+X {
+X for (j = 0; j < ccd[i].numOfPieces; ++j)
+X {
+X free(ccd[i].pieces[j].pccName);
+X ccd[i].pieces[j].pccName = NULL;
+X }
+X
+X free(ccd[i].ccName); ccd[i].ccName = NULL;
+X }
+X
+X free(fi->ccd); fi->ccd = NULL;
+X }
+X
+X free(fi);
+X
+X } /* if */
+X
+} /* freeStorage */
+X
+X
+/*************************** printValues **************************/
+X
+printValues()
+{
+X if ((myflags & P_G) && (fi->gfi != NULL)) printGlobals();
+X if ((myflags & (P_M ^ P_W)) && (fi->cmi != NULL)) printAllCharMetrics();
+X else if ((myflags & P_W) && (fi->cwi != NULL)) printCharWidths();
+X if ((myflags & P_P) && (fi->pkd != NULL)) printKernPairData();
+X if ((myflags & P_T) && (fi->tkd != NULL)) printKernTrackData();
+X if ((myflags & P_C) && (fi->ccd != NULL)) printCompCharData();
+X
+} /* printValues */
+X
+X
+X
+/*************************** main *********************************/
+X
+main (argc, argv)
+X int argc;
+X char **argv;
+{
+X char *filename, *prog = *argv;
+X FILE *fp;
+X
+X ++argv; --argc;
+X while (argc > 0 && **argv == '-')
+X {
+X switch ((*argv)[1])
+X {
+X case 'g': /* save Globals */
+X myflags |= P_G;
+X break;
+X case 'w': /* save Char Widths */
+X myflags |= P_W;
+X break;
+X case 'm': /* save All Char Metrics */
+X myflags |= P_M;
+X break;
+X case 'p': /* save Kern Pair Data */
+X myflags |= P_P;
+X break;
+X case 't': /* save Kern Track Data */
+X myflags |= P_T;
+X break;
+X case 'c': /* save Comp Char Data */
+X myflags |= P_C;
+X break;
+X default:
+X printf(" usage: parseAFM [-g] [-w] [-p] [-t] [-c] [AFM File]\nOR: usage: parseAFM [-g] [-m] [-p] [-t] [-c] [AFM File]\n");
+X exit(0);
+X }
+X ++argv; --argc;
+X }
+X
+X if (!argc)
+X {
+X printf(" usage: parseAFM [-g] [-w] [-p] [-t] [-c] [AFM File]\nOR: usage: parseAFM [-g] [-m] [-p] [-t] [-c] [AFM File]\n");
+X exit(0);
+X }
+X else
+X filename = *argv;
+X
+X if (!filename[0])
+X {
+X printf ("*** ERROR: can't open. filename is missing.\n",
+X filename );
+X return 0;
+X }
+X
+X fp = fopen(filename, "r" );
+X if (fp == NULL)
+X {
+X printf ("*** ERROR: can't find: %s\n", filename );
+X exit(1);
+X }
+X
+X switch (parseFile(fp, &fi, myflags))
+X {
+X case parseError:
+X printf("*** ERROR: problem in parsing the AFM File.\n");
+X case ok:
+X fclose(fp);
+X printValues();
+X freeStorage();
+X break;
+X case earlyEOF:
+X printf("The AFM File ended prematurely.\n");
+X break;
+X case storageProblem:
+X printf("*** ERROR: problem allocating storage.\n");
+X break;
+X default:
+X break;
+X }
+X
+} /* main */
+SHAR_EOF
+ $shar_touch -am 1018085596 'parseAFMclient.c' &&
+ chmod 0644 'parseAFMclient.c' ||
+ $echo 'restore of' 'parseAFMclient.c' 'failed'
+ shar_count="`wc -c < 'parseAFMclient.c'`"
+ test 12210 -eq "$shar_count" ||
+ $echo 'parseAFMclient.c:' 'original size' '12210,' 'current size' "$shar_count"
+fi
+rm -fr _sh00599
+exit 0
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/.dependencies b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/.dependencies
new file mode 100644
index 00000000000..21e95604656
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/.dependencies
@@ -0,0 +1 @@
+type1afm.lo: type1afm.c ../lib/t1lib/t1lib.h
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/Makefile.in
new file mode 100644
index 00000000000..61611e174c6
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/Makefile.in
@@ -0,0 +1,104 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 02/19/1997
+# Last modified: 2006-11-05
+#
+# Modified by H.Kakugawa to use libtool
+
+LIBTOOL = ../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS)
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+
+# targets to build
+
+MAIN_TARGET = @MAIN_TARGET@
+
+OBJS = \
+ type1afm.lo
+
+SRCS = \
+ type1afm.c
+
+T1LIB = ../lib/libt1.la
+
+
+all: type1afm
+
+type1afm: $(OBJS) ../lib/t1lib.h
+ $(LIBTOOL) --mode=link \
+ $(CC) -o type1afm $(LDFLAGS) $(OBJS) $(T1LIB) $(LDLIBS)
+
+.SUFFIXES: .lo
+.c.lo:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+.PHONY: clean
+
+dependencies: dummy
+ gcc -MM *.c | sed 's/\.o:/.lo:/g' > .dependencies
+
+clean: dummy
+ $(RM) type1afm *.o *.lo .libs/* *~ \#*\# *.log *.bak
+ -rmdir .libs
+
+install: dummy
+ $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ $(LIBTOOL) --mode=install \
+ $(INSTALL_PROGRAM) type1afm $(DESTDIR)$(bindir)/type1afm
+
+
+uninstall: dummy
+ $(LIBTOOL) --mode=uninstall \
+ $(RM) $(DESTDIR)$(bindir)/type1afm
+
+
+dummy:
+
+# Dependencies of object files
+include .dependencies
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/type1afm.c b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/type1afm.c
new file mode 100644
index 00000000000..bf95410c35b
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/type1afm/type1afm.c
@@ -0,0 +1,140 @@
+/*--------------------------------------------------------------------------
+ ----- File: type1afm.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2002-11-27
+ ----- Description: This file is part of t1lib. The program type1afm
+ extracts metrics information from Type 1 font files
+ and dumps it to afm files.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2002.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#include <stdio.h>
+#include <string.h>
+/* Note: We include t1lib.h from lib/t1lib. That way the objectfile does only
+ need to be rebuild when the header itself changes and not each time the
+ library has been recompiled */
+#include "../lib/t1lib/t1lib.h"
+
+
+void printusage( void);
+
+
+int main(int argc, char *argv[])
+{
+
+ int i, j, result;
+ int rasterflags=0;
+
+
+ if (argc==1){
+ printusage();
+ return(0);
+ }
+
+ /* If we want to log anything, then log all */
+ T1_SetLogLevel(T1LOG_DEBUG);
+ /* Check whether logfile is requested */
+ if (strcmp( argv[1], "-l")==0){
+ if (argc==2){
+ printusage();
+ return(0);
+ }
+ j=2;
+ if ((T1_InitLib( LOGFILE |
+ IGNORE_CONFIGFILE |
+ IGNORE_FONTDATABASE)==NULL)){
+ fprintf(stderr, "Initialization of t1lib failed\n");
+ return(1);
+ }
+ }
+ else{
+ j=1;
+ if ((T1_InitLib( NO_LOGFILE |
+ IGNORE_CONFIGFILE |
+ IGNORE_FONTDATABASE)==NULL)){
+ fprintf(stderr, "Initialization of t1lib failed\n");
+ return(1);
+ }
+ }
+
+ /* First, build font data base */
+ for (i=j; i<argc; i++){
+ if ((result=T1_AddFont( argv[i]))<0)
+ fprintf( stderr, "type1afm: Could not load font file %s (%d)\n",
+ argv[i], result);
+ }
+ if (T1_GetNoFonts()<1){
+ fprintf( stderr, "type1afm: Nothing to do\n");
+ T1_CloseLib();
+ return(-1);
+ }
+
+ /* switch rasterizer to disable hinting */
+ rasterflags |= T1_IGNORE_FORCEBOLD;
+ rasterflags |= T1_IGNORE_FAMILYALIGNMENT;
+ rasterflags |= T1_IGNORE_HINTING;
+ T1_SetRasterFlags( rasterflags);
+
+
+ /* Second, load fonts and generate afm files */
+ for( i=0; i<T1_GetNoFonts(); i++){
+ fprintf( stdout, "Loading %s ... ", T1_GetFontFileName(i));
+ fflush(stdout);
+ if ((T1_LoadFont(i))){
+ fprintf(stdout, "failed\n");
+ continue;
+ }
+ else{
+ fprintf(stdout, "finished\n");
+ }
+ fprintf( stdout, "Processing ... ");
+ fflush(stdout);
+ if ((result=T1_WriteAFMFallbackFile( i))){
+ fprintf(stdout, "failed (Error: %d)\n", result);
+ }
+ else{
+ fprintf(stdout, "finished\n");
+ }
+ fprintf( stdout, "Removing font %d ... ", i);
+ fflush(stdout);
+ if ((T1_DeleteFont( i))){
+ fprintf(stdout, "failed\n");
+ }
+ else{
+ fprintf(stdout, "finished\n");
+ }
+ }
+
+ T1_CloseLib();
+ return( 0);
+}
+
+
+void printusage( void)
+{
+ fprintf(stdout, "Usage: type1afm [-l] <fontfile1> [<fontfile2> ...]\n");
+ fprintf(stdout, "\n");
+ fprintf(stdout, "Generate afm-file from Adobe Type 1 font file (T1lib-%s)!\n",
+ T1_GetLibIdent());
+ fprintf(stdout, "Options: -l Write a log-file t1lib.log\n");
+}
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsp b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsp
new file mode 100644
index 00000000000..936ee6db305
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsp
@@ -0,0 +1,481 @@
+# Microsoft Developer Studio Project File - Name="T1_DLL" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** $BJT=8$7$J$$$G$/$@$5$$(B **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=T1_DLL - Win32 Debug MD
+!MESSAGE $B$3$l$OM-8z$J%a%$%/%U%!%$%k$G$O$"$j$^$;$s!#(B $B$3$N%W%m%8%'%/%H$r%S%k%I$9$k$?$a$K$O(B NMAKE $B$r;HMQ$7$F$/$@$5$$!#(B
+!MESSAGE [$B%a%$%/%U%!%$%k$N%(%/%9%]!<%H(B] $B%3%^%s%I$r;HMQ$7$F<B9T$7$F$/$@$5$$(B
+!MESSAGE
+!MESSAGE NMAKE /f "T1_DLL.mak".
+!MESSAGE
+!MESSAGE NMAKE $B$N<B9T;~$K9=@.$r;XDj$G$-$^$9(B
+!MESSAGE $B%3%^%s%I(B $B%i%$%s>e$G%^%/%m$N@_Dj$rDj5A$7$^$9!#Nc(B:
+!MESSAGE
+!MESSAGE NMAKE /f "T1_DLL.mak" CFG="T1_DLL - Win32 Debug MD"
+!MESSAGE
+!MESSAGE $BA*Br2DG=$J%S%k%I(B $B%b!<%I(B:
+!MESSAGE
+!MESSAGE "T1_DLL - Win32 Release" ("Win32 (x86) Dynamic-Link Library" $BMQ(B)
+!MESSAGE "T1_DLL - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" $BMQ(B)
+!MESSAGE "T1_DLL - Win32 Release MD" ("Win32 (x86) Dynamic-Link Library" $BMQ(B)
+!MESSAGE "T1_DLL - Win32 Debug MD" ("Win32 (x86) Dynamic-Link Library" $BMQ(B)
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "T1_DLL - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "DLL_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1.pdb" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Lib/T1.dll"
+
+!ELSEIF "$(CFG)" == "T1_DLL - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "DLL_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1d.pdb" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Lib/T1d.dll" /pdbtype:sept
+
+!ELSEIF "$(CFG)" == "T1_DLL - Win32 Release MD"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "T1_DLL___Win32_Release_MD"
+# PROP BASE Intermediate_Dir "T1_DLL___Win32_Release_MD"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "DLLMD_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1.pdb" /FD /c
+# ADD CPP /nologo /MD /W3 /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1MD.pdb" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Lib/T1.dll"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Lib/T1MD.dll"
+
+!ELSEIF "$(CFG)" == "T1_DLL - Win32 Debug MD"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "T1_DLL___Win32_Debug_MD"
+# PROP BASE Intermediate_Dir "T1_DLL___Win32_Debug_MD"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "DLLMD_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1d.pdb" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "T1_DLL_EXPORTS" /YX /Fd"Lib/T1MDd.pdb" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Lib/T1d.dll" /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Lib/T1MDd.dll" /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "T1_DLL - Win32 Release"
+# Name "T1_DLL - Win32 Debug"
+# Name "T1_DLL - Win32 Release MD"
+# Name "T1_DLL - Win32 Debug MD"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\type1\arith.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\curves.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfcn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hints.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\lines.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\objects.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\parseAFM.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\regions.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\scanfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\t1.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1aaset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1afmtool.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1base.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1delete.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1enc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1env.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1finfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1io.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1load.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1outline.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1set.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1snap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1trans.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\token.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\type1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\util.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\lib\type1\arith.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\blues.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\cluts.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\curves.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\digit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\ffilest.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\font.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfcn.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontmisc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fonts.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontstruct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontxlfd.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fsmasks.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hdigit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hints.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\lines.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\objects.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\parseAFM.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths_rmz.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\pictures.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\regions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces_rmz.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\strokes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\sysconf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1aaset.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1afmtool.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1base.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1delete.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1enc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1env.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1extern.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1finfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1global.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1hdigit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1imager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1load.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1outline.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1set.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1stdio.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1trans.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1x11.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\token.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\tokst.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\trig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\util.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\Xstuff.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsw b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsw
new file mode 100644
index 00000000000..65da8e09121
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_DLL.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# $B7Y9p(B: $B$3$N%o!<%/%9%Z!<%9(B $B%U%!%$%k(B $B$rJT=8$^$?$O:o=|$7$J$$$G$/$@$5$$(B!
+
+###############################################################################
+
+Project: "T1_DLL"=.\T1_DLL.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsp b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsp
new file mode 100644
index 00000000000..cb36b191258
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsp
@@ -0,0 +1,458 @@
+# Microsoft Developer Studio Project File - Name="T1_Static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** $BJT=8$7$J$$$G$/$@$5$$(B **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=T1_Static - Win32 Debug MD
+!MESSAGE $B$3$l$OM-8z$J%a%$%/%U%!%$%k$G$O$"$j$^$;$s!#(B $B$3$N%W%m%8%'%/%H$r%S%k%I$9$k$?$a$K$O(B NMAKE $B$r;HMQ$7$F$/$@$5$$!#(B
+!MESSAGE [$B%a%$%/%U%!%$%k$N%(%/%9%]!<%H(B] $B%3%^%s%I$r;HMQ$7$F<B9T$7$F$/$@$5$$(B
+!MESSAGE
+!MESSAGE NMAKE /f "T1_Static.mak".
+!MESSAGE
+!MESSAGE NMAKE $B$N<B9T;~$K9=@.$r;XDj$G$-$^$9(B
+!MESSAGE $B%3%^%s%I(B $B%i%$%s>e$G%^%/%m$N@_Dj$rDj5A$7$^$9!#Nc(B:
+!MESSAGE
+!MESSAGE NMAKE /f "T1_Static.mak" CFG="T1_Static - Win32 Debug MD"
+!MESSAGE
+!MESSAGE $BA*Br2DG=$J%S%k%I(B $B%b!<%I(B:
+!MESSAGE
+!MESSAGE "T1_Static - Win32 Release" ("Win32 (x86) Static Library" $BMQ(B)
+!MESSAGE "T1_Static - Win32 Debug" ("Win32 (x86) Static Library" $BMQ(B)
+!MESSAGE "T1_Static - Win32 Release MD" ("Win32 (x86) Static Library" $BMQ(B)
+!MESSAGE "T1_Static - Win32 Debug MD" ("Win32 (x86) Static Library" $BMQ(B)
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "T1_Static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "Static_Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /Fd"Lib\T1_Static.pdb" /FD /c
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "T1_Static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "Static_Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /Zi /Od /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /Fd"Lib/T1_Staticd.pdb" /FD /GZ /c
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Lib\T1_Staticd.lib"
+
+!ELSEIF "$(CFG)" == "T1_Static - Win32 Release MD"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "T1_Static___Win32_Release_MD"
+# PROP BASE Intermediate_Dir "T1_Static___Win32_Release_MD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "StaticMD_Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /Fd"Lib\T1_StaticMD.pdb" /FD /c
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Lib\T1_StaticMD.lib"
+
+!ELSEIF "$(CFG)" == "T1_Static - Win32 Debug MD"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "T1_Static___Win32_Debug_MD"
+# PROP BASE Intermediate_Dir "T1_Static___Win32_Debug_MD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Lib"
+# PROP Intermediate_Dir "StaticMD_Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /Fd"Lib/T1_Staticd.pdb" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /Fd"Lib/T1_StaticMDd.pdb" /FD /GZ /c
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Lib\T1_Staticd.lib"
+# ADD LIB32 /nologo /out:"Lib\T1_StaticMDd.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "T1_Static - Win32 Release"
+# Name "T1_Static - Win32 Debug"
+# Name "T1_Static - Win32 Release MD"
+# Name "T1_Static - Win32 Debug MD"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\type1\arith.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\curves.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfcn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hints.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\lines.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\objects.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\parseAFM.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\regions.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\scanfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1aaset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1afmtool.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1base.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1delete.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1enc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1env.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1finfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1io.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1load.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1outline.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1set.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1snap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1trans.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\token.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\type1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\util.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\lib\type1\arith.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\blues.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\cluts.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\curves.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\digit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\ffilest.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\font.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfcn.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontmisc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fonts.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontstruct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fontxlfd.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\fsmasks.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hdigit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\hints.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\lines.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\objects.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\parseAFM.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\paths_rmz.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\pictures.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\regions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\spaces_rmz.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\strokes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\sysconf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1aaset.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1afmtool.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1base.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1delete.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1enc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1env.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1extern.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1finfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1global.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1hdigit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1imager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1load.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1outline.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1set.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\t1stdio.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1trans.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\t1lib\t1x11.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\token.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\tokst.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\trig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\util.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\type1\Xstuff.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsw b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsw
new file mode 100644
index 00000000000..a9f4f0e95e9
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/T1_Static.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# $B7Y9p(B: $B$3$N%o!<%/%9%Z!<%9(B $B%U%!%$%k(B $B$rJT=8$^$?$O:o=|$7$J$$$G$/$@$5$$(B!
+
+###############################################################################
+
+Project: "T1_Static"=".\T1_Static.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/sysconf.h b/Build/source/libs/t1lib/t1lib-5.1.2/win32/sysconf.h
new file mode 100644
index 00000000000..9c56a8b4c24
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/sysconf.h
@@ -0,0 +1,51 @@
+/*--------------------------------------------------------------------------
+ ----- File: sysconf.h.in
+ ----- Author: Rainer Menzner (rmz@neuroinformatik.ruhr-uni-bochum.de)
+ ----- Date: 02/24/1998
+ ----- Description: This file is part of the t1-library. Some system
+ dependent definitions are stored here. sysconf.h
+ is generated from this file automatically by the
+ configure-script.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-1998.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+
+#undef __CHAR_UNSIGNED__
+#define SIZEOF_CHAR 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_LONG_DOUBLE 12
+#define SIZEOF_VOID_P 4
+
+#if defined(_MSC_VER)
+# define T1LIB_IDENT "1.0"
+# define GLOBAL_CONFIG_DIR "/usr/local/share/t1lib-1.0"
+# define T1_AA_TYPE16 short
+# define T1_AA_TYPE32 int
+#endif
+
+#if defined(_MSC_VER) && !defined(_WIN32)
+# define _WIN32 1
+#endif
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/win32/t1.def b/Build/source/libs/t1lib/t1lib-5.1.2/win32/t1.def
new file mode 100644
index 00000000000..ba9e2a7beab
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/win32/t1.def
@@ -0,0 +1,110 @@
+EXPORTS
+ T1_AAFillOutline
+ T1_AAGetLevel
+ T1_AAHSetGrayValues
+ T1_AANSetGrayValues
+ T1_AASetBitsPerPixel
+ T1_AASetChar
+ T1_AASetGrayValues
+ T1_AASetLevel
+ T1_AASetSmartLimits
+ T1_AASetSmartMode
+ T1_AASetString
+ T1_AbsolutePath
+ T1_AddFont
+ T1_AddToFileSearchPath
+ T1_CheckEndian
+ T1_CloseLib
+ T1_ComputeLineParameters
+ T1_ConcatGlyphs
+ T1_ConcatOutlines
+ T1_CopyFont
+ T1_CopyGlyph
+ T1_DeleteAllSizes
+ T1_DeleteEncoding
+ T1_DeleteFont
+ T1_DeleteSize
+ T1_DumpGlyph
+ T1_DumpPath
+ ;T1_DumpPixmap
+ T1_ExtendFont
+ T1_ExtendHMatrix
+ T1_ExtendVMatrix
+ T1_FillOutline
+ T1_FreeGlyph
+ T1_GenerateAFMFallbackInfo
+ T1_Get_no_fonts
+ T1_GetAfmFileName
+ T1_GetAllCharNames
+ T1_GetBitmapPad
+ T1_GetCharBBox
+ T1_GetCharName
+ T1_GetCharOutline
+ T1_GetCharWidth
+ T1_GetEncodingIndex
+ T1_GetEncodingScheme
+ T1_GetFamilyName
+ T1_GetFileSearchPath
+ T1_GetFontBBox
+ T1_GetFontFileName
+ T1_GetFontName
+ T1_GetFullName
+ T1_GetIsFixedPitch
+ T1_GetItalicAngle
+ T1_GetKerning
+ T1_GetLibIdent
+ T1_GetLinePosition
+ T1_GetLineThickness
+ T1_GetMetricsInfo
+ T1_GetMoveOutline
+ T1_GetNotice
+ T1_GetStringBBox
+ T1_GetStringOutline
+ T1_GetStringWidth
+ T1_GetUnderlinePosition
+ T1_GetUnderlineThickness
+ T1_GetVersion
+ T1_GetWeight
+ T1_InitLib
+ T1_LoadEncoding
+ T1_LoadFont
+ T1_ManipulatePath
+ T1_MirrorHMatrix
+ T1_MirrorVMatrix
+ T1_PrintLog
+ T1_QueryLigs
+ T1_QueryX11Support
+ T1_ReencodeFont
+ T1_RelativePath
+ T1_RotateMatrix
+ T1_ScaleOutline
+ T1_SetAfmFileName
+ T1_SetBitmapPad
+ T1_SetChar
+ T1_SetDefaultEncoding
+ T1_SetDeviceResolutions
+ T1_SetFileSearchPath
+ T1_SetFontDataBase
+ T1_SetLinePosition
+ T1_SetLineThickness
+ T1_SetLogLevel
+ T1_SetRasterFlags
+ T1_SetString
+ T1_ShearHMatrix
+ T1_ShearVMatrix
+ T1_SlantFont
+ T1_TransformMatrix
+ T1_WriteAFMFallbackFile
+; T1_AADoLine
+; T1_AAInit
+; T1_DoLine
+; T1Close
+; T1Decrypt
+; T1eexec
+; T1Fill
+; T1Getc
+; T1io_reset
+; T1lib_parseFile
+; T1Open
+; T1Read
+; T1Ungetc
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/.dependencies b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/.dependencies
new file mode 100644
index 00000000000..9ea114d8c76
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/.dependencies
@@ -0,0 +1 @@
+xglyph.lo: xglyph.c ../lib/t1lib/t1lib.h ../lib/t1lib/t1libx.h
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/FontDataBase b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/FontDataBase
new file mode 100644
index 00000000000..1173e1ef7e2
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/FontDataBase
@@ -0,0 +1,10 @@
+8
+bchr.afm
+bchri.afm
+bchb.afm
+bchbi.afm
+dcr10.afm
+dcti10.afm
+dcbx10.afm
+dcbxti10.afm
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/Makefile.in b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/Makefile.in
new file mode 100644
index 00000000000..8da9b63c56a
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/Makefile.in
@@ -0,0 +1,109 @@
+# Makefile.in
+#
+# This file is part of the t1lib-package! See documentation and Readme files
+# of the t1lib-package for copyright restrictions.
+#
+# Targets provided:
+# all (default)
+# install
+# uninstall
+# clean
+#
+# Author: Rainer Menzner (Rainer.Menzner@web.de)
+# Date: 04/06/1997
+# Last modified: 2004-12-12
+#
+# Modified by H.Kakugawa to use libtool
+
+LIBTOOL = ../libtool
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+CFLAGS = @CFLAGS@
+OPTIONS = @OPTIONS@
+X_LIBS = @X_LIBS@
+TOPSRC = @top_srcdir@
+XPM_LIB = -lXpm
+XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
+LDFLAGS = @LDFLAGS@
+LDLIBS = @LDLIBS@
+AR = ar rc
+RANLIB = @RANLIB@
+RM = rm -f
+X_CFLAGS = @X_CFLAGS@
+YACC = @YACC@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+ALLCFLAGS = $(CFLAGS)
+SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(ALLCFLAGS)' 'OPTIONS=$(OPTIONS)'
+@SET_MAKE@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @top_srcdir@/ac-tools/mkinstalldirs
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+mandir = @mandir@/man1
+manext = .1
+no_x = @no_x@
+
+
+# targets to build
+
+MAIN_TARGET = @MAIN_TARGET@
+
+OBJS = \
+ xglyph.lo
+
+SRCS = \
+ xglyph.c
+
+T1LIB = ../lib/libt1.la
+T1LIBX = ../lib/libt1x.la
+XAWLIB = -lXaw -lXt -lXmu
+
+
+all: xglyph
+
+
+xglyph: $(OBJS) $(T1LIBX) $(T1LIB)
+ $(LIBTOOL) --mode=link \
+ $(CC) -o xglyph $(LDFLAGS) $(OBJS) $(T1LIBX) $(T1LIB) \
+ $(X_LIBS) $(XAWLIB) $(XLIB) $(LDLIBS)
+
+.SUFFIXES: .lo
+.c.lo:
+ $(LIBTOOL) --mode=compile \
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+
+.PHONY: clean
+
+
+dependencies: dummy
+ gcc -MM *.c | sed 's/\.o:/.lo:/g' > .dependencies
+
+clean: dummy
+ $(RM) xglyph *.lo *.o .libs/* *~ \#*\# *.log *.bak
+ -rmdir .libs
+
+
+install: dummy
+ $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xglyph $(DESTDIR)$(bindir)/xglyph
+
+
+uninstall: dummy
+ $(LIBTOOL) --mode=uninstall $(RM) -f $(DESTDIR)$(bindir)/xglyph
+
+
+dummy:
+
+# Dependencies of object files (generated by "gcc -MM *.c"):
+include .dependencies
+
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/bchr.pfb b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/bchr.pfb
new file mode 100644
index 00000000000..72a1606b4b4
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/bchr.pfb
Binary files differ
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/t1lib.config b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/t1lib.config
new file mode 100644
index 00000000000..db9f6dc5508
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/t1lib.config
@@ -0,0 +1,6 @@
+This is a configuration file for t1lib
+
+TYPE1=.:../Fonts/type1
+FONTDATABASE=./FontDataBase
+ENCODING=.:../Fonts/enc
+AFM=.:../Fonts/afm
diff --git a/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/xglyph.c b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/xglyph.c
new file mode 100644
index 00000000000..f062132fcfb
--- /dev/null
+++ b/Build/source/libs/t1lib/t1lib-5.1.2/xglyph/xglyph.c
@@ -0,0 +1,4736 @@
+/*--------------------------------------------------------------------------
+ ----- File: xglyph.c
+ ----- Author: Rainer Menzner (Rainer.Menzner@web.de)
+ ----- Date: 2003-01-02
+ ----- Description: This file is part of the t1-library. The program xglyph
+ allows viewing of character- and string-glyphs. Diverse
+ parameters may be interactively configured.
+ ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2003.
+ As of version 0.5, t1lib is distributed under the
+ GNU General Public Library Lincense. The
+ conditions can be found in the files LICENSE and
+ LGPL, which should reside in the toplevel
+ directory of the distribution. Please note that
+ there are parts of t1lib that are subject to
+ other licenses:
+ The parseAFM-package is copyrighted by Adobe Systems
+ Inc.
+ The type1 rasterizer is copyrighted by IBM and the
+ X11-consortium.
+ ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
+ ----- Credits: I want to thank IBM and the X11-consortium for making
+ their rasterizer freely available.
+ Also thanks to Piet Tutelaers for his ps2pk, from
+ which I took the rasterizer sources in a format
+ independent from X11.
+ Thanks to all people who make free software living!
+--------------------------------------------------------------------------*/
+
+/* definitions for activating special tests for features of t1lib
+ via commandline arguments: */
+#define CHECK_PERFORMANCE 0x0001
+#define CHECK_T1_COPYFONT_T1_ADDFONT 0x0002
+#define CHECK_CONCATGLYPHS 0x0004
+#define CHECK_CONCATOUTLINES 0x0008
+#define CHECK_FOR_BAD_CHARS 0x0010
+#define CHECK_DEFAULT_ENCODING 0x0020
+#define CHECK_SMART_AA 0x0040
+#define NO_GRID 0x0080
+#define CHECK_AA_CACHING 0x0100
+#define CHECK_CACHE_STROKED 0x0200
+#define CHECK_SET_RECT 0x0400
+
+/* #define SHOW_MANIPULATE_PATHS */
+
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <X11/Xaw/Label.h>
+#include <X11/Xaw/Command.h>
+#include <X11/Xaw/Form.h>
+#include <X11/Xaw/Dialog.h>
+#include <X11/Xaw/Box.h>
+#include <X11/Xaw/Toggle.h>
+#include <X11/Shell.h>
+#include <X11/Xaw/AsciiText.h>
+#include <X11/Xaw/SimpleMenu.h>
+#include <X11/Xaw/SmeBSB.h>
+#include <X11/Xaw/List.h>
+
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <unistd.h>
+#include <sys/time.h>
+
+
+/* The following stuff is necessary for compiling and running
+ xglyph on VMS. Submitted by John Hasstedt (John.Hasstedt@sunysb.edu),
+ who did the VMS-port of t1lib. */
+#if defined(__VMS) && __CRTL_VER < 70000000
+# define putenv(p) \
+printf("You must define T1LIB_CONFIG before running this program\n"); \
+exit;
+# define gettimeofday(p1,p2)
+#endif
+
+
+/* Note: We include t1lib.h and t1libx.h from lib/t1lib. That way the
+ objectfile does only need to be rebuild when the header itself
+ changes and not each time the library has been recompiled */
+#include "../lib/t1lib/t1lib.h"
+#include "../lib/t1lib/t1libx.h"
+
+#ifndef PI
+#define PI 3.1415927
+#endif
+
+/* utility functions */
+BBox ComputeRotBBox( BBox, float);
+long time_diff(struct timeval *, struct timeval *);
+
+/* fallback-function */
+void exitprog( Widget, XtPointer, XtPointer);
+void togglekerning( Widget, XtPointer, XtPointer);
+void toggleligatur( Widget, XtPointer, XtPointer);
+void toggler2l( Widget, XtPointer, XtPointer);
+void toggleunderline( Widget, XtPointer, XtPointer);
+void toggleoverline( Widget, XtPointer, XtPointer);
+void toggleoverstrike( Widget, XtPointer, XtPointer);
+void showchar( Widget , XtPointer , XtPointer );
+void showstring( Widget , XtPointer , XtPointer );
+void aashowchar( Widget , XtPointer , XtPointer );
+void aashowstring( Widget , XtPointer , XtPointer );
+void showcharX( Widget , XtPointer , XtPointer );
+void showstringX( Widget , XtPointer , XtPointer );
+void aashowcharX( Widget , XtPointer , XtPointer );
+void aashowstringX( Widget , XtPointer , XtPointer );
+void showabout( Widget , XtPointer , XtPointer );
+void toggleopacity( Widget, XtPointer, XtPointer);
+void setcolor( Widget, XtPointer, XtPointer);
+void fonttable( Widget, XtPointer, XtPointer);
+void toggleaalevel( Widget, XtPointer, XtPointer);
+int ComputeAAColorsX( unsigned long fg, unsigned long bg, int nolevels);
+void printusage( int max);
+int CheckTransform( void);
+
+
+
+
+#define DOUBLEMARGIN 10
+#define SIMPLEMARGIN 5
+#define XOUTPUT_HALFVSIZE 200
+#define XOUTPUT_HALFHSIZE 300
+#define XGLYPH_PAD 16
+#define T1LIBENCFILE "IsoLatin1.enc"
+#define MAXENCODINGS 10
+#define TESTFONTFILE "eufm10.pfb"
+#define SHOWGRID
+#define CROSS_SIZE 6
+
+#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad))
+#define DIALOGWIDTH 170
+#define DIALOGHEIGHT 20
+#define ACTIONBUTTONHEIGHT 20
+#define APPLICATIONHEIGHT 690
+#define EDITABLE_COLOR "red"
+#define MESSAGEBOXHEIGHT 180
+#define AAMAXPLANES 17
+#define GRAY0 WhitePixel(display, screen_number)
+#define GRAY1 gray1.pixel
+#define GRAY2 gray2.pixel
+#define GRAY3 gray3.pixel
+#define GRAY4 BlackPixel(display, screen_number)
+
+#define min(a,b) (a < b ? a : b)
+#define max(a,b) (a > b ? a : b)
+
+
+#define DEFAULT_SIZE "100.0"
+#define DEFAULT_CHAR "65"
+
+/* Global variables for rasterizer parameters */
+float Size=400.0, Slant=0.0, Extent=1.0, Angle=0.0;
+int Modflag=0;
+int FontID=0, Caching=1, DeviceResolution=72;
+int StrokeWidth;
+int nofonts;
+
+long Space=0;
+int Opacity=0;
+int aalevel;
+char TestString[1024]="Test";
+int TestChar=70;
+char EncodingFile[128]="";
+char LastEncodingFile[128]="";
+struct
+{
+ char *encfilename;
+ char **encoding;
+}
+encstruct[MAXENCODINGS];
+
+int *last_resolution;
+float *lastExtent;
+float *lastSlant;
+int LigDetect=0;
+unsigned long fg, bg, outbg;
+Pixmap tmp_pixmap=0;
+Pixmap white_pixmap=0;
+
+
+Pixmap perf_pixmap;
+Pixmap pixmap;
+XImage *ximage;
+XColor edit_color, gray0, gray1, gray2, gray3, gray4;
+XColor white, black, gray, red, green, blue, pink4, yellow,
+ gridcolor1, gridcolor2,wozu;
+XColor aacolors[AAMAXPLANES];
+unsigned long aapixels[AAMAXPLANES];
+
+XGCValues xgcvalues;
+
+
+unsigned short dummy;
+char input;
+int overallwidth;
+char commandline[256];
+GLYPH *glyph;
+GLYPH *glyph1, *glyph2;
+char **Encoding=NULL;
+unsigned int height, width;
+char statusstring[1024];
+T1_TMATRIX matrix;
+T1_TMATRIX *matrixP;
+static char msg_buf[256];
+
+
+/* How t1lib pads lines: */
+int t1_pad=0;
+
+/* When to swap bytes in aa-pixels? */
+int xglyph_byte_order;
+
+/* The following is for time measurements: */
+struct timeval time_start, time_stop;
+struct timeval *time_ptr_start, *time_ptr_stop;
+void *void_ptr;
+
+
+
+/* Global X(t)-stuff */
+Display *display;
+Screen *screen;
+int screennumber;
+int depth;
+Widget TopLevel;
+Widget OutputWindow;
+Widget Output;
+Widget OutputWindow2;
+Widget Output2;
+Widget dialogfontid;
+Widget dialogsize;
+Widget dialogslant;
+Widget dialogextent;
+Widget dialogangle;
+Widget dialogteststring;
+Widget dialogtestcharacter;
+Widget dialogdevres;
+Widget dialogstroke;
+Widget dialogencfile;
+Widget dialogspace;
+Widget dialogtmatrix;
+Widget labelstatus;
+Widget fgcolorbutton;
+Widget bgcolorbutton;
+
+
+/* color setting widgets */
+Widget fgwhitebutton;
+Widget fgblackbutton;
+Widget fggraybutton;
+Widget fgredbutton;
+Widget fggreenbutton;
+Widget fgbluebutton;
+Widget bgwhitebutton;
+Widget bgblackbutton;
+Widget bggraybutton;
+Widget bgredbutton;
+Widget bggreenbutton;
+Widget bgbluebutton;
+Widget fglabel;
+Widget bglabel;
+Widget colorbox;
+Widget fgstatus;
+Widget bgstatus;
+
+
+Widget optionsbox;
+
+
+/* Commandline handling */
+char *xglyphoptions[]={"--help", /* 0 */
+ "--Help", /* 1 */
+ "--noGrid", /* 2 */
+ "--setPad", /* 3 */
+ "--logError", /* 4 */
+ "--logWarning", /* 5 */
+ "--logStatistic", /* 6 */
+ "--logDebug", /* 7 */
+ "--ignoreForceBold", /* 8 */
+ "--ignoreFamilyAlignment", /* 9 */
+ "--ignoreHinting", /* 10 */
+ "--ignoreAFM", /* 11 */
+ "--debugLine", /* 12 */
+ "--debugRegion", /* 13 */
+ "--debugPath", /* 14 */
+ "--debugFont", /* 15 */
+ "--debugHint", /* 16 */
+ "--checkPerformance", /* 17 */
+ "--checkCopyFont", /* 18 */
+ "--checkConcatGlyphs", /* 19 */
+ "--checkConcatOutlines", /* 20 */
+ "--checkBadCharHandling", /* 21 */
+ "--checkDefaultEncoding", /* 22 */
+ "--checkSmartAntialiasing", /* 23 */
+ "--checkAACaching", /* 24 */
+ "--checkSetRect", /* 25 */
+ "--cacheStrokedGlyphs", /* 26 */
+ NULL};
+int extraflags=0;
+
+/* #define SHOW_MANIPULATE_PATHS */
+#ifdef SHOW_MANIPULATE_PATHS
+void mymanipulate( long *x, long *y, int type)
+{
+ double corr;
+ double dx, dy;
+
+ dx=(double)*x;
+ dy=(double)*y;
+
+ /* we have to scale down because we deal with fractional pels */
+ /*
+ corr=0.000000000000004*dx*dx;
+ dy *=1.0+corr;
+ */
+ /*
+#define PERIOD 500.0
+ corr=65536.0*0.5*sin(2*PI/PERIOD/65536.0*dx);
+ dy +=corr*30.0;
+ */
+ *y=(long)dy;
+
+}
+#endif
+
+
+
+int main( int argc, char **argv)
+{
+
+
+ XtAppContext TopLevelApp;
+ Arg args[10];
+
+
+ int i, j, numopts=0;
+
+ Widget kerningbutton;
+ Widget ligaturbutton;
+ Widget r2lbutton;
+ Widget showcharbutton;
+ Widget showstringbutton;
+ Widget aashowcharbutton;
+ Widget aashowstringbutton;
+ Widget showcharbuttonX;
+ Widget showstringbuttonX;
+ Widget aashowcharbuttonX;
+ Widget aashowstringbuttonX;
+ Widget stringlabel;
+ Widget aboutbutton;
+ Widget opacitybutton;
+ Widget underlinebutton;
+ Widget overstrikebutton;
+ Widget overlinebutton;
+ Widget transbox;
+ Widget fonttablebutton;
+ Widget aalevelbutton;
+
+
+ Widget exitbutton;
+
+ Widget box;
+
+
+ int rasterflags=0, initflags=0, optfound;
+ int loglevel=0;
+
+ i=0;
+ j=0;
+
+ while (xglyphoptions[i++]!=NULL)
+ numopts++;
+
+ for ( i=1; i<argc; i++){
+ if (strncmp(&(argv[i][0]), "--", 2)==0){
+ j=0;
+ optfound=0;
+ while ( (j<numopts) && optfound==0){
+ if (strcmp(argv[i],xglyphoptions[j])==0){
+ switch (j){
+ case 0:
+ printusage( 8); /* Show 8 options */
+ exit(0);
+ case 1:
+ printusage( 0); /* Show all options */
+ exit(0);
+ case 2:
+ extraflags |= NO_GRID;
+ optfound=1;
+ break;
+ case 3:
+ /* We have to examine one further argument */
+ i++;
+ if (strcmp( argv[i], "8")==0)
+ t1_pad=8;
+ else if (strcmp( argv[i], "16")==0)
+ t1_pad=16;
+ else if (strcmp( argv[i], "32")==0)
+ t1_pad=32;
+ else{
+ fprintf( stderr, "xglyph: Invalid padding specification %s\n",
+ argv[i]);
+ exit(-1);
+ }
+ optfound=1;
+ break;
+ case 4:
+ loglevel = T1LOG_ERROR;
+ loglevel |= (0x01 << 8);
+ optfound=1;
+ break;
+ case 5:
+ loglevel = T1LOG_WARNING;
+ loglevel |= (0x01 << 8);
+ optfound=1;
+ break;
+ case 6:
+ loglevel = T1LOG_STATISTIC;
+ loglevel |= (0x01 << 8);
+ optfound=1;
+ break;
+ case 7:
+ loglevel = T1LOG_DEBUG;
+ loglevel |= (0x01 << 8);
+ optfound=1;
+ break;
+ case 8:
+ rasterflags |= T1_IGNORE_FORCEBOLD;
+ optfound=1;
+ break;
+ case 9:
+ rasterflags |= T1_IGNORE_FAMILYALIGNMENT;
+ optfound=1;
+ break;
+ case 10:
+ rasterflags |= T1_IGNORE_HINTING;
+ optfound=1;
+ break;
+ case 11:
+ initflags |= T1_NO_AFM;
+ optfound=1;
+ break;
+ case 12:
+ rasterflags |= T1_DEBUG_LINE;
+ optfound=1;
+ break;
+ case 13:
+ rasterflags |= T1_DEBUG_REGION;
+ optfound=1;
+ break;
+ case 14:
+ rasterflags |= T1_DEBUG_PATH;
+ optfound=1;
+ break;
+ case 15:
+ rasterflags |= T1_DEBUG_FONT;
+ optfound=1;
+ break;
+ case 16:
+ rasterflags |= T1_DEBUG_HINT;
+ optfound=1;
+ break;
+ case 17:
+ extraflags |= CHECK_PERFORMANCE;
+ optfound=1;
+ break;
+ case 18:
+ extraflags |= CHECK_T1_COPYFONT_T1_ADDFONT;
+ optfound=1;
+ break;
+ case 19:
+ extraflags |= CHECK_CONCATGLYPHS;
+ optfound=1;
+ break;
+ case 20:
+ extraflags |= CHECK_CONCATOUTLINES;
+ optfound=1;
+ break;
+ case 21:
+ extraflags |= CHECK_FOR_BAD_CHARS;
+ optfound=1;
+ break;
+ case 22:
+ extraflags |= CHECK_DEFAULT_ENCODING;
+ optfound=1;
+ break;
+ case 23:
+ extraflags |= CHECK_SMART_AA;
+ optfound=1;
+ break;
+ case 24:
+ extraflags |= CHECK_AA_CACHING;
+ optfound=1;
+ break;
+ case 25:
+ extraflags |= CHECK_SET_RECT;
+ optfound = 1;
+ break;
+ case 26:
+ extraflags |= CHECK_CACHE_STROKED;
+ optfound = 1;
+ break;
+ default: /* should not be reached */
+ break;
+ }
+ } /* end of "if (strcmp.." */
+ j++;
+ }
+ if (optfound==0){
+ fprintf( stderr, "xglyph: Unknown option %s\n",
+ argv[i]);
+ exit(-1);
+ }
+ }
+ else /* string doesn't start with "--" -> no option */
+ break;
+ }
+
+
+ /* Assign address of time parameter */
+ time_ptr_start=&time_start;
+ time_ptr_stop=&time_stop;
+
+ /* Check for environment entry. If not set, set it to current
+ directory so that configuration file is found there */
+ if (getenv("T1LIB_CONFIG")==NULL){
+ putenv( "T1LIB_CONFIG=./t1lib.config");
+ }
+
+
+ /* Set log-level: */
+ T1_SetLogLevel( loglevel & (~(0x01<<8)));
+
+
+ /* Get padding value if not set from commandline. For 32 bit architectures
+ like Intel, 16 might be the best padding default value: */
+ if (t1_pad==0)
+ t1_pad=16;
+ if (T1_SetBitmapPad( t1_pad)!=0){
+ t1_pad=T1_GetBitmapPad();
+ }
+
+
+ /* Initialize t1-library. If xglyph is called with arguments
+ that are no options, we assume that the arguments are font
+ files and ignore the fontdata base file. At this point the value of
+ "i" is the number of commandline arg that is supposed to contain a
+ fontfile name (or it is argc, if no files where specified).
+
+ Note further that "loglevel" contains (1) info whether to create a log
+ file in the first bit of the higher byte of the lower word and
+ (2) info which loglevel to set. (3) It further may contain more
+ initialization flags.
+ */
+ if ((extraflags & CHECK_AA_CACHING)){
+ loglevel |= (T1_AA_CACHING<<8);
+ }
+
+ if (i==argc){
+ if (T1_InitLib( (loglevel>>8) | initflags )==NULL){
+ fprintf(stderr,"Initialization of t1lib failed (T1_errno=%d)!\n",
+ T1_errno);
+ return(-1);
+ }
+ }
+ else{ /* There are still arguments which we interprete as fontfile names */
+ if (T1_InitLib( (loglevel>>8) | initflags | IGNORE_FONTDATABASE )==NULL){
+ fprintf(stderr,"Initialization of t1lib failed (T1_errno=%d)!\n",
+ T1_errno);
+ return(-1);
+ }
+ /* We start adding fonts as the i-th commandline arguments */
+ for ( j=i; j<argc; j++){
+ T1_AddFont( argv[j]);
+ }
+ }
+
+ /* We return if no fonts could be installed */
+ if ((j=T1_GetNoFonts())<=0){
+ fprintf(stderr,"xglyph: No fonts in database (T1_errno=%d)!\n", T1_errno);
+ return(-1);
+ }
+
+ /* Set the raster parameters */
+ T1_SetRasterFlags( rasterflags);
+
+
+ /* Load alternate encoding and associate it with filename: */
+ encstruct[0].encoding=T1_LoadEncoding(T1LIBENCFILE);
+ encstruct[0].encfilename=(char *)malloc(strlen(T1LIBENCFILE)+1);
+ strcpy( encstruct[0].encfilename, T1LIBENCFILE);
+ for ( i=1; i<MAXENCODINGS; i++){
+ encstruct[i].encoding=NULL;
+ encstruct[i].encfilename=NULL;
+ }
+
+
+ /* If requested, set a default encoding vector */
+ if (extraflags & CHECK_DEFAULT_ENCODING){
+ T1_SetDefaultEncoding( encstruct[0].encoding);
+ }
+
+
+ if( extraflags & CHECK_T1_COPYFONT_T1_ADDFONT){
+ {
+ int k;
+
+ /* The following code is to test the T1_CopyFont()-function. It
+ generates logical fonts with IDs twice the ID of the original
+ font which are then slanted by 0.3. */
+ nofonts=T1_GetNoFonts();
+ printf("Initial number of fonts: %d\n", nofonts);
+
+ for (i=0; i< nofonts; i++){
+ T1_LoadFont(i);
+ if ((k=T1_CopyFont(i))<0){
+ fprintf(stderr,"T1_CopyFont() unsuccessful (k=%d), for FontID=%d\n", k, i);
+ }else{
+ T1_SlantFont(k,0.3);
+ fprintf(stderr,"Slanted Font under FontID %d generated\n", k);
+ }
+ }
+ fprintf( stderr, "T1_AddFont() returned newID %d for fontfile %s!\n",
+ T1_AddFont( TESTFONTFILE), TESTFONTFILE);
+
+ nofonts=T1_GetNoFonts();
+ printf("Final number of fonts: %d\n", nofonts);
+ }
+ }
+
+ /* Setup arrays for the last... values */
+ nofonts=T1_GetNoFonts();
+ if ( (last_resolution=(int *) malloc ( nofonts * sizeof(int)))==NULL){
+ fprintf( stderr, "xglyph: memory allocation error\n");
+ exit(1);
+ }
+ else
+ for (i=0; i<nofonts; i++)
+ last_resolution[i]=72;
+ if ( (lastSlant=(float *) malloc ( nofonts * sizeof(float)))==NULL){
+ fprintf( stderr, "xglyph: memory allocation error\n");
+ exit(1);
+ }
+ else
+ for (i=0; i<nofonts; i++)
+ lastSlant[i]=0.0;
+ if ( (lastExtent=(float *) malloc ( nofonts * sizeof(float)))==NULL){
+ fprintf( stderr, "xglyph: memory allocation error\n");
+ exit(1);
+ }
+ else
+ for (i=0; i<nofonts; i++)
+ lastExtent[i]=1.0;
+
+ if (extraflags & CHECK_SMART_AA)
+ T1_AASetSmartMode( T1_YES);
+
+ /* If checking caching of stroked characters is enabled via command line,
+ we call T1_StrokeFont() on each font in the database. This is valid
+ here since we do not already have glyph data. */
+ if ( extraflags & CHECK_CACHE_STROKED ) {
+ for ( i=0; i<nofonts; i++) {
+ T1_LoadFont(i);
+ T1_StrokeFont( i, 1);
+ }
+ }
+
+ /* Initialize application */
+ TopLevel = XtAppInitialize(&TopLevelApp, (String) "Xglyph", (XrmOptionDescList) NULL,
+ (Cardinal) 0,
+ &argc,
+ argv,
+ (String *) NULL,
+ (ArgList) NULL,
+ (Cardinal) 0);
+ i=0;
+ XtSetArg(args[i], XtNheight, APPLICATIONHEIGHT); i++;
+ XtSetValues(TopLevel,args,i);
+
+ /* Create window for graphics output */
+ Output = XtCreatePopupShell( "Xglyph-Output", topLevelShellWidgetClass,
+ TopLevel, NULL,0);
+
+ OutputWindow = XtCreateManagedWidget("xglyph-Output",labelWidgetClass, Output,
+ NULL, 0);
+
+
+ /* Get display/screen pointer and screennumber */
+ display = XtDisplay(OutputWindow);
+ screen = XtScreen(OutputWindow);
+ screennumber = DefaultScreen(display);
+ depth = DefaultDepth(display,screennumber);
+
+
+ /* In case client and server have different endian architecture,
+ we have to care for the 16 and 32 bit aa-pixels to have the
+ correct byte order */
+ if (T1_CheckEndian()==0)
+ xglyph_byte_order=0;
+ else
+ xglyph_byte_order=1;
+
+
+ if( extraflags & CHECK_PERFORMANCE){
+ perf_pixmap=0;
+ /* The following is for testing only */
+ Output2 = XtCreatePopupShell( "Xglyph-Output2", topLevelShellWidgetClass,
+ TopLevel, NULL,0);
+
+ OutputWindow2 = XtCreateManagedWidget("xglyph-Output2",labelWidgetClass, Output2,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 800 ); i++;
+ XtSetArg( args[i], XtNheight, 600 ); i++;
+ XtSetValues(OutputWindow2,args,i);
+ }
+
+
+ /* Get colors and assign pixel values: */
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), EDITABLE_COLOR,
+ &edit_color, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "green",
+ &green, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "blue",
+ &blue, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "black",
+ &gray4, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "gray25",
+ &gray3, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "gray50",
+ &gray2, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "gray75",
+ &gray1, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "white",
+ &gray0, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "yellow",
+ &yellow, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "pink4",
+ &pink4, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "cyan",
+ &gridcolor1, &wozu);
+ XAllocNamedColor(display, DefaultColormap(display,screennumber), "magenta",
+ &gridcolor2, &wozu);
+ white=gray0;
+ black=gray4;
+ gray=gray1;
+ red=edit_color;
+ /* Fill the aacolors and aapixels-array */
+ ComputeAAColorsX( black.pixel, white.pixel, AAMAXPLANES);
+
+
+ /* Set default colors for X11 rastering functions */
+ fg=black.pixel;
+ bg=white.pixel;
+
+
+ T1_AASetBitsPerPixel(DefaultDepth(display,screennumber));
+ /* T1_LogicalPositionX( 0); */
+
+
+ /* The box-widget for all the buttons */
+ box=XtCreateManagedWidget("xglyph", boxWidgetClass, TopLevel, NULL, 0);
+
+ i=0;
+ XtSetArg(args[i], XtNheight,400); i++;
+ XtSetValues(box,args,i);
+
+
+ /* A dialogbox for the fontID-specification */
+ dialogfontid=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "FontID:"); i++;
+ XtSetArg(args[i], XtNvalue, "0"); i++;
+ XtSetValues(dialogfontid,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogfontid,"value"),args,i);
+
+
+
+ /* A dialogbox for the font-Size */
+ dialogsize=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Font-Size [bp]:"); i++;
+ XtSetArg(args[i], XtNvalue, DEFAULT_SIZE); i++;
+ XtSetValues(dialogsize,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogsize,"value"),args,i);
+
+
+
+ /* A dialogbox for the font slant specification */
+ dialogslant=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Slant:"); i++;
+ XtSetArg(args[i], XtNvalue, "0.0"); i++;
+ XtSetValues(dialogslant,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH / 2 - 8); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogslant,"value"),args,i);
+
+
+
+ /* A dialogbox for the font-extension */
+ dialogextent=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Extension:"); i++;
+ XtSetArg(args[i], XtNvalue, "1.0"); i++;
+ XtSetValues(dialogextent,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH / 2 - 8); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogextent,"value"),args,i);
+
+
+
+ /* transformation matrix dialog widget */
+ dialogtmatrix = XtCreateManagedWidget( "dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Transformation-Matrix:"); i++;
+ XtSetArg(args[i], XtNvalue, "1.0, 0.0, 0.0, 1.0"); i++;
+ XtSetValues(dialogtmatrix,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogtmatrix,"value"),args,i);
+
+
+
+ /* A dialogbox for the device resolution */
+ dialogdevres=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Res [DPI]"); i++;
+ XtSetArg(args[i], XtNvalue, "72"); i++;
+ XtSetValues(dialogdevres,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH / 2 - 8); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogdevres,"value"),args,i);
+
+
+
+ /* A dialogbox for the strokewidth */
+ dialogstroke=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "S-Width"); i++;
+ if ( extraflags & CHECK_CACHE_STROKED ) {
+ XtSetArg(args[i], XtNvalue, "10");
+ i++;
+ }
+ else {
+ XtSetArg(args[i], XtNvalue, "0");
+ i++;
+ }
+ XtSetValues(dialogstroke,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH / 2 - 8); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogstroke,"value"),args,i);
+
+
+
+ /* A dialogbox for the encoding filename */
+ dialogencfile=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Encoding-File:"); i++;
+ XtSetArg(args[i], XtNvalue, ""); i++;
+ XtSetValues(dialogencfile,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogencfile,"value"),args,i);
+
+
+
+ /* A dialogbox for the angle */
+ dialogangle=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Angle [deg]:"); i++;
+ XtSetArg(args[i], XtNvalue, "0.0"); i++;
+ XtSetValues(dialogangle,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogangle,"value"),args,i);
+
+
+
+ /* A dialogbox for the space-offset in strings */
+ dialogspace=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Space-Off [1/1000 bp]:"); i++;
+ XtSetArg(args[i], XtNvalue, "0"); i++;
+ XtSetValues(dialogspace,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogspace,"value"),args,i);
+
+
+
+ /* A dialogbox for the character */
+ dialogtestcharacter=XtCreateManagedWidget("dialog1", dialogWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNlabel, "Character (decimal):"); i++;
+ XtSetArg(args[i], XtNvalue, DEFAULT_CHAR); i++;
+ XtSetValues(dialogtestcharacter,args,i);
+ i=0;
+ XtSetArg(args[i], XtNwidth,DIALOGWIDTH); i++;
+ XtSetArg(args[i], XtNheight,DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNresize, FALSE); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(XtNameToWidget(dialogtestcharacter,"value"),args,i);
+
+
+
+ /* The box for color selecting buttons for the
+ X11-rastering functions */
+ optionsbox=XtCreateManagedWidget("box", boxWidgetClass, box, NULL, 0);
+
+ i=0;
+ XtSetArg(args[i], XtNheight, DIALOGHEIGHT); i++;
+ XtSetArg(args[i], XtNwidth, DIALOGWIDTH + 30); i++;
+ XtSetValues(optionsbox,args,i);
+ /* The toggle widget for kerning (un-)setting */
+ kerningbutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Kerning" ); i++;
+ XtSetValues(kerningbutton,args,i);
+ XtAddCallback( kerningbutton, XtNcallback,
+ (XtCallbackProc) togglekerning, (XtPointer) 0 );
+
+
+ /* The toggle widget for ligatur-detection (un-)setting */
+ ligaturbutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Ligature" ); i++;
+ XtSetValues(ligaturbutton,args,i);
+ XtAddCallback( ligaturbutton, XtNcallback,
+ (XtCallbackProc) toggleligatur, (XtPointer) 0 );
+
+
+ /* The toggle widget for the typesetting direction switch message */
+ r2lbutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "|-->" ); i++;
+ XtSetValues(r2lbutton,args,i);
+ XtAddCallback( r2lbutton, XtNcallback,
+ (XtCallbackProc) toggler2l, (XtPointer) 0 );
+
+
+ /* The toggle widget for underlining (un-)setting */
+ underlinebutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Underline" ); i++;
+ XtSetValues(underlinebutton,args,i);
+ XtAddCallback( underlinebutton, XtNcallback,
+ (XtCallbackProc) toggleunderline, (XtPointer) 0 );
+
+
+ /* The toggle widget for underlining (un-)setting */
+ overlinebutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Overline" ); i++;
+ XtSetValues(overlinebutton,args,i);
+ XtAddCallback( overlinebutton, XtNcallback,
+ (XtCallbackProc) toggleoverline, (XtPointer) 0 );
+
+
+ /* The toggle widget for underlining (un-)setting */
+ overstrikebutton = XtCreateManagedWidget("toggle", toggleWidgetClass, optionsbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Overstrike" ); i++;
+ XtSetValues(overstrikebutton,args,i);
+ XtAddCallback( overstrikebutton, XtNcallback,
+ (XtCallbackProc) toggleoverstrike, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current character using
+ the current settings */
+ showcharbutton = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 60 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "Char"); i++;
+ XtSetValues(showcharbutton,args,i);
+ XtAddCallback( showcharbutton, XtNcallback,
+ (XtCallbackProc) showchar, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current string using
+ the current settings */
+ showstringbutton = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 60 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "String"); i++;
+ XtSetValues(showstringbutton,args,i);
+ XtAddCallback( showstringbutton, XtNcallback,
+ (XtCallbackProc) showstring, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current character using
+ the current settings and antialiasing */
+ aashowcharbutton = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 120 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "AAChar"); i++;
+ XtSetValues(aashowcharbutton,args,i);
+ XtAddCallback( aashowcharbutton, XtNcallback,
+ (XtCallbackProc) aashowchar, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current string using
+ the current settings and antialiasing */
+ aashowstringbutton = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 120 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "AAString"); i++;
+ XtSetValues(aashowstringbutton,args,i);
+ XtAddCallback( aashowstringbutton, XtNcallback,
+ (XtCallbackProc) aashowstring, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current character using
+ the current settings */
+ showcharbuttonX = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 60 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "CharX"); i++;
+ XtSetValues(showcharbuttonX,args,i);
+ XtAddCallback( showcharbuttonX, XtNcallback,
+ (XtCallbackProc) showcharX, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current string using
+ the current settings */
+ showstringbuttonX = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 60 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "StringX"); i++;
+ XtSetValues(showstringbuttonX,args,i);
+ XtAddCallback( showstringbuttonX, XtNcallback,
+ (XtCallbackProc) showstringX, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current character using
+ the current settings and antialiasing */
+ aashowcharbuttonX = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 120 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "AACharX"); i++;
+ XtSetValues(aashowcharbuttonX,args,i);
+ XtAddCallback( aashowcharbuttonX, XtNcallback,
+ (XtCallbackProc) aashowcharX, (XtPointer) 0 );
+
+
+ /* The button to raster and display the current string using
+ the current settings and antialiasing */
+ aashowstringbuttonX = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 120 ); i++;
+ XtSetArg( args[i], XtNheight, ACTIONBUTTONHEIGHT ); i++;
+ XtSetArg( args[i], XtNlabel, "AAStringX"); i++;
+ XtSetValues(aashowstringbuttonX,args,i);
+ XtAddCallback( aashowstringbuttonX, XtNcallback,
+ (XtCallbackProc) aashowstringX, (XtPointer) 0 );
+
+
+ /* The box for color trasp/op and fonttable button */
+ transbox=XtCreateManagedWidget("box", boxWidgetClass, box, NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNheight,20); i++;
+ XtSetArg(args[i], XtNwidth,90); i++;
+ XtSetValues(transbox,args,i);
+
+
+ /* The button to display an AA font table */
+ fonttablebutton = XtCreateManagedWidget("Com", commandWidgetClass, transbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 15 ); i++;
+ XtSetArg( args[i], XtNlabel, "Font Table"); i++;
+ XtSetValues(fonttablebutton,args,i);
+ XtAddCallback( fonttablebutton, XtNcallback,
+ (XtCallbackProc) fonttable, (XtPointer) 0 );
+
+
+ /* The toggle widget for opacity/transparency */
+ opacitybutton = XtCreateManagedWidget("toggle", toggleWidgetClass, transbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 15 ); i++;
+ XtSetArg( args[i], XtNlabel, "Transparent" ); i++;
+ XtSetValues(opacitybutton,args,i);
+ XtAddCallback( opacitybutton, XtNcallback,
+ (XtCallbackProc) toggleopacity, (XtPointer) 0 );
+ outbg=pink4.pixel; /* the initial bgcolor for transparent mode */
+
+
+ /* The toggle widget for opacity/transparency */
+ aalevelbutton = XtCreateManagedWidget("toggle", toggleWidgetClass, transbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 15 ); i++;
+ XtSetArg( args[i], XtNlabel, "AA-Low" ); i++;
+ XtSetValues(aalevelbutton,args,i);
+ XtAddCallback( aalevelbutton, XtNcallback,
+ (XtCallbackProc) toggleaalevel, (XtPointer) 0 );
+ aalevel=T1_AA_LOW; /* the initial bgcolor for transparent mode */
+
+
+ /* The box for color selecting buttons for the
+ X11-rastering functions */
+ colorbox=XtCreateManagedWidget("box", boxWidgetClass, box, NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNheight,20); i++;
+ XtSetArg(args[i], XtNwidth,280); i++;
+ XtSetValues(colorbox,args,i);
+ /* FG-label */
+ fgstatus = XtCreateManagedWidget("label", labelWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, fg); i++;
+ XtSetValues(fgstatus,args,i);
+
+ fglabel = XtCreateManagedWidget("label", labelWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Foreground"); i++;
+ XtSetValues(fglabel,args,i);
+
+ fgwhitebutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, white.pixel); i++;
+ XtSetValues(fgwhitebutton,args,i);
+ XtAddCallback( fgwhitebutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ fgblackbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, black.pixel); i++;
+ XtSetValues(fgblackbutton,args,i);
+ XtAddCallback( fgblackbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ fggraybutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, gray.pixel); i++;
+ XtSetValues(fggraybutton,args,i);
+ XtAddCallback( fggraybutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ fgredbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, red.pixel); i++;
+ XtSetValues(fgredbutton,args,i);
+ XtAddCallback( fgredbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ fggreenbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, green.pixel); i++;
+ XtSetValues(fggreenbutton,args,i);
+ XtAddCallback( fggreenbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ fgbluebutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, blue.pixel); i++;
+ XtSetValues(fgbluebutton,args,i);
+ XtAddCallback( fgbluebutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ /* BG-label */
+ bgstatus = XtCreateManagedWidget("label", labelWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, bg); i++;
+ XtSetValues(bgstatus,args,i);
+
+ bglabel = XtCreateManagedWidget("label", labelWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "Background"); i++;
+ XtSetValues(bglabel,args,i);
+
+ bgwhitebutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, white.pixel); i++;
+ XtSetValues(bgwhitebutton,args,i);
+ XtAddCallback( bgwhitebutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ bgblackbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, black.pixel); i++;
+ XtSetValues(bgblackbutton,args,i);
+ XtAddCallback( bgblackbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ bggraybutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, gray.pixel); i++;
+ XtSetValues(bggraybutton,args,i);
+ XtAddCallback( bggraybutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ bgredbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, red.pixel); i++;
+ XtSetValues(bgredbutton,args,i);
+ XtAddCallback( bgredbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ bggreenbutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, green.pixel); i++;
+ XtSetValues(bggreenbutton,args,i);
+ XtAddCallback( bggreenbutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+ bgbluebutton = XtCreateManagedWidget("Com", commandWidgetClass, colorbox,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 20 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, ""); i++;
+ XtSetArg( args[i], XtNbackground, blue.pixel); i++;
+ XtSetValues(bgbluebutton,args,i);
+ XtAddCallback( bgbluebutton, XtNcallback,
+ (XtCallbackProc) setcolor, (XtPointer) 0 );
+
+
+
+ /* Label for the next box */
+ stringlabel=XtCreateManagedWidget("Label", labelWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNlabel, "Test-String:"); i++;
+ XtSetValues(stringlabel,args,i);
+
+
+
+
+ /* An input-box for the test-string */
+ dialogteststring=XtCreateManagedWidget("dialog1", asciiTextWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight,30); i++;
+ XtSetArg(args[i], XtNwrap, XawtextWrapLine); i++;
+ XtSetArg(args[i], XtNeditType, XawtextEdit ); i++;
+ XtSetArg(args[i], XtNforeground, edit_color.pixel); i++;
+ XtSetValues(dialogteststring,args,i);
+
+
+
+ /* Label for the next box */
+ labelstatus=XtCreateManagedWidget("Label", labelWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, "No Messages!"); i++;
+ XtSetValues(labelstatus,args,i);
+
+
+
+ /* The button to exit the program */
+ exitbutton = XtCreateManagedWidget("Com2", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 100 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNx, 0 ); i++;
+ XtSetArg( args[i], XtNy, 0 ); i++;
+ XtSetArg( args[i], XtNlabel, " Exit Program"); i++;
+ XtSetValues(exitbutton,args,i);
+ XtAddCallback( exitbutton, XtNcallback,
+ (XtCallbackProc) exitprog, (XtPointer) 0 );
+
+
+ /* The About widget for the about message */
+ aboutbutton = XtCreateManagedWidget("Com", commandWidgetClass, box,
+ NULL, 0);
+ i=0;
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "About" ); i++;
+ XtSetValues(aboutbutton,args,i);
+ XtAddCallback( aboutbutton, XtNcallback,
+ (XtCallbackProc) showabout, (XtPointer) 0 );
+
+
+ XtRealizeWidget(TopLevel);
+ XtPopup(Output,XtGrabNone);
+
+ if( extraflags & CHECK_PERFORMANCE){
+ XtPopup(Output2,XtGrabNone);
+ }
+
+
+ /* Set parameters for X11-support */
+ T1_SetX11Params( display, DefaultVisual(display, screennumber),
+ DefaultDepth( display, screennumber),
+ DefaultColormap(display, screennumber));
+
+
+ /* Create a dummy-pixmap because we need one to destroy before
+ the next is created! */
+ pixmap = XCreatePixmap(display,
+ XtWindow(OutputWindow),
+ 200,
+ 200,
+ DefaultDepth(display,screennumber)
+ );
+
+
+
+ XtAppMainLoop(TopLevelApp);
+
+ return(0);
+
+}
+
+
+/* Compute the BBox of a rotated box: */
+BBox ComputeRotBBox( BBox inbox, float angle)
+{
+
+ int i;
+ BBox resultbox={ 0, 0, 0, 0};
+ struct point
+ {
+ double x;
+ double y;
+ } p[4], P[4];
+
+ double sinalpha, cosalpha;
+
+ sinalpha=sin((double)angle*PI/180);
+ cosalpha=cos((double)angle*PI/180);
+
+ /* initialize points */
+ p[0].x=(double) inbox.llx;
+ p[0].y=(double) inbox.lly;
+ p[1].x=(double) inbox.urx;
+ p[1].y=(double) inbox.lly;
+ p[2].x=(double) inbox.urx;
+ p[2].y=(double) inbox.ury;
+ p[3].x=(double) inbox.llx;
+ p[3].y=(double) inbox.ury;
+
+ /*
+ fprintf( stderr, "InBox: (%f,%f), (%f,%f), (%f,%f), (%f,%f)\n",
+ p[0].x, p[0].y, p[1].x, p[1].y, p[2].x, p[2].y,
+ p[3].x, p[3].y);
+ */
+ /* Compute tranformed points */
+ P[0].x=p[0].x*cosalpha-p[0].y*sinalpha;
+ P[0].y=p[0].x*sinalpha+p[0].y*cosalpha;
+ P[1].x=p[1].x*cosalpha-p[1].y*sinalpha;
+ P[1].y=p[1].x*sinalpha+p[1].y*cosalpha;
+ P[2].x=p[2].x*cosalpha-p[2].y*sinalpha;
+ P[2].y=p[2].x*sinalpha+p[2].y*cosalpha;
+ P[3].x=p[3].x*cosalpha-p[3].y*sinalpha;
+ P[3].y=p[3].x*sinalpha+p[3].y*cosalpha;
+ /*
+ fprintf( stderr, "RotPoints: (%f,%f), (%f,%f), (%f,%f), (%f,%f)\n",
+ P[0].x, P[0].y, P[1].x, P[1].y, P[2].x, P[2].y,
+ P[3].x, P[3].y);
+ */
+
+ /* Get BBox: */
+ for (i=0; i<4; i++){
+ if (P[i].x < (float) resultbox.llx)
+ resultbox.llx=(int) floor(P[i].x +0.5);
+ if (P[i].x > (float) resultbox.urx)
+ resultbox.urx=(int) floor(P[i].x +0.5);
+ if (P[i].y < (float) resultbox.lly)
+ resultbox.lly=(int) floor(P[i].y +0.5);
+ if (P[i].y > (float) resultbox.ury)
+ resultbox.ury=(int) floor(P[i].y +0.5);
+ }
+
+ return(resultbox);
+
+}
+
+
+
+
+void exitprog(Widget exitbutton, XtPointer client_data , XtPointer call_data)
+{
+
+ int i;
+
+ for (i=0; i< T1_GetNoFonts(); i++){
+ /* printf("Enc-Scheme=%s\n", T1_GetEncodingScheme( i));*/
+ ;
+ }
+
+ T1_CloseLib();
+
+ exit(0);
+}
+
+
+void togglekerning( Widget kerningbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues(kerningbutton,args,1);
+
+ if ((state))
+ Modflag |= T1_KERNING;
+ else
+ Modflag &= ~T1_KERNING;
+
+}
+
+
+
+void toggleligatur( Widget ligaturbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues(ligaturbutton,args,1);
+
+ LigDetect=state;
+
+}
+
+
+
+void toggler2l( Widget r2lbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues(r2lbutton,args,1);
+
+ if ((state))
+ Modflag |= T1_RIGHT_TO_LEFT;
+ else
+ Modflag &= ~T1_RIGHT_TO_LEFT;
+
+ /* Invert state */
+ i=0;
+ if (state){
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "<--|" ); i++;
+ }
+ else{
+ XtSetArg( args[i], XtNwidth, 55 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+ XtSetArg( args[i], XtNlabel, "|-->" ); i++;
+ }
+ XtSetValues(r2lbutton,args,i);
+}
+
+
+
+void toggleunderline( Widget underlinebutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues(underlinebutton,args,1);
+
+ if ((state))
+ Modflag |= T1_UNDERLINE;
+ else
+ Modflag &= ~T1_UNDERLINE;
+
+}
+
+
+
+void toggleoverline( Widget overlinebutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues( overlinebutton,args,1);
+
+ if ((state))
+ Modflag |= T1_OVERLINE;
+ else
+ Modflag &= ~T1_OVERLINE;
+
+}
+
+
+
+void toggleoverstrike( Widget overstrikebutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues( overstrikebutton,args,1);
+
+ if ((state))
+ Modflag |= T1_OVERSTRIKE;
+ else
+ Modflag &= ~T1_OVERSTRIKE;
+
+}
+
+
+
+void toggleopacity( Widget opacitybutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues(opacitybutton,args,1);
+
+ i=0;
+ XtSetArg( args[i], XtNstate, state); i++;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 20 ); i++;
+
+ Opacity=state;
+
+ /* Invert state */
+ if (state){
+ XtSetArg( args[i], XtNlabel, "Opaque" ); i++;
+ XtSetValues(opacitybutton,args,i);
+ outbg=bg;
+ }
+ else{
+ XtSetArg( args[i], XtNlabel, "Transparent" ); i++;
+ XtSetValues(opacitybutton,args,i);
+ outbg=pink4.pixel;
+ }
+
+}
+
+
+
+/* Toggle the antialiasing level */
+void toggleaalevel( Widget aalevelbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ char state=0;
+ Arg args[10];
+
+
+ /* Get state of toggle Button: */
+ i=0;
+ XtSetArg(args[i], XtNstate, &state); i++;
+ XtGetValues( aalevelbutton,args,1);
+
+ i=0;
+ XtSetArg( args[i], XtNstate, state); i++;
+ XtSetArg( args[i], XtNwidth, 80 ); i++;
+ XtSetArg( args[i], XtNheight, 15 ); i++;
+
+
+ /* Invert state */
+ if (state){
+ XtSetArg( args[i], XtNlabel, "AA-High" ); i++;
+ XtSetValues(aalevelbutton,args,i);
+ aalevel=T1_AA_HIGH;
+ }
+ else{
+ XtSetArg( args[i], XtNlabel, "AA-Low" ); i++;
+ XtSetValues(aalevelbutton,args,i);
+ aalevel=T1_AA_LOW;
+ }
+
+}
+
+
+
+/* Set a new fore/background color */
+void setcolor( Widget widget, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ Arg args[10];
+
+ /* foreground colors */
+ if (widget==fgwhitebutton){
+ fg=white.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ if (widget==fgblackbutton){
+ fg=black.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ if (widget==fggraybutton){
+ fg=gray.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ if (widget==fgredbutton){
+ fg=red.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ if (widget==fggreenbutton){
+ fg=green.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ if (widget==fgbluebutton){
+ fg=blue.pixel;
+ i=0;
+ XtSetArg( args[i], XtNbackground, fg ); i++;
+ XtSetValues(fgstatus,args,i);
+ return;
+ }
+ /* background colors */
+ if (widget==bgwhitebutton){
+ bg=white.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ if (widget==bgblackbutton){
+ bg=black.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ if (widget==bggraybutton){
+ bg=gray.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ if (widget==bgredbutton){
+ bg=red.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ if (widget==bggreenbutton){
+ bg=green.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ if (widget==bgbluebutton){
+ bg=blue.pixel;
+ if (Opacity)
+ outbg=bg;
+ i=0;
+ XtSetArg( args[i], XtNbackground, bg ); i++;
+ XtSetValues(bgstatus,args,i);
+ return;
+ }
+ /* we shouldn't get here */
+ return;
+
+}
+
+
+
+void showchar( Widget showcharbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i, j;
+ Arg args[10];
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogtestcharacter), "%d", &TestChar);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ XSetForeground( display, DefaultGC( display, screennumber), black.pixel);
+ XSetBackground( display, DefaultGC( display, screennumber), white.pixel);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ gettimeofday(time_ptr_start, void_ptr);
+ if ( extraflags & CHECK_SET_RECT )
+ glyph=T1_SetRect( FontID, Size, 1000.0, 1000.0, matrixP);
+ else
+ glyph=T1_SetChar( FontID, TestChar, Size, matrixP);
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if (glyph==NULL){
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+
+ height=glyph->metrics.ascent - glyph->metrics.descent;
+ overallwidth=glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing;
+ width=overallwidth;
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nCharactername: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_GetCharName(FontID,(char)TestChar),
+ T1_errno);
+
+ if (glyph->bits !=NULL) {
+ ximage=XCreateImage( display,
+ DefaultVisual(display, screennumber),
+ 1, /* depths for bitmap is 1 */
+ XYBitmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ glyph->bits,
+ width,
+ height,
+ t1_pad, /* lines padded to bytes */
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ /* Force bit and byte order */
+ ximage->bitmap_bit_order=0;
+ ximage->byte_order=0;
+ XFreePixmap(display,pixmap);
+ pixmap = XCreatePixmap(display,
+ XtWindow(TopLevel),
+ width,
+ height,
+ DefaultDepth(display,screennumber)
+ );
+ XPutImage(display,
+ pixmap,
+ DefaultGC( display, screennumber),
+ ximage,
+ 0,
+ 0,
+ 0,
+ 0,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ }
+
+
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel(display,screennumber)); i++;
+ XtSetArg( args[i], XtNforeground, BlackPixel(display,screennumber)); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetValues(Output ,args,i);
+
+ glyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+}
+
+
+
+void showstring( Widget showstringbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i,j,k,l,m,none_found;
+ Arg args[10];
+ char *theString='\0';
+ char *ligtheString='\0';
+ char *succs, *ligs;
+ char buf_char;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogspace),"%ld", &Space);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNstring, &theString); i++;
+ XtGetValues(dialogteststring,args,i);
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Now comes the ligatur handling */
+ if (strcmp(theString,"")==0)
+ theString=(char *) TestString;
+ i=strlen(theString);
+ ligtheString=(char *)malloc((i+1)*sizeof(char));
+ if (LigDetect){
+ for (j=0,m=0;j<i;j++,m++){ /* Loop through the characters */
+ if ((k=T1_QueryLigs( FontID, theString[j], &succs, &ligs))>0){
+ buf_char=theString[j];
+ while (k>0){
+ none_found=1;
+ for (l=0;l<k;l++){ /* Loop through the ligatures */
+ if (succs[l]==theString[j+1]){
+ buf_char=ligs[l];
+ j++;
+ none_found=0;
+ break;
+ }
+ }
+ if (none_found)
+ break;
+ k=T1_QueryLigs( FontID, buf_char, &succs, &ligs);
+ }
+ ligtheString[m]=buf_char;
+ }
+ else{ /* There are no ligatures */
+ ligtheString[m]=theString[j];
+ }
+ }
+ ligtheString[m]=0;
+ }
+ else {
+ strcpy(ligtheString,theString);
+ }
+
+ /*
+ {
+ METRICSINFO metrics;
+
+ metrics=T1_GetMetricsInfo(FontID,(char *)ligtheString,0,Space,(Modflag & T1_KERNING));
+ printf("String's width: %d\n", metrics.width);
+ printf("String's BBox: llx = %d\n", metrics.bbox.llx);
+ printf(" lly = %d\n", metrics.bbox.lly);
+ printf(" urx = %d\n", metrics.bbox.urx);
+ printf(" ury = %d\n", metrics.bbox.ury);
+ printf("Number of chars in string: %d\n", metrics.numchars);
+ for (i=0;i<metrics.numchars;i++)
+ printf("Position of %d. character in string: %d afm-units\n", i+1, metrics.charpos[i]);
+ }
+ */
+
+ /*
+ {
+ int i,j;
+ T1_COMP_CHAR_INFO *ccd;
+ T1_COMP_PIECE *cp;
+
+ printf("Number of composite characters in font: %d\n",
+ j=T1_GetNoCompositeChars(FontID));
+ for (i=0; i<j; i++) {
+ ccd=T1_GetCompCharDataByIndex( FontID, i);
+ if (ccd==NULL) {
+ printf("AFM-ind=%d, ccd=%p, T1_errno=%d\n", i, ccd, T1_errno);
+ T1_errno=0;
+ }
+ else {
+ printf( "AFM-ind=%d: Compchar %s (%d), has %d pieces:\n",
+ i,
+ ccd->compchar > -1 ? T1_GetCharName( FontID, ccd->compchar) : "not_enc",
+ ccd->compchar,
+ ccd->numPieces);
+
+ printf( " basechar %s (%d)\n",
+ ccd->pieces[0].piece > -1 ? T1_GetCharName( FontID, ccd->pieces[0].piece) : "not_enc",
+ ccd->pieces[0].piece);
+ printf( " accent %s (%d)\n",
+ ccd->pieces[1].piece > -1 ? T1_GetCharName( FontID, ccd->pieces[1].piece) : "not_enc",
+ ccd->pieces[1].piece);
+ }
+ T1_FreeCompCharData( ccd);
+ }
+
+ }
+ */
+
+
+
+ XSetForeground( display, DefaultGC( display, screennumber), black.pixel);
+ XSetBackground( display, DefaultGC( display, screennumber), white.pixel);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ gettimeofday(time_ptr_start, void_ptr);
+
+ if( extraflags & CHECK_CONCATGLYPHS){
+ glyph2=T1_SetString(FontID,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ glyph1=T1_CopyGlyph( glyph2);
+ glyph2=T1_SetString(FontID+1,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ glyph=T1_ConcatGlyphs( glyph1, glyph2, 0, 0, Modflag);
+ }
+ else if( extraflags & CHECK_CONCATOUTLINES){
+ {
+ T1_OUTLINE *path=NULL;
+ path=T1_GetStringOutline(FontID,(char *)ligtheString,
+ 0,Space,Modflag,Size,matrixP);
+ if (path==NULL){
+ return;
+ }
+#ifdef SHOW_MANIPULATE_PATHS
+ T1_AbsolutePath( path);
+ T1_ManipulatePath( path, &mymanipulate);
+ T1_RelativePath( path);
+#else
+ T1_ConcatOutlines( path,
+ T1_GetStringOutline(FontID+1,(char *)ligtheString,
+ 0,Space,Modflag,Size,matrixP));
+#endif
+ glyph=T1_FillOutline( path, Modflag);
+ }
+ }
+ else{
+ if( extraflags & CHECK_FOR_BAD_CHARS){
+ sscanf( XawDialogGetValueString(dialogtestcharacter), "%d", &TestChar);
+ ligtheString[strlen(ligtheString)/2]=(unsigned char) TestChar;
+ }
+ glyph=T1_SetString(FontID,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ }
+
+
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ free(ligtheString);
+
+ if ( glyph ==NULL ) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+
+ height=glyph->metrics.ascent - glyph->metrics.descent;
+ overallwidth=glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing;
+ width=overallwidth;
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_errno);
+
+ if (glyph->bits != NULL) {
+ ximage=XCreateImage( display,
+ DefaultVisual(display, screennumber),
+ 1, /* depths for bitmap is 1 */
+ XYBitmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ glyph->bits,
+ width,
+ height,
+ t1_pad, /* lines padded to bytes */
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ /* Force bit and byte order */
+ ximage->bitmap_bit_order=LSBFirst;
+ ximage->byte_order=LSBFirst;
+ XFreePixmap(display,pixmap);
+ pixmap = XCreatePixmap(display,
+ XtWindow(TopLevel),
+ width,
+ height,
+ DefaultDepth(display,screennumber)
+ );
+ XPutImage(display,
+ pixmap,
+ DefaultGC( display, screennumber),
+ ximage,
+ 0,
+ 0,
+ 0,
+ 0,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ }
+
+
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel(display,screennumber)); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel(display,screennumber)); i++;
+ XtSetValues(Output ,args,i);
+
+ glyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+}
+
+
+
+void aashowchar( Widget showcharbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i, j;
+ Arg args[10];
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogtestcharacter), "%d", &TestChar);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ /* Set the colors for Anti-Aliasing */
+ T1_AASetGrayValues( aapixels[0], /* white */
+ aapixels[4],
+ aapixels[8],
+ aapixels[12],
+ aapixels[16] ); /* black */
+ T1_AAHSetGrayValues( aapixels);
+ T1_AANSetGrayValues( aapixels[0], aapixels[16]);
+ gettimeofday(time_ptr_start, void_ptr);
+ if ( extraflags & CHECK_SET_RECT )
+ glyph=T1_AASetRect( FontID, Size, 1000.0, 1000.0, matrixP);
+ else
+ glyph=T1_AASetChar( FontID, (char)TestChar, Size, matrixP);
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if (glyph==NULL) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+
+ height=glyph->metrics.ascent - glyph->metrics.descent;
+ overallwidth=glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing;
+ width=overallwidth;
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nCharactername: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_GetCharName(FontID,(char)TestChar),
+ T1_errno);
+
+
+ /*
+ printf("glyph->bits=%u\n", glyph->bits);
+ printf("glyph->metrics.leftSideBearing=%u\n", glyph->metrics.leftSideBearing);
+ printf("glyph->metrics.rightSideBearing=%u\n", glyph->metrics.rightSideBearing);
+ printf("glyph->metrics.advanceX=%u\n", glyph->metrics.advanceX);
+ printf("glyph->metrics.ascent=%u\n", glyph->metrics.ascent);
+ printf("glyph->metrics.descent=%u\n", glyph->metrics.descent);
+ printf("glyph->pFontCacheInfo=%u\n", glyph->pFontCacheInfo);
+ */
+
+ if (glyph->bits != NULL) {
+ ximage=XCreateImage( display,
+ DefaultVisual(display, screennumber),
+ DefaultDepth(display,screennumber), /* depths for bitmap is 1 */
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ glyph->bits,
+ width,
+ height,
+ t1_pad, /* lines padded to bytes */
+ 0 /*PAD(width,8)/8*/ /* number of bytes per line */
+ );
+ ximage->byte_order=xglyph_byte_order;
+ XFreePixmap(display,pixmap);
+ pixmap = XCreatePixmap(display,
+ XtWindow(TopLevel),
+ width,
+ height,
+ DefaultDepth(display,screennumber) /* 8 */ /* depth */
+ );
+ XPutImage(display,
+ pixmap,
+ DefaultGC( display, screennumber),
+ ximage,
+ 0,
+ 0,
+ 0,
+ 0,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel(display,screennumber)); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetValues(Output ,args,i);
+
+ glyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+}
+
+
+
+void aashowstring( Widget showstringbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i,j,k,l,m,none_found;
+ Arg args[10];
+ char *theString='\0';
+ char *ligtheString='\0';
+ char *succs, *ligs;
+ char buf_char;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogspace),"%ld", &Space);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNstring, &theString); i++;
+ XtGetValues(dialogteststring,args,i);
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Now comes the ligatur handling */
+ if (strcmp(theString,"")==0)
+ theString=(char *) TestString;
+ i=strlen(theString);
+ ligtheString=(char *)malloc((i+1)*sizeof(char));
+ if (LigDetect){
+ for (j=0,m=0;j<i;j++,m++){ /* Loop through the characters */
+ if ((k=T1_QueryLigs( FontID, theString[j], &succs, &ligs))>0){
+ buf_char=theString[j];
+ while (k>0){
+ none_found=1;
+ for (l=0;l<k;l++){ /* Loop through the ligatures */
+ if (succs[l]==theString[j+1]){
+ buf_char=ligs[l];
+ j++;
+ none_found=0;
+ break;
+ }
+ }
+ if (none_found)
+ break;
+ k=T1_QueryLigs( FontID, buf_char, &succs, &ligs);
+ }
+ ligtheString[m]=buf_char;
+ }
+ else{ /* There are no ligatures */
+ ligtheString[m]=theString[j];
+ }
+ }
+ ligtheString[m]=0;
+ }
+ else {
+ strcpy(ligtheString,theString);
+ }
+
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ /* Set the colors for Anti-Aliasing */
+ T1_AASetGrayValues( aapixels[0], /* white */
+ aapixels[4],
+ aapixels[8],
+ aapixels[12],
+ aapixels[16] ); /* black */
+ T1_AAHSetGrayValues( aapixels);
+ T1_AANSetGrayValues( aapixels[0], aapixels[16]);
+ gettimeofday(time_ptr_start, void_ptr);
+
+ if( extraflags & CHECK_CONCATGLYPHS){
+ glyph2=T1_AASetString(FontID,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ glyph1=T1_CopyGlyph( glyph2);
+ glyph2=T1_AASetString(FontID+1,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ glyph=T1_ConcatGlyphs( glyph1, glyph2, 0, 0, Modflag);
+ }
+ else if( extraflags & CHECK_CONCATOUTLINES){
+ {
+ T1_OUTLINE *path=NULL;
+ path=T1_GetStringOutline(FontID,(char *)ligtheString,
+ 0,Space,Modflag,Size,matrixP);
+ T1_ConcatOutlines( path,
+ T1_GetMoveOutline( FontID, 1000, 0, Modflag, Size, matrixP));
+ T1_ConcatOutlines( path,
+ T1_GetStringOutline(FontID+1,(char *)ligtheString,
+ 0,Space,Modflag,Size,matrixP));
+ glyph=T1_AAFillOutline( path, Modflag);
+ }
+ }
+ else{
+ glyph=T1_AASetString(FontID,(char *)ligtheString,0,Space,Modflag,Size,matrixP);
+ }
+
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ free(ligtheString);
+
+
+ if ( glyph == NULL){
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ height=glyph->metrics.ascent - glyph->metrics.descent;
+ overallwidth=glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing;
+ width=overallwidth;
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_errno);
+
+
+ /*
+ printf("glyph->bits=%u\n", glyph->bits);
+ printf("glyph->metrics.leftSideBearing=%u\n", glyph->metrics.leftSideBearing);
+ printf("glyph->metrics.rightSideBearing=%u\n", glyph->metrics.rightSideBearing);
+ printf("glyph->metrics.advanceX=%u\n", glyph->metrics.advanceX);
+ printf("glyph->metrics.ascent=%u\n", glyph->metrics.ascent);
+ printf("glyph->metrics.descent=%u\n", glyph->metrics.descent);
+ printf("glyph->pFontCacheInfo=%u\n", glyph->pFontCacheInfo);
+ */
+
+ if (glyph->bits != NULL) {
+ ximage=XCreateImage( display,
+ DefaultVisual(display, screennumber),
+ DefaultDepth(display,screennumber),
+ ZPixmap, /* XYBitmap or XYPixmap */
+ 0, /* No offset */
+ glyph->bits,
+ width,
+ height,
+ t1_pad, /* lines padded to bytes */
+ 0 /* number of bytes per line */
+ );
+ ximage->byte_order=xglyph_byte_order;
+ XFreePixmap(display,pixmap);
+ pixmap = XCreatePixmap(display,
+ XtWindow(TopLevel),
+ width,
+ height,
+ DefaultDepth(display,screennumber)
+ );
+ XPutImage(display,
+ pixmap,
+ DefaultGC( display, screennumber),
+ ximage,
+ 0,
+ 0,
+ 0,
+ 0,
+ width,
+ height
+ );
+ XDestroyImage(ximage);
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel( display, screennumber)); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, height + DOUBLEMARGIN); i++;
+ if (glyph->bits != NULL) {
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ }
+ else {
+ XtSetArg( args[i], XtNbitmap, 0); i++;
+ }
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, WhitePixel( display, screennumber)); i++;
+ XtSetValues(Output ,args,i);
+
+ glyph->bits=NULL; /* Since XDestroyImage() free's this also! */
+}
+
+
+
+void showcharX( Widget showcharbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i, j;
+ Arg args[10];
+ int tmp_width, tmp_height;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogtestcharacter), "%d", &TestChar);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ tmp_width=2 * XOUTPUT_HALFHSIZE;
+ tmp_height=2 * XOUTPUT_HALFVSIZE;
+
+ if (tmp_pixmap==0)
+ tmp_pixmap=XCreatePixmap( display,
+ XtWindow(TopLevel),
+ tmp_width,
+ tmp_height,
+ depth
+ );
+ /* Put some background in pixmap for demonstration of transparent-mode: */
+ if (Opacity==0){
+ XSetForeground( display, DefaultGC( display, screennumber), pink4.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ XSetForeground( display, DefaultGC( display, screennumber), yellow.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ tmp_width/4, tmp_height/4, tmp_width/2, tmp_height/2);
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ }
+ else{
+ XSetForeground( display, DefaultGC( display, screennumber), bg);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ }
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ XSetBackground( display, DefaultGC( display, screennumber), bg);
+ /* Synchronize display in order to make the time measurement more acurate */
+ XSync( display, True);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ gettimeofday(time_ptr_start, void_ptr);
+ if ( extraflags & CHECK_SET_RECT )
+ glyph=T1_SetRectX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE, /* x_dest, y_dest */
+ FontID, Size, 1000.0, 1000.0, matrixP);
+ else
+ glyph=T1_SetCharX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE, /* x_dest, y_dest */
+ FontID, TestChar, Size, matrixP);
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if ((extraflags & NO_GRID)==0){
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor1.pixel);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE, 0, /* X1, Y1 */
+ XOUTPUT_HALFHSIZE, 2 * XOUTPUT_HALFVSIZE);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, XOUTPUT_HALFVSIZE, /* X1, Y1 */
+ 2 * XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE);
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor2.pixel);
+ if (glyph!=NULL){
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX - CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX + CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY - CROSS_SIZE,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY + CROSS_SIZE);
+ }
+ }
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+
+ /* Check for errors */
+ if (glyph==NULL) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nCharactername: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_GetCharName(FontID,(char)TestChar),
+ T1_errno);
+
+ /* Finally, set the resources: */
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetValues(Output ,args,i);
+
+}
+
+
+
+void showstringX( Widget showstringbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i,j,k,l,m,none_found;
+ Arg args[10];
+ int tmp_width, tmp_height;
+
+ char *theString='\0';
+ char *ligtheString='\0';
+ char *succs, *ligs;
+ char buf_char;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogspace),"%ld", &Space);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNstring, &theString); i++;
+ XtGetValues(dialogteststring,args,i);
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Now comes the ligatur handling */
+ if (strcmp(theString,"")==0)
+ theString=(char *) TestString;
+ i=strlen(theString);
+ ligtheString=(char *)malloc((i+1)*sizeof(char));
+ if (LigDetect){
+ for (j=0,m=0;j<i;j++,m++){ /* Loop through the characters */
+ if ((k=T1_QueryLigs( FontID, theString[j], &succs, &ligs))>0){
+ buf_char=theString[j];
+ while (k>0){
+ none_found=1;
+ for (l=0;l<k;l++){ /* Loop through the ligatures */
+ if (succs[l]==theString[j+1]){
+ buf_char=ligs[l];
+ j++;
+ none_found=0;
+ break;
+ }
+ }
+ if (none_found)
+ break;
+ k=T1_QueryLigs( FontID, buf_char, &succs, &ligs);
+ }
+ ligtheString[m]=buf_char;
+ }
+ else{ /* There are no ligatures */
+ ligtheString[m]=theString[j];
+ }
+ }
+ ligtheString[m]=0;
+ }
+ else {
+ strcpy(ligtheString,theString);
+ }
+
+ tmp_width=2 * XOUTPUT_HALFHSIZE;
+ tmp_height=2 * XOUTPUT_HALFVSIZE;
+
+ if (tmp_pixmap==0)
+ tmp_pixmap=XCreatePixmap( display,
+ XtWindow(TopLevel),
+ tmp_width,
+ tmp_height,
+ depth
+ );
+ /* Put some background in pixmap for demonstration of transparent-mode: */
+ if (Opacity==0){
+ XSetForeground( display, DefaultGC( display, screennumber), pink4.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ XSetForeground( display, DefaultGC( display, screennumber), yellow.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ tmp_width/4, tmp_height/4, tmp_width/2, tmp_height/2);
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ }
+ else{
+ XSetForeground( display, DefaultGC( display, screennumber), bg);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ }
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ XSetBackground( display, DefaultGC( display, screennumber), bg);
+ /* Synchronize display in order to make the time measurement more acurate */
+ XSync( display, True);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Draw the string into temporary pixmap */
+ gettimeofday(time_ptr_start, void_ptr);
+
+ if( extraflags & CHECK_PERFORMANCE){
+ j=0;
+ for (i=0; j<600; i++){
+ j=(int)(Size*1.2*i);
+ glyph=T1_SetStringX( XtWindow(OutputWindow2), DefaultGC( display, screennumber), Opacity,
+ 0, j, /* x_dest, y_dest */
+ FontID, (char *)ligtheString,
+ 0, Space, Modflag, Size, matrixP);
+ }
+ }
+ else{
+ glyph=T1_SetStringX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE,
+ FontID, (char *)ligtheString,
+ 0, Space, Modflag, Size, matrixP);
+ }
+
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if ((extraflags & NO_GRID)==0){
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor1.pixel);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE, 0, /* X1, Y1 */
+ XOUTPUT_HALFHSIZE, 2 * XOUTPUT_HALFVSIZE);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, XOUTPUT_HALFVSIZE, /* X1, Y1 */
+ 2 * XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE);
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor2.pixel);
+ if (glyph!=NULL){
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX - CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX + CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY - CROSS_SIZE,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY + CROSS_SIZE);
+ }
+ }
+
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+
+ /* Free the ligature-converted string */
+ free(ligtheString);
+
+ /* Check for errors */
+ if (glyph==NULL) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_errno);
+
+
+ /* Finally, set resources */
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(Output ,args,i);
+
+}
+
+
+
+void aashowcharX( Widget showcharbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i, j;
+ Arg args[10];
+ int tmp_width, tmp_height;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogtestcharacter), "%d", &TestChar);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ tmp_width=2 * XOUTPUT_HALFHSIZE;
+ tmp_height=2 * XOUTPUT_HALFVSIZE;
+
+ if (tmp_pixmap==0)
+ tmp_pixmap=XCreatePixmap( display,
+ XtWindow(TopLevel),
+ tmp_width,
+ tmp_height,
+ depth
+ );
+ /* Put some background in pixmap for demonstration of transparent-mode: */
+ if (Opacity==0){
+ XSetForeground( display, DefaultGC( display, screennumber), pink4.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ XSetForeground( display, DefaultGC( display, screennumber), yellow.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ tmp_width/4, tmp_height/4, tmp_width/2, tmp_height/2);
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ }
+ else{
+ XSetForeground( display, DefaultGC( display, screennumber), bg);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ }
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ XSetBackground( display, DefaultGC( display, screennumber), bg);
+ /* Synchronize display in order to make the time measurement more acurate */
+ XSync( display, True);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ gettimeofday(time_ptr_start, void_ptr);
+ if ( extraflags & CHECK_SET_RECT )
+ glyph=T1_AASetRectX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE, /* x_dest, y_dest */
+ FontID, Size, 1000.0, 1000.0, matrixP);
+ else
+ glyph=T1_AASetCharX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE, /* x_dest, y_dest */
+ FontID, TestChar, Size, matrixP);
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if ((extraflags & NO_GRID)==0){
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor1.pixel);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE, 0, /* X1, Y1 */
+ XOUTPUT_HALFHSIZE, 2 * XOUTPUT_HALFVSIZE);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, XOUTPUT_HALFVSIZE, /* X1, Y1 */
+ 2 * XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE);
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor2.pixel);
+ if (glyph!=NULL){
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX - CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX + CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY - CROSS_SIZE,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY + CROSS_SIZE);
+ }
+ }
+
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+
+ /* Check for errors */
+ if (glyph==NULL) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nCharactername: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_GetCharName(FontID,(char)TestChar),
+ T1_errno);
+
+ /* Finally, set the resources: */
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetValues(Output ,args,i);
+
+}
+
+
+
+void aashowstringX( Widget showstringbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i,j,k,l,m,none_found;
+ Arg args[10];
+ int tmp_width, tmp_height;
+
+ char *theString='\0';
+ char *ligtheString='\0';
+ char *succs, *ligs;
+ char buf_char;
+
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogspace),"%ld", &Space);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ if (CheckTransform()==0 && Angle==0.0){
+ matrixP=NULL;
+ }
+ else{
+ matrixP=T1_RotateMatrix( &matrix, Angle);
+ }
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)!=0){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ else
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ i=0;
+ XtSetArg(args[i], XtNstring, &theString); i++;
+ XtGetValues(dialogteststring,args,i);
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Now comes the ligatur handling */
+ if (strcmp(theString,"")==0)
+ theString=(char *) TestString;
+ i=strlen(theString);
+ ligtheString=(char *)malloc((i+1)*sizeof(char));
+ if (LigDetect){
+ for (j=0,m=0;j<i;j++,m++){ /* Loop through the characters */
+ if ((k=T1_QueryLigs( FontID, theString[j], &succs, &ligs))>0){
+ buf_char=theString[j];
+ while (k>0){
+ none_found=1;
+ for (l=0;l<k;l++){ /* Loop through the ligatures */
+ if (succs[l]==theString[j+1]){
+ buf_char=ligs[l];
+ j++;
+ none_found=0;
+ break;
+ }
+ }
+ if (none_found)
+ break;
+ k=T1_QueryLigs( FontID, buf_char, &succs, &ligs);
+ }
+ ligtheString[m]=buf_char;
+ }
+ else{ /* There are no ligatures */
+ ligtheString[m]=theString[j];
+ }
+ }
+ ligtheString[m]=0;
+ }
+ else {
+ strcpy(ligtheString,theString);
+ }
+
+ tmp_width=2 * XOUTPUT_HALFHSIZE;
+ tmp_height=2 * XOUTPUT_HALFVSIZE;
+
+ if (tmp_pixmap==0)
+ tmp_pixmap=XCreatePixmap( display,
+ XtWindow(TopLevel),
+ tmp_width,
+ tmp_height,
+ depth
+ );
+
+ /* Put some background in pixmap for demonstration of transparent-mode: */
+ if (Opacity==0){
+ XSetForeground( display, DefaultGC( display, screennumber), pink4.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ XSetForeground( display, DefaultGC( display, screennumber), yellow.pixel);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ tmp_width/4, tmp_height/4, tmp_width/2, tmp_height/2);
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ }
+ else{
+ XSetForeground( display, DefaultGC( display, screennumber), bg);
+ XFillRectangle( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, 0, tmp_width, tmp_height);
+ }
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ XSetBackground( display, DefaultGC( display, screennumber), bg);
+ /* Synchronize display in order to make the time measurement more acurate */
+ XSync( display, True);
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ /* Draw the string into temporary pixmap */
+ gettimeofday(time_ptr_start, void_ptr);
+
+ if( extraflags & CHECK_PERFORMANCE){
+ j=0;
+ for (i=0; j<600; i++){
+ j=(int)(Size*1.2*i);
+ glyph=T1_AASetStringX( XtWindow(OutputWindow2), DefaultGC( display, screennumber), Opacity,
+ 0, j, /* x_dest, y_dest */
+ FontID, (char *)ligtheString,
+ 0, Space, Modflag, Size, matrixP);
+ }
+ }
+ else{
+ glyph=T1_AASetStringX( tmp_pixmap, DefaultGC( display, screennumber), Opacity,
+ XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE, /* x_dest, y_dest */
+ FontID, (char *)ligtheString,
+ 0, Space, Modflag, Size, matrixP);
+ }
+
+ gettimeofday(time_ptr_stop, void_ptr);
+
+ if ((extraflags & NO_GRID)==0){
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor1.pixel);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE, 0, /* X1, Y1 */
+ XOUTPUT_HALFHSIZE, 2 * XOUTPUT_HALFVSIZE);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ 0, XOUTPUT_HALFVSIZE, /* X1, Y1 */
+ 2 * XOUTPUT_HALFHSIZE, XOUTPUT_HALFVSIZE);
+ XSetForeground( display, DefaultGC( display, screennumber), gridcolor2.pixel);
+ if (glyph!=NULL){
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX - CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX + CROSS_SIZE,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY);
+ XDrawLine( display, tmp_pixmap, DefaultGC( display, screennumber),
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY - CROSS_SIZE,
+ XOUTPUT_HALFHSIZE + glyph->metrics.advanceX,
+ XOUTPUT_HALFVSIZE - glyph->metrics.advanceY + CROSS_SIZE);
+ }
+ }
+
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+
+ /* Free the ligature-converted string */
+ free(ligtheString);
+
+ /* Check for errors */
+ if (glyph==NULL) {
+ sprintf(statusstring, "t1lib: Couldn't generate Bitmap,\n(%s)", T1_StrError(T1_errno));
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Prepare status message: */
+ sprintf(statusstring,"Elapsed time: %ld Microseconds\nLeftSideBearing: %d\nRightSideBearing: %d\nAscent: %d\nDescent: %d\nAdvanceX: %d\nAdvanceY: %d\nBits Per Pixel: %ld\nImage Size: %ld Bytes\nPostScript Fontname: %s\nT1_errno: %d\n",
+ time_diff(time_ptr_start,time_ptr_stop),
+ glyph->metrics.leftSideBearing,
+ glyph->metrics.rightSideBearing,
+ glyph->metrics.ascent,
+ glyph->metrics.descent,
+ glyph->metrics.advanceX,
+ glyph->metrics.advanceY,
+ glyph->bpp,
+ PAD(glyph->bpp*(glyph->metrics.rightSideBearing-glyph->metrics.leftSideBearing),XGLYPH_PAD)/8*(glyph->metrics.ascent-glyph->metrics.descent),
+ T1_GetFontName(FontID),
+ T1_errno);
+
+
+
+ /* Finally, set resources */
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, tmp_width + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNheight, tmp_height + DOUBLEMARGIN); i++;
+ XtSetArg( args[i], XtNbitmap, tmp_pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(Output ,args,i);
+
+}
+
+
+void fonttable( Widget fonttablebutton, XtPointer client_data, XtPointer call_data)
+{
+
+ int i, j;
+
+ Arg args[10];
+ static Pixmap pixmap=0;
+ int x, y;
+ int CellLeftMargin, CellTopMargin;
+ int ColAdvance, RowAdvance;
+ int width, height;
+ int FontID, DeviceResolution;
+ float Size, Extent, Slant;
+ float scale;
+
+ BBox fontbbox, tmpbbox;
+
+ sscanf( XawDialogGetValueString(dialogfontid),"%d", &FontID);
+ sscanf( XawDialogGetValueString(dialogsize),"%f", &Size);
+ sscanf( XawDialogGetValueString(dialogangle),"%f", &Angle);
+ sscanf( XawDialogGetValueString(dialogspace),"%ld", &Space);
+ sscanf( XawDialogGetValueString(dialogdevres),"%d", &DeviceResolution);
+ sscanf( XawDialogGetValueString(dialogstroke),"%d", &StrokeWidth);
+
+ if (FontID<0 || FontID>=T1_GetNoFonts()) {
+ sprintf(statusstring, "t1lib: FontID out of range!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* Ensure that font is loaded before any operation on the font */
+ if ( T1_CheckForFontID( FontID) < 1 ) {
+ T1_LoadFont( FontID);
+ }
+
+ if ( StrokeWidth == 0.0f ) {
+ T1_ClearStrokeFlag( FontID);
+ }
+ else {
+ T1_SetStrokeFlag( FontID);
+ if ( T1_SetStrokeWidth( FontID, StrokeWidth) != 0 ) {
+ sprintf( statusstring, "t1lib: Unable to setup strokewidth");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+ }
+
+ /* We don't obey rotation when displaying a fonttable */
+ matrixP=NULL;
+
+ if (DeviceResolution!=last_resolution[FontID]){
+ /* Delete all size dependent data for that font */
+ for ( i=0; i<T1_GetNoFonts(); i++)
+ T1_DeleteAllSizes( i);
+ /* Establish new device resolution */
+ T1_SetDeviceResolutions(DeviceResolution,DeviceResolution);
+ /* Store current resolution */
+ last_resolution[FontID]=DeviceResolution;
+ }
+ i=sscanf( XawDialogGetValueString(dialogencfile),"%s", (char *)EncodingFile);
+ if (i==EOF) EncodingFile[0]=0;
+ if (strcmp(EncodingFile,LastEncodingFile)!=0){ /* encoding has changed */
+ if (strcmp( EncodingFile, "")==0){ /* -> reset to internal encoding */
+ for (i=0; i<T1_GetNoFonts(); i++){
+ T1_DeleteAllSizes(i);
+ T1_ReencodeFont( i, NULL);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( NULL);
+ }
+ else{
+ for (i=0; i<MAXENCODINGS; ){
+ if ( encstruct[i].encfilename != NULL)
+ if (strcmp( encstruct[i].encfilename, EncodingFile)==0){
+ i++;
+ break;
+ }
+ i++;
+ }
+ if (i==MAXENCODINGS){ /* Encoding from that file was not
+ already loaded -> so load it */
+ i=0;
+ while (encstruct[i].encfilename != NULL)
+ i++;
+ encstruct[i].encoding=T1_LoadEncoding(EncodingFile);
+ encstruct[i].encfilename=(char *)malloc(strlen(EncodingFile)+1);
+ if (encstruct[i].encoding==NULL){
+ free( encstruct[i].encfilename);
+ encstruct[i].encfilename=NULL;
+ }
+ i++;
+ }
+ else
+ for (j=0; j<T1_GetNoFonts(); j++){
+ T1_DeleteAllSizes(j);
+ T1_ReencodeFont( j, encstruct[i-1].encoding);
+ }
+ /* Take care that newly loaded fonts are encoded according to current
+ encoding */
+ T1_SetDefaultEncoding( encstruct[i-1].encoding);
+ }
+ strcpy( LastEncodingFile, EncodingFile);
+ }
+ sscanf( XawDialogGetValueString(dialogslant),"%f", &Slant);
+ if (Slant!=lastSlant[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_SlantFont( FontID, Slant);
+ lastSlant[FontID]=Slant;
+ }
+ sscanf( XawDialogGetValueString(dialogextent),"%f", &Extent);
+ if (Extent!=lastExtent[FontID]){
+ /* Delete all size dependent data */
+ T1_DeleteAllSizes(FontID);
+ T1_LoadFont(FontID);
+ T1_ExtendFont( FontID, Extent);
+ lastExtent[FontID]=Extent;
+ }
+
+ if (Size<=0.0){
+ sprintf(statusstring, "t1lib: Size must be positive!");
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+ return;
+ }
+
+ /* We have read all parameters, now lets get font bbox in order to be
+ able to compute the cell-metrics */
+ T1_LoadFont( FontID);
+ fontbbox=T1_GetFontBBox( FontID);
+
+ /* we check for a valid fontbbox, otherwise we compute it ourselves */
+ if ( fontbbox.llx==0 &&
+ fontbbox.lly==0 &&
+ fontbbox.urx==0 &&
+ fontbbox.ury==0 ){
+ T1_PrintLog( "fonttable()", "Re-Computing FontBBox", T1LOG_DEBUG);
+ for (i=0; i<256; i++){
+ tmpbbox=T1_GetCharBBox( FontID, i);
+ if (tmpbbox.llx<fontbbox.llx)
+ fontbbox.llx=tmpbbox.llx;
+ if (tmpbbox.lly<fontbbox.lly)
+ fontbbox.lly=tmpbbox.lly;
+ if (tmpbbox.urx>fontbbox.urx)
+ fontbbox.urx=tmpbbox.urx;
+ if (tmpbbox.ury>fontbbox.ury)
+ fontbbox.ury=tmpbbox.ury;
+ }
+ }
+
+ /* We scale the font bounding box according to extent, slant and
+ device resolution. For the slant, we assume that the font contains
+ at least one character which reaches to the upper right corner and
+ the same for lower left corner. */
+ scale=DeviceResolution/72.0;
+ fontbbox.urx=fontbbox.urx+(int)((float)fontbbox.ury*Slant);
+ fontbbox.llx=fontbbox.llx+(int)((float)fontbbox.lly*Slant);
+ fontbbox.urx=(int)((float)fontbbox.urx*Extent);
+ fontbbox.llx=(int)((float)fontbbox.llx*Extent);
+ fontbbox.llx=(int)((float)fontbbox.llx*scale);
+ fontbbox.urx=(int)((float)fontbbox.urx*scale);
+ fontbbox.lly=(int)((float)fontbbox.lly*scale);
+ fontbbox.ury=(int)((float)fontbbox.ury*scale);
+
+ /* Left and top margin of the char-origins with respect upper left corner
+ of cell */
+ CellTopMargin=SIMPLEMARGIN + fontbbox.ury;
+ if (fontbbox.llx < 0){
+ CellLeftMargin= - fontbbox.llx;
+ }
+ else{
+ CellLeftMargin=0;
+ }
+ /* How much to advance in which direction when incrementing */
+ ColAdvance=CellLeftMargin + fontbbox.urx ;
+ RowAdvance=CellTopMargin - fontbbox.lly ;
+ /* Scale the charspace values */
+ CellTopMargin = (int) floor((double)CellTopMargin*Size/1000.0+0.5)+SIMPLEMARGIN;
+ CellLeftMargin = (int) floor((double)CellLeftMargin*Size/1000.0+0.5)+SIMPLEMARGIN;
+ ColAdvance = (int) floor((double)ColAdvance*Size/1000.0+0.5)+DOUBLEMARGIN;
+ RowAdvance = (int) floor((double)RowAdvance*Size/1000.0+0.5)+DOUBLEMARGIN;
+ /* Overall width and height of map */
+ width=1+(16*ColAdvance);
+ height=1+(16*RowAdvance);
+
+ /* We clip to a window as large as the screen in this function */
+ if (width > 1024)
+ width=WidthOfScreen(screen);
+ if (height > 768)
+ height=HeightOfScreen(screen);
+
+ /* Create pixmap of appropriate size, */
+ if (pixmap!=0)
+ XFreePixmap( display, pixmap);
+ pixmap=XCreatePixmap( display,
+ XtWindow(TopLevel),
+ width,
+ height,
+ depth
+ );
+ /* We always use opaque mode */
+ XSetForeground( display, DefaultGC( display, screennumber), bg);
+ XFillRectangle( display, pixmap, DefaultGC( display, screennumber),
+ 0, 0, width, height);
+ XSetForeground( display, DefaultGC( display, screennumber), fg);
+ XSetBackground( display, DefaultGC( display, screennumber), bg);
+
+ /* Draw cell grid: */
+ for (j=0; j<17; j++){
+ XDrawLine( display, pixmap, DefaultGC( display, screennumber),
+ j*ColAdvance, 0,
+ j*ColAdvance, height);
+ }
+ for (j=0; j<17; j++){
+ XDrawLine( display, pixmap, DefaultGC( display, screennumber),
+ 0, j*RowAdvance,
+ width, j*RowAdvance);
+ }
+
+ /* Reset T1_errno: */
+ T1_errno=0;
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ /* Draw characters into pixmap */
+ for ( i=0; i<16; ) { /* row-loop */
+ for ( j=0; j<16; j++) {
+ x=1+(j*ColAdvance)+CellLeftMargin;
+ y=1+CellTopMargin+(i*RowAdvance);
+ glyph=T1_AASetCharX( pixmap, DefaultGC( display, screennumber), 1,
+ x, y, FontID, (char) (i*16+j), Size, matrixP);
+ if (x>width) {
+ sprintf( msg_buf, "Clipping row %d horizontally at column %d", i, j);
+ T1_PrintLog( "fonttable()", msg_buf, T1LOG_STATISTIC);
+ break;
+ }
+
+ }
+ if (y>height) {
+ sprintf( msg_buf, "Clipping vertically at row %d", i);
+ T1_PrintLog( "fonttable()", msg_buf, T1LOG_STATISTIC);
+ break;
+ }
+ i++;
+ }
+
+ /* If font was not loadable */
+ if (T1_GetFontName( FontID)==NULL)
+ sprintf(statusstring, "t1lib: Can't get font name, T1_errno=%d!", T1_errno);
+ else
+ sprintf(statusstring,"Font %s, final T1_errno = %d\n %s",
+ T1_GetFontName( FontID), T1_errno, T1_StrError(T1_errno));
+
+ /* Finally, set resources */
+ i=0;
+ XtSetArg(args[i], XtNbitmap,NULL); i++;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, XtUnspecifiedPixmap); i++;
+ XtSetArg(args[i], XtNlabel, statusstring); i++;
+ XtSetValues(labelstatus,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width); i++;
+ XtSetArg( args[i], XtNheight, height); i++;
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(OutputWindow ,args,i);
+
+ i=0;
+ XtSetArg( args[i], XtNwidth, width); i++;
+ XtSetArg( args[i], XtNheight, height); i++;
+ XtSetArg( args[i], XtNbitmap, pixmap); i++;
+ XtSetArg( args[i], XtNresize, 1);i++;
+ XtSetArg( args[i], XtNinternalWidth, 0); i++;
+ XtSetArg( args[i], XtNinternalHeight, 0); i++;
+ XtSetArg( args[i], XtNbackground, outbg); i++;
+ XtSetValues(Output ,args,i);
+
+
+}
+
+
+
+/* This function shows the About-message */
+void showabout( Widget aboutbutton, XtPointer client_data, XtPointer call_data)
+{
+ int i;
+ Arg args[10];
+ Pixmap about=0;
+ XGCValues xgcvalues;
+ GC gc;
+ static char ident[80]="";
+
+#define T1GCMASK GCForeground | GCBackground
+
+ if (about==0) {
+ about=XCreatePixmap( display, XtWindow(TopLevel),
+ 380, MESSAGEBOXHEIGHT, depth);
+ }
+ gc=DefaultGC( display, screennumber);
+
+ XGetGCValues( display, gc, T1GCMASK, &xgcvalues);
+ fg=xgcvalues.foreground;
+ bg=xgcvalues.background;
+
+ XSetForeground( display, gc, white.pixel);
+ XFillRectangle( display, about, gc, 0, 0, 380, MESSAGEBOXHEIGHT);
+ XSetForeground( display, gc, black.pixel);
+ XSetBackground( display, gc, white.pixel);
+
+ /* Set antialiasing level */
+ T1_AASetLevel( aalevel);
+ sprintf( ident, "This is xglyph, T1Lib Version %s", T1_GetLibIdent());
+ glyph=T1_AASetStringX( about, gc, 1, 10, 30, /* x_dest, y_dest */
+ 0, ident,
+ 0, 0.0, T1_UNDERLINE | T1_KERNING, 20.0, NULL);
+ glyph=T1_AASetStringX( about, gc, 1, 10, 60, /* x_dest, y_dest */
+ 0, "xglyph is an interactive tool for illustrating some",
+ 0, 0.0, T1_KERNING, 15.0, NULL);
+ glyph=T1_AASetStringX( about, gc, 1, 10, 80, /* x_dest, y_dest */
+ 0, "of the T1Lib features. T1Lib is distributed under",
+ 0, 0.0, T1_KERNING, 15.0, NULL);
+ glyph=T1_AASetStringX( about, gc, 1, 10, 100, /* x_dest, y_dest */
+ 0, "the GNU General Public Library License (LGPL).",
+ 0, 0.0, T1_KERNING, 15.0, NULL);
+ glyph=T1_AASetStringX( about, gc, 1, 10, 133, /* x_dest, y_dest */
+ 0, "Enjoy it!",
+ 0, 0.0, T1_KERNING, 15.0, NULL);
+ XSetForeground( display, gc, fg);
+ XSetBackground( display, gc, bg);
+
+ i=0;
+ XtSetArg(args[i], XtNwidth,380); i++;
+ XtSetArg(args[i], XtNheight, MESSAGEBOXHEIGHT); i++;
+ XtSetArg(args[i], XtNbackgroundPixmap, about); i++;
+ XtSetArg(args[i], XtNlabel, ""); i++;
+ XtSetValues(labelstatus,args,i);
+}
+
+
+
+/* This function returns a time difference in Microseconds, provided that
+ the time difference is not greater than approximately 35 minutes. */
+long time_diff(struct timeval *time_ptr_start, struct timeval *time_ptr_stop)
+{
+ return((time_ptr_stop->tv_sec -
+ time_ptr_start->tv_sec)*1000000
+ +(time_ptr_stop->tv_usec -
+ time_ptr_start->tv_usec));
+}
+
+
+/* T1_ComputeAAColorsX(): Compute the antialiasing colors in dependency
+ of foreground and background */
+int ComputeAAColorsX( unsigned long fg, unsigned long bg, int nolevels)
+{
+
+ static unsigned long last_fg;
+ static unsigned long last_bg;
+ unsigned long delta_red, delta_green, delta_blue;
+ int i;
+ int nocolors=0;
+
+
+ aacolors[0].pixel=bg;
+ aacolors[nolevels-1].pixel=fg;
+
+ if ((fg==last_fg)&&(bg==last_bg))
+ return(nocolors);
+
+ /* Get RGB values for fore- and background */
+ XQueryColor( display, DefaultColormap(display,screennumber), &aacolors[0]);
+ XQueryColor( display, DefaultColormap(display,screennumber), &aacolors[nolevels-1]);
+ delta_red = (aacolors[nolevels-1].red - aacolors[0].red)/(nolevels-1);
+ delta_green = (aacolors[nolevels-1].green - aacolors[0].green)/(nolevels-1);
+ delta_blue = (aacolors[nolevels-1].blue - aacolors[0].blue)/(nolevels-1);
+ aapixels[0]=aacolors[0].pixel;
+ aapixels[nolevels-1]=aacolors[nolevels-1].pixel;
+
+ for (i=1; i<nolevels-1; i++){
+ aacolors[i].red = aacolors[i-1].red + delta_red;
+ aacolors[i].green = aacolors[i-1].green + delta_green;
+ aacolors[i].blue = aacolors[i-1].blue + delta_blue;
+ /* Allocate color in current palette */
+ if (XAllocColor( display, DefaultColormap(display,screennumber),
+ &aacolors[i])!=0){
+ aapixels[i]=aacolors[i].pixel;
+ nocolors++;
+ }
+
+ }
+
+ return(nocolors);
+
+}
+
+
+
+void printusage( int max)
+{
+ int i=0;
+
+ if (max==0)
+ max=100000; /* should be large enough :) */
+
+ fprintf(stdout, "xglyph -- t1lib Version %s\n\n", T1_GetLibIdent());
+ fprintf(stdout, "Usage: xglyph [options] [fontfile1 [fontfile2 [...]]]\n\n");
+ fprintf(stdout, "where options is one of:\n");
+ while ( xglyphoptions[i]!=NULL && i<max){
+ if (i==3) /* We print the possible values here. */
+ fprintf( stdout, "\t\t%s {8,16,32}\n", xglyphoptions[i++]);
+ else
+ fprintf( stdout, "\t\t%s\n", xglyphoptions[i++]);
+ }
+
+ fprintf(stdout, "For additional information see the t1lib manual!\n");
+ return;
+}
+
+
+int CheckTransform( void)
+{
+
+ int err;
+ float x1, x2, x3, x4;
+
+ err=sscanf( XawDialogGetValueString(dialogtmatrix), "%f,%f,%f,%f",
+ &x1, &x2, &x3, &x4 );
+ if ( (x1 == (float) 1.0) &&
+ (x2 == (float) 0.0) &&
+ (x3 == (float) 0.0) &&
+ (x4 == (float) 1.0) ){
+ matrix.cxx=x1;
+ matrix.cyx=x2;
+ matrix.cxy=x3;
+ matrix.cyy=x4;
+ return( 0);
+ }
+ else{
+ matrix.cxx=x1;
+ matrix.cyx=x2;
+ matrix.cxy=x3;
+ matrix.cyy=x4;
+ return( 1);
+ }
+}
+